Postifx header_checks 不起作用

max*_*tch 5 linux ubuntu postfix

我有 main.cf 配置:

header_checks = regexp:/etc/postfix/header_checks
Run Code Online (Sandbox Code Playgroud)

/etc/postfix/header_checks

/^Subject:.*viagra.*/i DISCARD
/^Subject:.*pills.*/i DISCARD
/^Subject:.*f\*ckbuddy.*/i DISCARD
/^Subject:.*f\*ckfriend.*/i DISCARD
/^Subject:.*f\@ck.*/i DISCARD

/^From:.*viagra.*/i DISCARD
Run Code Online (Sandbox Code Playgroud)

请注意,我添加了/i以使不区分大小写。不确定它是否允许这样做?

我曾尝试从 hotmail 向我的服务器发送主题为药丸的电子邮件,但仍然没有运气!还有返回到发件人方法而不是DISCARD?

小智 6

如果postmap -q "<put test header here>" regexp:/etc/postfix/header_checks正确返回 DISCARD(或匹配的适当操作)但后缀实际上并未执行所述操作,则可能有receive_override_options=no_header_body_checks某个地方main.cfmaster.cf正在关闭标头检查。在master.cf文件中,它将是-o服务配置条目之一中的一个选项。

有 4 个选项receive_override_options

  • no_unknown_recipient_checks 不要尝试拒绝未知收件人(仅限 SMTP 服务器)。这通常是在外部内容过滤器之后指定的。
  • no_address_mappings 禁用规范地址映射、虚拟别名映射扩展、地址伪装和自动 BCC(密件抄送)收件人。这通常在外部内容过滤器之前指定。
  • no_header_body_checks 禁用 header/body_checks。这通常是在外部内容过滤器之后指定的。
  • no_milters 禁用 Milter(邮件过滤器)应用程序。这通常是在外部内容过滤器之后指定的。

no_address_mappings选项通常位于在main.cf,而其他选项,在master.cf

“-o receive_override_options”覆盖 main.cf 设置以避免重复在内容过滤器之前已经完成的工作。这些选项是对 main.cf 中指定的选项的补充

来源:Postfix 后队列内容过滤器


Sve*_*ven 1

  • regex:默认情况下,pcre:模式不区分大小写。但是,该i标志应该可以工作。
  • 您可以使用REJECT代替来DISCARD通知发件人。
  • 你使用postmap /etc/postfix/header_checks并重新加载了postfix吗?
  • 您可以在许多站点在线测试正则表达式。http://www.pagecolumn.com/tool/pregtest.htm允许 POSIX 正则表达式。
  • 如果可用,使用pcre正则表达式通常比使用 Posix 实现更快regexp:。使用header_checks = pcre:/etc/postfix/header_checks

  • 日志文件说了什么?

  • PCRE 不需要 postmap,但需要 postfix 重新加载 (4认同)