我理解将 master.cf 中的以下行更改为“丢弃”而不是“退回”将阻止未送达通知,但我想知道是否可以更进一步,仅禁用来自已通过发件人访问列表列入黑名单的电子邮件的未送达通知,该列表通过 main.cf 中的 smtpd_recipient_restrictions 调用。
bounce unix - - n - 0 bounce
答案1
这个解决方案可能来自如何配置 Postfix 以永不发送 NDR 响应?。 它说:
强烈建议您不要在任何邮件服务器上禁用 NDR 响应。但是,如果您愿意,可以在 Postfix 中禁用 NDR 响应。
让我解释一下。你的冲动未送达通知(NDN)又名退回邮件可能出于避免发送的良好意图背向散射。不过,如果您的用户向有问题的电子邮件地址发送邮件,您仍需要能够通知他们。为此,您需要将 SMTP 服务器用户分为两类,并区别对待:
本地用户应该接收NDN否则,即使他们输入了错误的地址、地址已更改、邮箱已满等,他们也会认为他们的邮件已收到。本地用户可能存在于同一台服务器上,或者他们可能有权使用此服务器作为中继。
外部用户尝试向此服务器上的用户发送邮件不应接收 NDN 消息。相反,您应该使用连接阶段拒绝如果收件人不存在,则发件人的信封地址未通过防伪造检查(SPF、DKIM、DMARC)或发件人在阻止列表中(信封地址的域或邮件服务器的 IP 地址)。发送 MTA 有责任通知用户在 SMTP 连接期间给出的此错误代码和消息,其行为应与 #1 中所述完全一致。(垃圾邮件机器人不会关心这一点。)
现在,Postfix 的工作方式就是这样,如果你只正确配置了它,即它不应该是一个开放中继。如果您没有弄乱这些默认配置参数(来自Postfix 基本配置):
默认情况下,Postfix 会将来自授权网络块中的客户端的邮件转发到任何目的地。授权网络通过配置参数定义
mynetworks
。默认情况下,Postfix 只会将来自陌生人(授权网络之外的客户端)的邮件转发到授权的远程目的地。授权的远程目的地由配置参数定义
relay_domains
。默认是授权参数列出的所有域(以及域的子域)mydestination
。
您需要手动配置的是发件人访问的进一步限制,因为默认smtpd_sender_restrictions
是空的我个人喜欢结合所有限制(包括发件人和smtpd_helo_restrictions
HELO 限制)成为smtpd_recipient_restrictions
。它们从那时起仍然有效,但是检查是在所有三个(HELO
、MAIL FROM
和RCPT TO
)命令完全交换之后执行的,如果出现问题,可以更容易地从日志中调试。
以下是您可以执行的一些基本检查的示例配置。(请注意注释。)
smtpd_recipient_restrictions =
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_unauth_pipelining,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
# Personal tables, only use if you have added these files.
check_recipient_access hash:/etc/postfix/access/denied_recipients,
check_sender_access hash:/etc/postfix/access/sender_access,
check_client_access cidr:/etc/postfix/access/client_access.cidr,
# SPF anti-forgery checks. Requires external SPF service.
check_policy_service unix:private/policy-spf,
# To minimize unnecessary use, add DNSBLs AFTER basic checks, e.g.
reject_rbl_client sbl-xbl.spamhaus.org,
permit