好吧。介绍一下背景。我们有一个反垃圾邮件集群,每天传输大约 200 万到 300 万封电子邮件,拦截来自我们最终用户的 99% 左右的垃圾邮件。
底层 SMTP 服务器是 Postfix 2.2.10。邮件被发送到 SpamAssassin/ClamAV/等之前的“前线防御”附在下面。
...basic config....
smtpd_recipient_restrictions =
reject_unauth_destination,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.mailspike.net,
check_policy_service unix:postgrey/socket
...more basic config....
如您所见,有来自各个公司的标准 RBL 服务,以及 Postgres 服务。
问题是,我有一个客户(数千个客户中的一个)对我们屏蔽了他们的一封重要电子邮件感到非常不满。该邮件是通过一个俄罗斯免费邮件发送的,目前我们的三个 RBL 服务器中有两个服务器已屏蔽该邮件。我向他们解释了情况,但他们坚持认为我们没有屏蔽任何他们的电子邮件。
因此,我需要一种方法来将发送到 domain.com 的任何电子邮件列入白名单,但是我需要它在任何收件人限制之前进行,他们根本不希望出现 RBL 或 postgrey 阻止。
我自己也做了一些研究,http://www.howtoforge.com/how-to-whitelist-hosts-ip-addresses-in-postfix一开始似乎是一个很好的指南,几乎解决了我的问题,但我希望它根据收件人地址而不是原始服务器来接受。
答案1
如果您根据RCPT TO
地址进行处理,那么您将向此人发送大量垃圾邮件,因为它将禁用任何进一步的垃圾邮件检查。
您唯一的选择是使用check_sender_access
。
smtpd_recipient_restrictions =
check_client_access hash:/etc/postfix/access_sender
reject_unauth_destination,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client bl.mailspike.net,
check_policy_service unix:postgrey/socket
就像这样:
[email protected] OK
domain.com OK
fromuser@ OK
postmap access_sender
创建后请不要忘记。