![check_client_access 和 RBL](https://linux22.com/image/530116/check_client_access%20%E5%92%8C%20RBL.png)
为了更好地打击垃圾邮件,我对 Postfix 进行了如下配置:
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/client_whitelist
reject_unknown_client
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client l2.apews.org,
permit
此配置减少了大量垃圾邮件,并且借助白名单,我能够处理一些配置错误但合法的服务器,以便接受它们。但是,我想知道如果其他一些合法服务器发现自己被列入这些 RBL 之一的黑名单,这个特定的白名单配置是否能够完成这项工作。我遗漏了什么吗?
答案1
如果“无辜”邮件服务器位于您配置的 RBL 之一中但不在您的白名单中,则该电子邮件将被丢弃。
如果你想保护自己免受这种情况的影响,你需要转向 RBL得分而不是直接的 RBL阻塞. 一个好方法是使用策略权重评分守护进程。它将集成到 Postfix 中,工作方式如下:
从现在开始,您可以在 policyd-weight 中配置您的 RBL,您可以在其中为每个 RBL 单独分配“命中”和“未命中”分数(因此,使用负分,您甚至可以使用白名单 RBL)。
示例:rbl1.example.org:得分 3.5,rbl2.foo.org:得分 4。阻止所需的最低分数:6
现在,如果某个 IP 在 rbl2.foo.org 中列出但未在 rbl1.example.org 中列出,则不会因为未达到所需的最低分数 6 而被拒绝。
此解决方案还可以保护您免受死亡 RBL。如果它们“死亡”,RBL 通常会用127.0.0.2
“列出”来回答所有查询,以引起您的注意。但是,除非您检测到该错误,否则许多合法电子邮件将会丢失。
答案2
您还可以尝试使用 postfix 的permit_dnswl_client
指令(如果您使用的是 postfix 2.8+),例如这是我在配置中使用的指令:
permit_dnswl_client 列表.dnswl.org
我在我的配置中使用了几个 RBL,但有些更激进,列出了来自网络邮件提供商(例如 AOL、gmail、yahoo)的 IP,因此我在 RBL 之前定义的白名单允许这些 IP 通过。