Postfix 中的限制的影响

Postfix 中的限制的影响

我的问题类似于这个,但我正在运行较新版本的 Postfix,那里的答案并没有真正回答我的问题。

我正在运行带有 Postfix 2.11 的 Debian Jessie 服务器。

到目前为止,我了解 Postfix 有以下检查:

  • smtpd_client_restrictions
  • smtpd_helo_restrictions
  • smtpd_sender_restrictions
  • smtpd_relay_restrictions
  • smtpd_recipient_restrictions

从我,Postfix 将按照上述顺序处理它们。

  1. 现在我的问题是,当任何限制中的条目匹配到时会发生什么OK?这是否意味着 Postfix 将跳过剩余的检查那个特定的 *_restriction或者会跳过全部 *_restrictions全部一起?

  2. 除此以外还会出现其他结果吗OKREJECT或者这些检查的适当值是什么?

  3. 如果大多数教程只提到或,那么其他的_restrictions用于什么?smtpd_client_restrictionssmtpd_recipient_restrictions

我想要实现的是:

  • 阻止已知发送垃圾邮件(例如动态 IP 或黑名单中列出的其他客户端)和/或不符合 RFC(例如非 FQDN 地址等)的 MTA 客户端。
  • 同时允许某些客户端根据白名单绕过此问题
  • 仅允许经过 SASL 验证的客户端将邮件中继到其他服务器,并且不是所有列入白名单的域名
  • 阻止冒充其他服务器(即 SPF)的客户端,包括之前列入白名单的客户端(换句话说,只允许列入白名单的服务器递送其邮件)
  • 对新服务器添加延迟以进一步增强垃圾邮件防护(Postgres)。这已经运行得很好了,我也为它创建了必要的白名单。

现在,如果您以任何方式回答问题 1,那么将所有检查放入上面提到的检查之一*_restrictions很可能不会起作用,因为白名单会覆盖 SPF 检查。

因此,我的配置看起来像这样:

# basic configuration (myorigin, mydomain, etc.)

smtpd_helo_required = yes

smtpd_client_restrictions = check_client_access hash:/etc/postfix/blackwhitelists/whitelisted_client_addresses, 
    check_reverse_client_hostname_access hash:/etc/postfix/blackwhitelists/blacklisted_reverse_hostnames, 
    reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net,
    reject_rbl_client dnsbl.sorbs.net, reject_unknown_client

smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks,
    reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname,
    reject_unknown_helo_hostname, reject_unauth_pipelining

smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks,
    check_sender_access hash:/etc/postfix/blackwhitelists/blacklisted_sender_addresses

smtpd_relay_restrictions = permit_sasl_authenticated, permit_mynetworks,
    reject_unauth_destination

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
    reject_unauth_destination, reject_unauth_pipelining, 
    check_sender_access hash:/etc/postfix/blackwhitelists/whitelisted_sender_addresses, reject_non_fqdn_sender,
    reject_unknown_sender_domain, check_policy_service unix:private/policyd-spf, 
    check_policy_service unix:/var/spool/postfix/postgrey/socket

smtpd_etrn_restrictions = permit_sasl_authenticated, permit_mynetworks, reject

# more basic configuration

如您所见,现在许多选项都重复了,因为我不确定是否在其他限制中也需要它们。总而言之,我认为这也相当混乱。

我还对通过所有这些检查的邮件运行 SpamAssassin。

答案1

这些_restrictions适用于 SMTP 对话特定阶段期间可用的信息,即:

  • smtpd_client_restrictions应用于初始连接 (IP/FQDN)
  • smtpd_helo_restrictions应用于客户端HELO/EHLO 命令
  • smtpd_sender_restrictions应用于 MAIL FROM 命令
  • smtpd_recipient_restrictions适用于 RCPT TO 命令

smtpd_relay_restrictions控制中继到第三方域。

按照给定顺序评估每个限制中的所有项目,如果任何项目与此限制序列匹配,则停止处理并采取指定的操作。access(5)手册页提供了可能的操作的完整列表。

如果操作为 ACCEPT 或其同义词,则评估将进入下一阶段的规则集。如果操作为 REJECT(或其同类操作),则将向发送者返回错误,并且不会进行进一步处理。

您的规则集看起来不错,但是限制太多而且容易出错 - 例如发件人的 DNS 服务器关闭,将不会接受来自他们的任何邮件,HELO/EHLO 限制将禁止配置不当的 Exchange 服务器和其他一些深奥的邮件程序,等等。

根据我的经验,我建议将其设置为最低限度,并用评分策略服务守护进程替换所有 RBL、HELO 检查和反向检查,例如postfwd2。在那里,您可以微调应用于所有这些小事情的策略,并根据一组复杂的参数而不是单一的命中采取不同的行动。

相关内容