Postfix > 2.10 按什么顺序评估以下指令?
smtpd_client_restrictions
smtpd_helo_restrictions
smtpd_relay_restrictions
smtpd_recipient_restrictions
我读Postfix SMTP 中继和访问控制 (ACCESS README)和Postfix 配置参数以及中的评论main.cf
,但恕我直言,这些建议并不完全清楚,甚至是矛盾的。
注意:当我提到“本地地址”时,我指的是 Postfix 以某种方式作为最终目的地的任何收件人地址,即其域部分在 或 中列出的地址mydestination
。virtual_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 FROM
,smtpd_sender_restrictions
接下来是附加信息——信封发件人。
接下来是RCPT TO
使信封收件人可用。但这里有个窍门:服务器现在决定如何中继邮件;因此smtpd_relay_restrictions
在这里进行评估。smtpd_recipient_restrictions
接下来进行评估。这将在man 5 postconf
。
接下来是smtpd_data_restrictions
和smtpd_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_restrictions
ETRN
MAIL FROM
smtpd_etrn_restrictions