后缀:`smtpd_client_restrictions`、`smtpd_helo_restrictions`、`smtpd_relay_restrictions` 和 `smtpd_recipient_restrictions` 的评估顺序

后缀:`smtpd_client_restrictions`、`smtpd_helo_restrictions`、`smtpd_relay_restrictions` 和 `smtpd_recipient_restrictions` 的评估顺序

Postfix > 2.10 按什么顺序评估以下指令?

  1. smtpd_client_restrictions
  2. smtpd_helo_restrictions
  3. smtpd_relay_restrictions
  4. smtpd_recipient_restrictions

我读Postfix SMTP 中继和访问控制 (ACCESS README)Postfix 配置参数以及中的评论main.cf,但恕我直言,这些建议并不完全清楚,甚至是矛盾的。

注意:当我提到“本地地址”时,我指的是 Postfix 以某种方式作为最终目的地的任何收件人地址,即其域部分在 或 中列出的地址mydestinationvirtual_alias_domains其他virtual_mailbox_domains所有地址都是非本地地址,Postfix 必须将邮件转发到另一个 MTA。

问题 1:前两个指令是否总是按照指定的顺序针对任何类型的客户端(MUA 和其他 SMTP 服务器)和任何目标地址进行评估?我认为是这样。

问题2:a)是否smtpd_relay_restrictions始终进行评估,还是 b) 仅针对非本地邮件域进行评估?

问题 3:a)是否smtpd_recipient_restrictions始终进行评估,还是 b) 仅针对本地地址进行评估?

文档中的一些引述

文档smtpd_recipient_restrictions状态在 smtpd_relay_restrictions 之后,Postfix SMTP 服务器在客户端 RCPT TO 命令上下文中应用的可选限制。这表明smtpd_relay_restrictions始终会评估,包括本地地址。但该指令的名称暗示它仅考虑转发/中继的非本地地址。

文档smtpd_recipient_restrictions状态从 Postfix 2.10 开始,中继权限规则最好用 来实现smtpd_relay_restrictions,这样 下的宽松垃圾邮件阻止策略smtpd_recipient_restrictions将不再导致宽松的邮件中继策略。这表明,这smtpd_recipient_restrictions仅针对本地地址进行考虑,而对于非本地地址则跳过。

smtpd_relay_resrictions但是,默认情况下有一条注释,main.cf指出最后没有放置默认操作(允许或拒绝),因为对于外部邮件服务器,此列表与之相结合smtpd_recipient_restrictions,因此早期reject会过早中止。这表明smtpd_recipient_restrictions总是在评估。

答案1

这些名称主要对应于 SMTP 会话阶段。主要参考文档是SMTPD 访问自述文件

首先是客户端连接,因此smtpd_client_restrictions进行评估。此阶段可用的是远程 IP 地址、其 DNS 反向和反向的正向。

然后它发出 HELO 或 EHLO,然后smtpd_helo_restrictions进行下一步评估。显示的名称在此阶段也可用。

接下来是MAIL FROMsmtpd_sender_restrictions接下来是附加信息——信封发件人。

接下来是RCPT TO使信封收件人可用。但这里有个窍门:服务器现在决定如何中继邮件;因此smtpd_relay_restrictions在这里进行评估。smtpd_recipient_restrictions接下来进行评估。这将在man 5 postconf

接下来是smtpd_data_restrictionssmtpd_end_of_data_restrictions,很少使用。

全部这些限制包括总是被评估按此顺序每封邮件直到做出决定。这不取决于此服务器是否是最终目的地。当做出明确的决定(允许、拒绝、推迟)时,它会停止评估,因此例如如果客户端在 HELO 阶段被拒绝(被 中的某些东西smtpd_helo_restrictions),smtpd_recipient_restrictions则不会被评估。但是,如果smtpd_delay_reject = yes,连接仍将进入 RCPT TO 阶段,但由于已经做出决定,因此不会评估任何限制列表;Postfix 只是快速跳过所有内容,并在提供信封发件人和收件人后推迟拒绝客户端的乐趣,因此它也会记录该信息。

此外,米尔特斯每个阶段都会调用。Milters 是称为相应的限制列表。

为了完整性:ETRN 控制路径完全不同。首先,评估和,如果smtpd_client_restrictions使用命令(而不是通常在此处使用的命令),则连接将转移到该路径,在该路径上仅检查。smtpd_helo_restrictionsETRNMAIL FROMsmtpd_etrn_restrictions

相关内容