Postfix 域白名单与发件人身份验证相结合

Postfix 域白名单与发件人身份验证相结合

我想在我的 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

我发现后筛选还发现了简洁的小例子,但这似乎只是一种 DNSBL 专属措施,并且对我的情况帮助不大。

答案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__

更多信息,tumgreyspf 的 github 页面

答案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 和灰名单。

相关内容