我希望设置 Postfix 以根据目标主机名使用外部中继,即:
我所说的目标主机名是从 MX 记录中获得的主机名。如果接收域有 MX 记录microsoft-com.mail.protection.outlook.com
,则使用不同的中继
我知道可以根据发件人地址(使用sender_dependent_relayhost_maps
)指定中继,但在我的情况下这是不切实际的。
目标是为挑剔的目标主机使用不同的中继:可能是 Mandrill,或另一个 Postfix 安装。
小智 6
您可以设置传输映射来选择性地选择具有@outlook.com
目标地址的邮件并通过some_smtp.example.com
如下所示的方式中继它们。
将下面的条目添加到 /etc/postfix/transport
outlook.com smtp:[some_smtp.example.com]
Run Code Online (Sandbox Code Playgroud)
将下面的条目添加到 /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport
Run Code Online (Sandbox Code Playgroud)
执行以下命令后重启 postfix
sudo postmap /etc/postfix/transport
Run Code Online (Sandbox Code Playgroud)
Arul 的答案非常适合基于收件人域的传输。但是,因为您指的是 MX 记录主机名而不是收件人域,答案不适用。
一种解决方案是使用check_recipient_mx_access
. 来自官方文档的片段
check_recipient_mx_access类型:表
在指定的 access(5) 数据库中搜索RCPT TO 域的 MX 主机,并执行相应的操作。注意:出于安全原因,不允许出现“OK”的结果。相反,使用 DUNNO 以从黑名单中排除特定主机。此功能在 Postfix 2.1 及更高版本中可用。
对于您的情况,只需放在check_recipient_mx_access hash:/etc/postfix/finickydestination
适当的位置即可smtpd_*_restriction
。在该文件中放置主机名
# /etc/postfix/finickydestination
.outlook.com FILTER smtp:[some_smtp.example.com]
Run Code Online (Sandbox Code Playgroud)
不要忘记 postmap 文件并执行 postfix reload。
参考):
归档时间: |
|
查看次数: |
8572 次 |
最近记录: |