我想在我的 Postfix 配置中将几个域列入白名单,这样只要这些域使用 SPF 和/或 DKIM(如果该域使用)正确验证,来自这些域的所有电子邮件都会被接受。这意味着来自这些域的电子邮件应该不是需要经过常规的 DNSBL 和灰名单流程,并且仅需进行 SPF 和 DKIM 验证。
sender_access
现在,我已经设法通过配置文件并使用postmap
实用程序将其转换为合适的哈希数据库,从灰名单过滤器中保存了来自这些域的电子邮件。
主配置文件:
...
parent_domain_matches_subdomains = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_rbl_client zen.spamhaus.org
reject_unauth_destination
check_sender_access hash:/etc/postfix/sender_access
check_policy_service unix:private/tumgreyspf
...
发件人访问:
domain1.com OK
domain2.net OK
答案1
当你的限制不能适用于所有情况时,你可以使用后缀限制类。这个想法是将一些领域排除在单独的限制之外。
我根据以下原则重新排列您当前的配置:“轻量级检查应先于重量级检查执行”。因此,我建议配置变为
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
check_sender_access hash:/etc/postfix/sender_access
reject_rbl_client zen.spamhaus.org
check_policy_service unix:private/tumgreyspf
现在,后缀限制类应该通过此行应用check_sender_access hash:/etc/postfix/sender_access
。在此之前定义smtpd_restriction_classes中的参数main.cf
。
smtpd_restriction_classes = whitelistdomain
whitelistdomain =
check_policy_service unix:private/tumgreyspf
因此内容/etc/postfix/sender_access
变成了
example.com whitelistdomain
example.org whitelistdomain
逻辑是,postfix 将应用默认限制(permit_mynetwork、permit_sasl_authenticated、reject_unauth_destination) 到所有域。然后因为 example.com 和 example.org 在白名单域名类,postfix 仅执行check_policy_service unix:private/tumgreyspf. 其他域名应通过默认限制。
现在,问题是如何配置tumgreyspf
以将这些域从灰名单中排除。
基于这一页,这里是排除的步骤灰名单。注意此路径适用于 Debian。其他系统可能有不同的路径。
首先,为每个域创建一个文件夹
mkdir -p /var/lib/tumgreyspf/config/envelope_sender/example.com/
mkdir -p /var/lib/tumgreyspf/config/envelope_sender/example.org/
在中创建文件配置/etc/tumgreyspf/disablegreylist.conf
SPFSEEDONLY = 0
GREYLISTTIME = 600
CHECKERS = spf
OTHERCONFIGS =
现在,将其符号链接到每个域目录中
ln -s /etc/tumgreyspf/disablegreylist.conf /var/lib/tumgreyspf/config/envelope_sender/example.org/__default__
ln -s /etc/tumgreyspf/disablegreylist.conf /var/lib/tumgreyspf/config/envelope_sender/example.com/__default__
答案2
只需smtpd_recipient_restrictions
按顺序排序即可。此列表从前到后进行处理。某些过滤器可以返回拒绝或不返回任何内容(黑名单、spf;要么是恶意发件人,要么我们不知道)或允许(SASL、网络,如果不匹配,则继续)
对于你来说,情况是这样的:
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_policy_service unix:private/tumgreyspf
check_sender_access hash:/etc/postfix/sender_access
reject_rbl_client zen.spamhaus.org
reject_unauth_destination
始终允许本地和经过身份验证的发件人。对于所有其他发件人,我们会检查我们的sender_access
文件。如果没有匹配,则继续使用黑名单、SPF 和灰名单。