对于未经身份验证的用户,如何禁用 Postfix 中的本地中继?

对于未经身份验证的用户,如何禁用 Postfix 中的本地中继?

我想阻止我的 php 脚本在没有身份验证的情况下通过 localhost 25 中的 MTA 发送邮件。

我被告知服务器默认信任自身,这就是为什么在这种情况下我不需要身份验证。所以我必须禁用“未经身份验证的本地中继”。我如何在 postfix 中实现这一点?

答案1

在您的 Postfix 配置中,您可以使用设置smtpd_recipient_restrictions来决定谁可以使用您的服务器作为中继。

例如,在我的配置中它看起来像这样:

smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination

这意味着我网络中的每个人(另请参阅设置mynetworks)和所有经过身份验证的人都可以发送电子邮件。只需删除permit_mynetworks,就没有人能够再在未经身份验证的情况下发送电子邮件。请注意,这可能会破坏当前依赖于能够在未经身份验证的情况下向您发送电子邮件的其他程序,而不仅仅是您的 PHP 应用程序。

答案2

您确定您的脚本通过 TCP 连接将电子邮件发送到本地主机吗?这种情况并不常见,本地电子邮件通常会直接注入到 postfix maildrop 队列中。

答案3

正如 Alex 所说,来自本地程序的电子邮件通常会被直接转储到队列中,从而绕过您为阻止这种情况而部署的所有网络配置。

控制此本地行为的设置是:授权提交用户

在您的 main.cf postfix 配置中,您可能有以下行:

authorized_submit_users = static:anyone

它可能没有明确设置,但以上是默认设置,因此本地主机上的任何命名用户都可以直接提交到队列。要完全阻止提交队列,只需在 main.cf 中定义一个空列表:

authorized_submit_users =

或者,我喜欢执行以下操作以仅允许 root 在本地主机上提交:

authorized_submit_users = root

参考: http://www.postfix.org/postconf.5.html

相关内容