postfix - 对收到和发送的邮件进行不同的标题检查

postfix - 对收到和发送的邮件进行不同的标题检查

如何header_checks使用 Postfix 对收发邮件应用不同的方式?

默认情况下,所有 header_checks 都适用于传入和传出。

答案1

header_checks是由cleanup所以我不认为您只能将它应用于传入或传出。

smtp_header_checks仅适用于发送邮件(smtp 客户端)

答案2

如果有一个邮件头,你可以用它来识别哪些是收到的邮件,哪些是发出的邮件,那么使用 postfix 3.2 或更新版本,你可以短路header_checks, 喜欢:

/^Received: .*detect_outgoing_mails/ PASS
/^X-Something: this rule will only match on incoming mails/ HOLD

(但它仍然只为您提供匹配全部(与以前一样)或仅匹配传入或仅匹配传出邮件的选项,并且需要相对较新的 postfix 版本)

作为一个更好的选择,如果您总是可以在一个端口(提交:tcp / 587)上接收“传出”邮件(来自您作为邮件中继服务器的客户端的邮件)并在 tcp / 25 上接收传入邮件,您应该能够使用它master.cf来覆盖每个邮件的 header_checks,如下所示:

submission inet n       -       n       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o header_checks=pcre:/etc/postfix/header_checks.relay

smtp      inet  n       -       -       -       200     smtpd
  -o strict_rfc821_envelopes=yes
  -o header_checks=pcre:/etc/postfix/header_checks.mx

但如果您中继的客户端也和世界其他地方一样使用 tcp/25,那么这种方法就行不通了。如果是这样,您可以为他们设置备用端口,这样就可以了,但可行性取决于您说服所有用户更改设置的能力。

如果您有多余的 IP 可用,您还可以使其对用户基本透明:假设您既有smtp.example.org用户的中继服务器,又有 IP 为 的 MX a.a.a.a,您可以将域的 MX 更改为 IP b.b.b.b,然后使用一个 smtpd 服务器进行a.a.a.a一组标头检查,使用另一个 smtpd 服务器进行b.b.b.b另一组标头检查。如果您只为来自 192.168.xx/24 的用户进行中继,则这甚至更容易,此时您甚至可以保留相同的 DNS 名称并使用 DNS 视图为内部客户端显示内部 IP,为世界其他地方显示外部 IP。

第三种方法是使用后缀筛选功能而不是header_check简单的正则表达式匹配,它会将整个消息转发到您的自定义脚本进行处理,然后可以通过检查标题轻松区分传入和传出的邮件,然后根据需要进行任何后处理。

答案3

如果我理解你的问题正确的话,你应该能够通过文件来做到这一点 /etc/postfix/header_checks,就像这样发送邮件 /^From: "spammer/ REJECT /^To: [email protected]/ REDIRECT [email protected]

我很久以前就这样做过,所以不记得所有的细节,但你可以从这里获得更多信息文档

这将允许您根据邮件是传入还是传出来定义操作,我希望这能回答您的问题。

相关内容