我到处搜索,但只找到如何阻止特定的顶级域名。
我已经设置了一个rejected_domains文件来阻止那些我必须在收件箱中出现时手动添加的顶级域名(tlds)。
基本上,只允许.com、.net、.org、.gov、.edu...类型的域名。
现在有如此多的顶级域名 (TLD) 发出垃圾邮件,我更愿意有一个可接受顶级域名 (TLD) 的白名单。
我确实已经设置了像 spamhuas 之类的检查,还有 spamassaassin,但它们仍然可以通过。
答案1
这可以通过结合check_sender_access
和Postfix PCRE 支持。
在这种情况下,您的默认限制将是reject
,但最好添加一个人类可读的解释,说明为什么消息被拒绝。
您main.cf
将得到类似以下内容的内容。我通常将smtpd_sender_restrictions
在下面smtpd_recipient_restrictions
因为这样可以同时记录发送者和接收者,这更利于调试。
smtpd_recipient_restrictions =
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,
reject_rbl_client sbl-xbl.spamhaus.org,
check_sender_access pcre:/etc/postfix/access/sender_access,
reject
并且/etc/postfix/access/sender_access
根据pcre_表(5):
/\.net$/ OK
/\.org$/ OK
/\.gov$/ OK
/\.edu$/ OK
/\.([-\w]+)$/ 550 The sender TLD .$1 is not whitelisted.
在这里,我省略了,.com
因为我想演示这个 PCRE 图的结果:
$ /usr/sbin/postmap -q "[email protected]" pcre:/etc/postfix/access/sender_access
OK
$ /usr/sbin/postmap -q "[email protected]" pcre:/etc/postfix/access/sender_access
550 The sender TLD .com is not whitelisted.
请注意,如果您OK
在 中使用check_sender_access
,则所有其他控制(如 Spamhaus 阻止列表)都应位于其之前(如上例所示)。否则,即使 IP 地址被 RBL 阻止,来自白名单 TLD 的邮件也会通过。使用DUNNO
而不是OK
会允许在其后进行其他限制,但这也需要permit
作为最后一条规则(而不是reject
)。