基于发件人收件人的 Postfix 中继

基于发件人收件人的 Postfix 中继

当必须在 Postfix 中实现这种规则集时,最佳做法是什么?

  • domain1.com从本地发送至domain2.com的电子邮件example.comexample1.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和操作,否则用关键字替换它们就足够了。smtp2host1.example.comhost2.example.comsmtp

如果您需要针对这些服务器进行身份验证,则需要在文件中定义smtp1以下内容:smtp2master.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

相关内容