Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postfix mta 如何将Postfix配置为仅中继来自特定域的电子邮件?_Postfix Mta_Self Hosting - Fatal编程技术网

Postfix mta 如何将Postfix配置为仅中继来自特定域的电子邮件?

Postfix mta 如何将Postfix配置为仅中继来自特定域的电子邮件?,postfix-mta,self-hosting,Postfix Mta,Self Hosting,我已经回答了我自己的问题,稍后可能会更新此问题,以反映我的出发点/我采取了哪些步骤来获得解决方案,但我想我会问一个我从一开始就提出的问题,结果花了我不合理的数小时研究和反复试验才能得出。请进行任何编辑,或者提出您自己的postfix/main.cf解决方案,因为我还有很多东西要学习 问题简介 因此,我在“example.com”的服务器上自行托管了一些东西,并将Postfix设置为我的邮件传输代理(MTA)。在我的邮件服务器上,我有一个虚拟的_别名设置来接收特定“电子邮件”的电子邮件_users

我已经回答了我自己的问题,稍后可能会更新此问题,以反映我的出发点/我采取了哪些步骤来获得解决方案,但我想我会问一个我从一开始就提出的问题,结果花了我不合理的数小时研究和反复试验才能得出。请进行任何编辑,或者提出您自己的postfix/main.cf解决方案,因为我还有很多东西要学习

问题简介

因此,我在“example.com”的服务器上自行托管了一些东西,并将Postfix设置为我的邮件传输代理(MTA)。在我的邮件服务器上,我有一个虚拟的_别名设置来接收特定“电子邮件”的电子邮件_users@example.com“到服务器上的我的用户名。我的母校已启用电子邮件转发功能,以便将电子邮件发送到“student@college.edu“,或”alum@alum.college.edu“已转发至”电子邮件_users@example.com“并在我的用户收件箱中收到。基本上所有电子邮件(到my.edu或my.com)都会转到/home/user/Maildir/new

在使用MUTT(我的首选MUA)编写电子邮件时,我偶尔会将我的电子邮件“从”字段更改为“将”student@college.edu", "alumnus@alum.college.edu,或默认情况下使用启用的“答复”字段进行答复。我的邮件服务器出站到其他服务器所需的行为如下所示:

  • 在带有“FROM:*@example.com”的电子邮件中,通过SMTP将电子邮件通过本地Postfix MTA直接发送到internet。(*代表wildchar)
  • 在带有“发件人”的电子邮件上:student@college.edu“,通过本地后缀MTA通过SMTP路由电子邮件,并将其中继到另一个具有身份验证的SMTP服务器,以便另一个服务器在不发生任何软故障或反弹的情况下进行传递(在本例中为学院SMTP服务器)
  • 需要明确的是,当用户希望从以下位置发送邮件时,这是一个Postfix配置问题:本地Postfix MTA->外部SMTP服务器->通过internet的收件人

    这些问题/how-to通常省略了一个明确的答案,不是问同样的问题,而是需要一个更好的提问标题,或者是how-to只开始回答此设置的开始:


    当然,这是很有帮助的,但是如果您是Postfix新手,那么就很冗长,很难及时弄清楚。例如,您可能希望在SMTP中继/访问控制下找到它,但我缺少的主要方面是在中的常规配置下。

    为了将电子邮件中继到另一个SMTP服务器,而不进行默认情况下始终中继,请使用配置文件(/etc/postfix/main.cf)中的发件人依赖的中继主机映射。如果你正在使用relayhost,不要

    注意:smtp用于发送邮件,smtpd是接收邮件的守护程序

    /etc/postfix/main.cf

     smtp_use_tls = yes
     smtp_sender_dependent_authentication = yes
     sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
     smtp_sasl_auth_enable = yes
     smtp_sasl_security_options = noanonymous
     smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
     smtp_always_send_ehlo = yes
     smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
    
    现在在/etc/postfix/sender_relay中,您必须指定要发送到感兴趣的外部SMTP服务器的电子邮件地址:

    注意:括号符号“[]”告诉Postfix不要使用MX记录。通常端口号是587

    /etc/postfix/sender\u中继

    student@college.edu         [smtp.server.edu]:port
    alumnus@alum.college.edu    [alum.smtpserver.edu]:port
    
    现在,当使用其中一个地址发送电子邮件时,它会中继到这些SMTP服务器以代表您发送。最后要做的是向SASL授权

    注意:sender_relay中指定的SMTP服务器必须与sasl_password中的服务器匹配,并且sasl_password中的用户名:密码对应与sender_relay中发送的用户及其相应的密码对匹配。否则可能会导致/var/log/mail.log中的pam_authenticate()错误

    /etc/postfix/sasl\u passwd

    [smtp.server.edu]:port      student:password
    [alum.smtpserver.edu]:port  alumnus:password
    
    由于您在此处输入的是纯文本敏感信息,因此,如果您以前没有更新过所有权权限,请确保:

    sudo chmod 600 /etc/postfix/sasl_passwd
    
    最后一件事是使用postmap更新这些文件,并使用新配置重新加载后缀:

    sudo postmap sasl_passwd
    sudo postmap sender_relay
    sudo postfix reload