Postfix - 有没有办法拒绝无效的身份验证(即使对于 mynetworks)?

Postfix - 有没有办法拒绝无效的身份验证(即使对于 mynetworks)?

我得到了一个有效的 postfix/dovecot 配置,并运行以下收件人拒绝规则:

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject

这会按预期工作(授权经过身份验证的用户或来自 mynetworks 的用户,拒绝其他用户)。但是,如果来自 mynetworks 的用户身份验证失败,则不会拒绝他。

有没有这样的规则拒绝无效的 sasl_auth? 仅当用户输入了无效的身份验证时才会拒绝用户,但允许未输入身份验证的用户访问。

否则,除了限制规则之外还有其他方法来实现这种行为(SASL 选项、自定义策略)吗?

答案1

由于您只明确允许 SASL 身份验证的用户,如果用户未经身份验证,则检查下一个限制 - 即恰好匹配的 mynetworks。

因此,完全由于您的规则排序,未经身份验证的客户端被允许来自您信任的网络。

相反,请考虑像这样设置:

smtpd_client_restrictions = permit_sasl_authenticated, reject
smtpd_recipient_restrictions = permit_mynetworks, reject

请注意,当您将其应用到外部端口 25 smtpd 侦听器时,这将导致您永远无法收到互联网邮件。

答案2

我认为这个想法可能是运行您的 MTA,在端口 25 上接收来自其他对等点(其他邮件服务器)的邮件。您在端口 587 上运行另一个 smtpd 进程来接收来自经过身份验证的用户的邮件。

这样你就可以制定如下标准规则:

smtpd_recipient_restrictions =
  permit_mynetworks
  reject_unauth_destination

在你的 main.cf 中

另一方面,您可以在 master.cf 中按以下方式配置端口 587:

submission inet  n       -       -       -       -       smtpd
    -o smtpd_enforce_tls=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

更新

回复评论。这有两个作用。

首先,如果它在端口 25 上接收连接,它将只接受来自 mynetworks 的连接,它永远不会接受除了可以本地传送的邮件之外的邮件。

其次,如果它在端口 587 上接收连接,它将只接受来自经过身份验证的客户端的邮件。

相关内容