Postfix unverified_recipient_tempfail_action = permit

Postfix unverified_recipient_tempfail_action = permit

postfix 手册页说您可以为 指定一个操作unverified_recipient_tempfail_action。但我无法指定permit

fatal: bad configuration: unverified_recipient_tempfail_action = permit

所以我唯一的选择是拒绝、推迟或 defer_if_permit?

我对后备 MX 服务器使用收件人地址验证,该服务器不应推迟接收邮件(因为如果我想在主服务器发生故障时推迟接收邮件,则我根本没有备份 MX,因此邮件会在传入 SMTP 服务器上被推迟)。

但是现在,当验证缓存已过期或缓存中尚未有该用户的条目时,它将推迟请求,从而违背了备份 MX 服务器的目的。

那么,我该如何做才能使它在主服务器瘫痪时仍能接受所有邮件呢?

更新:

我应该补充一点,该邮件服务器还充当由 Plesk(控制面板)管理的 Web 托管服务器的传入邮件服务器。Plesk 没有垃圾邮件过滤功能(除非额外付费),因此我设置了另一台虚拟机来为该主机执行传入邮件和垃圾邮件过滤。我使用收件人地址验证来避免邮件队列被退回邮件填满(并在用户不存在时正确拒绝请求,而不是稍后接受和退回,从而避免反向散射邮件)。

但我还想将该传入邮件服务器用作某些域的备份 MX(使用传输relay来避免传递循环)。我想对于这些域,我不需要reject_unverified_recipient。插入permit_mx_backupsmtpd_recipient_restrictions之前reject_unverified_recipient)是否足够?

另一方面,我仍然认为在主机未关闭期间使用收件人地址验证是有意义的:这可以避免反向散射邮件(由于向不存在的用户发送垃圾邮件而导致邮件退回到(虚假)发件人)。

无论如何,对于任何一种传入邮件服务器的使用,都无法创建收件人映射。一个原因是用户在 Plesk 机器上动态创建电子邮件地址,另一个原因是我们备份 MX 的域不在我们的控制之下,因此我们不知道有哪些用户。

答案1

将 unverified_recipient_tempfail_action 设置为“permit”在功能上与首先不执行未经验证的收件人检查相同,因此您只需从 smtpd_recipient_restrictions 中删除 rejection_unverified_recipient 即可。

一种选择是停止对备份 MX 使用地址验证,而是填充“relay_domains”和“relay_recipient_maps”,以便备份 MX 拥有主服务器上所有有效地址的完整列表。本质上,地址验证正在尝试动态地为您执行此操作,其缺点就是您描述的确切情况。它无法知道它不知道的内容,因此它会推迟邮件。完整的relay_recipient_maps 消除了这种需要,并将提供您正在寻找的功能。

备份 MX 服务器被滥用得如此严重,造成了如此多的麻烦,以至于我选择了 Postfix 之外的解决方案 - 具体来说,我编写了轻量级守护程序,它们位于我的辅助 MX 上并主动监控主 MX 服务器 - 如果它可以与主 MX 通信,那么它会确保主机防火墙上的端口 25 被阻止(从而“关闭”辅助 MX),并且只有在检测到主 MX 不可用时才打开该端口。我还确保它们已设置了 Relay_recipient_maps,以便在需要实际打开时它们可以完全正常运行。

相关内容