使用 Postfix 中继本地邮件

使用 Postfix 中继本地邮件

现状

我使用 SpamExperts 进行电子邮件归档。为了归档邮件,邮件必须经过 SpamExpert 的智能主机才能到达最终目的地。

如果我想存档所有发出的邮件,我可以使用sender_dependent_relayhost_maps。现在我的相关部分main.cf是:

sender_dependent_relayhost_maps = hash:/etc/postfix/securitybox_sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/securitybox_passwd
smtp_sasl_security_options =
smtp_sender_dependent_authentication = yes

现在的问题是,如果发送者和接收者在同一台机器上,Postfix 将使用本地传输,并且消息将不会被中继,因此不会被存档。

我的问题

如何确保从一个特定本地域发送到任何本地域(包括其自身)的所有消息在传递到最终目的地之前都通过智能主机进行中继?

答案1

无论使用什么软件,通过智能主机路由内部邮件在技术上听起来都不可行,而我能想到的唯一替代方法是使用某种密件抄送方式,自动将所有内部发送的邮件复制到外部地址。

我在 SpamExperts 知识库中找到了这篇文章,它处理了同样的问题(尽管它与 Exchange 有关):

Microsoft Exchange 内部电子邮件归档

我要在这里引用它:

当使用 SpamExperts 进行入站和出站电子邮件过滤(使用智能主机设置)时,所有外部 SMTP 通信将自动存档为启用存档的域的一部分。但是,Microsoft Exchange 不会通过传出智能主机中继内部通信,因此默认情况下不会存档内部通信。

但是,归档内部通信很简单,可以使用 Exchange 日志系统完成。日志系统允许 Exchange 自动将所有内部通信的副本发送到外部电子邮件地址。只要您已使用 SpamExperts 设置用于归档的外部电子邮件地址,SpamExperts 入站过滤器就会简单地处理该消息并将其归档。您应该将日志报告发送到的目标地址配置为白名单黑洞收件人。这意味着对于收到的消息,不会进行过滤或传递到外部服务器。SpamExperts 支持可以帮助您实现这一点(或者您可以直接通过我们本地云产品上的软件 API 来实现)。

您的 Microsoft Exchange 管理员将能够为您激活日志功能,以确保每封电子邮件的副本自动发送给存档的黑洞收件人。

使用 Postfixsender_bcc_mapsrecipient_bcc_maps选项可以实现类似的效果。您可以看看这个以获得提示:

如何配置 Postfix 以保留通过它发送的所有电子邮件的副本?

答案2

据我所知,这是不可能的。Postfix 无法知道该消息是“传入”消息还是“传出”消息,它只是看到该消息并尝试将其发送到目的地。如果您设法重定向该消息(例如使用传输图),那么 Postfix 将与另一个 MX 产生无限循环。没有人希望这样,这就是为什么这是不可能的。它可能可以使用自定义的 amavis 脚本来实现您想要的效果,但这是一个相当肮脏的解决方案,可能并不总是按预期工作。

相关内容