在与垃圾邮件的日常战斗中,有几次我很想从疯狂的 Internet 连接的客户端中严格执行 DNS 要求。
详细地说,我会在我的smtpd_client_restrictions部分中添加reject_unknown_reverse_client_hostname设置,如下所示:
smtpd_client_restrictions =
permit_sasl_authenticated
check_client_access hash:/etc/postfix/access
check_policy_service inet:127.0.0.1:4466
reject_unknown_reverse_client_hostname
reject_unauth_pipelining
Run Code Online (Sandbox Code Playgroud)
无论如何,我注意到当遇到这样的限制时,Postfix 的行为非常“软”,因为默认值为unknown_client_reject_code
450。因此,客户端被邀请继续重试。
在调查 550 响应时,我在Postfix 官方文档中遇到了以下声明:
我绝对不是整个RFC 5321的专家,但作为一个足够了解RFC 821 的人,我真的不明白为什么,550 响应而不是 450 会影响我的 Postfix 实例在最大 SMTP 级别(破坏 RFC 合规性),特别是考虑到在出现临时错误的情况下,无论显式设置如何,Postfix 都会坚持使用 450。
那么,有人可以帮助我了解这种替换有什么问题吗?
PS:与此同时,我以“宽松”的限制结束:
smtpd_client_restrictions =
permit_sasl_authenticated
check_client_access hash:/etc/postfix/access
check_policy_service inet:127.0.0.1:4466
warn_if_reject reject_unknown_reverse_client_hostname
reject_non_fqdn_helo_hostname
reject_unauth_pipelining
reject_invalid_helo_hostname
Run Code Online (Sandbox Code Playgroud)
Jen*_*y D 12
第一个也是最明显的答案是,在出现临时 DNS 错误的情况下,临时退回将允许发件人的邮件服务器再次尝试,直到 DNS 错误得到修复。在这种情况下,永久退回将阻止实际的火腿邮件到达您的手中。
第二个答案是,大量垃圾邮件是通过僵尸网络箱发送的,这些僵尸网络箱没有任何形式的实际功能程序来发送邮件。他们只会喷一次他们的垃圾,并且不会尝试重新发送任何消息,无论所述消息是否出现临时或永久错误。因此,通过使用临时错误,您可以永久阻止大部分垃圾邮件,但您仍然允许火腿重试。(顺便说一下,这就是为什么灰名单仍然有效并且仍然捕获大量垃圾邮件的原因。)
RFC 在第 4.2.1 节中说。那:
确定回复是否适合 4yz 或 5yz 类别(见下文)的经验法则是,如果在不改变命令形式或发送者或接收者的属性(即,命令重复相同并且接收器不会提出新的实现)。
在反向查找失败的情况下,只要修复了 DNS 错误,在消息本身没有任何变化的情况下,消息就可以被接受。因此,这应该是一个暂时的错误。
在邮件不是垃圾邮件的情况下,发送邮件服务器系统管理员可能会注意到错误消息并修复 DNS 问题,以便可以传递邮件而无需用户干预和重新发送邮件。除非发送电子邮件的用户还负责邮件服务器和/或其 DNS 条目,即使他们确实直接获得了永久退回,他们也将无法对其进行任何操作 - 与例如拼写错误的情况不同地址。
当然,您始终有权以任何理由拒绝任何电子邮件。
归档时间: |
|
查看次数: |
5124 次 |
最近记录: |