当必须在 Postfix 中实现这种规则集时,最佳做法是什么?
domain1.com
从本地发送至domain2.com
的电子邮件example.com
应example1.com
转发至smtp.external.com
。- 电子邮件已发送给其他所有人
@example.com
,并且example1.com
应在本地中继。
我知道有一种方法可以使用进行中继过滤收件人地址transport_maps
,但我不知道如何根据发件人地址进行过滤。
答案1
有一种方法(虽然我认为不太干净),将其与参数匹配header_checks
。例如:
header_checks = pcre:/etc/postfix/my_relays
现在位于/etc/postfix/my_relays
:
/^From:.*asender\@domain1\.com/ smtp1:[host1.example.com]
/^From:.*anothersender\@domain2\.com/ smtp2:[host2.example.com]
仅当您需要通过密码在或服务器上进行身份验证时才需要smtp1
和操作,否则用关键字替换它们就足够了。smtp2
host1.example.com
host2.example.com
smtp
如果您需要针对这些服务器进行身份验证,则需要在文件中定义smtp1
以下内容:smtp2
master.cf
smtp1 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
最后一步,您的smtp[12].relay
文件必须包含连接到这些主机的身份验证参数(我备注只有在您需要身份验证时才需要这样做)。
[hostX.example.com] userX:passwordX