Postfix:仅接收来自特定顶级域名 (tld) 的电子邮件?

Postfix:仅接收来自特定顶级域名 (tld) 的电子邮件?

我到处搜索,但只找到如何阻止特定的顶级域名。

我已经设置了一个rejected_domains文件来阻止那些我必须在收件箱中出现时手动添加的顶级域名(tlds)。

基本上,只允许.com、.net、.org、.gov、.edu...类型的域名。

现在有如此多的顶级域名 (TLD) 发出垃圾邮件,我更愿意有一个可接受顶级域名 (TLD) 的白名单。

我确实已经设置了像 spamhuas 之类的检查,还有 spamassaassin,但它们仍然可以通过。

答案1

这可以通过结合check_sender_accessPostfix 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)。

相关内容