该后缀手册页说,你可以指定一个动作unverified_recipient_tempfail_action。但我无法指定permit:
fatal: bad configuration: unverified_recipient_tempfail_action = permit
Run Code Online (Sandbox Code Playgroud)
所以我唯一的选择是拒绝、推迟或 defer_if_permit?
我对我的后备 MX 服务器使用收件人地址验证,它不应该延迟传入的邮件(因为如果我希望传入的邮件在主服务器宕机的情况下被延迟,我根本就没有备份 MX,所以消息是在传入的 SMTP 服务器延迟)。
但是现在,当验证缓存已过期或缓存还没有相关用户的条目时,它将推迟请求,从而违背备份 MX 服务器的目的。
那么我如何做到这一点,以便当主服务器宕机时,它会接受所有邮件?
更新:
我应该补充一点,该邮件服务器还充当 Plesk(控制面板)管理的 Web 托管服务器的传入邮件服务器。Plesk 没有垃圾邮件过滤(除了额外费用),所以我设置了另一个虚拟机来为该主机执行传入邮件和垃圾邮件过滤。我使用收件人地址验证来避免邮件队列被退回邮件填满(并在用户不存在时正确拒绝请求,并且稍后不接受并退回,避免反向散射邮件)。
但我也想使用该传入邮件服务器作为某些域的备份 MX(使用relay传输以避免传递循环)。我想对于这些域,我不需要reject_unverified_recipient。插入permit_mx_backup到smtpd_recipient_restrictions(之前reject_unverified_recipient)就足够了吗?
另一方面,我仍然认为在主主机未关闭期间使用收件人地址验证是有意义的:这可以避免反向散射邮件(由于向不存在的用户发送垃圾邮件,邮件被退回到(假)发件人)。
在任何情况下,对于传入邮件服务器的任何一种使用,都不可能创建收件人映射。一个原因是用户在 Plesk 机器上动态创建电子邮件地址,另一个原因是我们备份 MX 的域不在我们的控制之下,所以我们不知道有哪些用户。
将 unverified_recipient_tempfail_action 设置为 'permit' 在功能上与首先不执行未经验证的收件人检查相同,因此您只想从 smtpd_recipient_restrictions 中删除reject_unverified_recipient。
一种选择是停止对您的备份 MX 使用地址验证,而是填充您的“relay_domains”和“relay_recipient_maps”,以便您的备份 MX 拥有主服务器上所有有效地址的完整列表。从本质上讲,地址验证正在尝试动态地为您执行此操作,不利的一面是您所描述的确切情况。它不能知道它不知道的东西,所以它推迟了邮件。完整的 relay_recipient_maps 消除了这种需求,并将提供您正在寻找的功能。
备份 MX 服务器被严重滥用并导致如此头痛,以至于我选择了 postfix 外部的解决方案 - 特别是我编写了轻量级守护进程,它位于我的辅助 MX 上并主动监控主 MX 服务器 - 如果它可以与主 MX 然后确保端口 25 在其主机防火墙上被阻止(因此“关闭”辅助端口)并且仅在检测到主端口不可用时才打开该端口。我还确保他们有relay_recipient_maps 设置,以便他们在需要实际打开时功能齐全。
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |