Postifx header_checks 不起作用

Postifx header_checks 不起作用

我有 main.cf 配置:

header_checks = regexp:/etc/postfix/header_checks

还有/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

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

我尝试过从 hotmail 向我的服务器发送带有 pills 主题的电子邮件,但仍然没有成功!另外,有没有一种返回发件人的方法DISCARD

答案1

如果postmap -q "<put test header here>" regexp:/etc/postfix/header_checks正确返回 DISCARD(或匹配的适当操作),但 postfix 实际上并未执行所述操作,则可能是或receive_override_options=no_header_body_checks中的某个地方关闭了标头检查。在文件中,它将是其中一个服务配置条目中的一个选项。main.cfmaster.cfmaster.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 accept_override_options” 会覆盖 main.cf 设置,以避免重复内容过滤器之前已经完成的工作。这些选项是对 main.cf 中指定的选项的补充

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

答案2

  • 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

  • 日志文件说了什么?

答案3

在里面header_checks(5) 手册页中,有一段话提到,目前所有正则表达式的默认设置都是不区分大小写的:

兼容性
      使用 Postfix 2.2 及更早版本指定“postmap -fq”来查询包含区分大小写的模式的表。默认情况下,regexp: 和 pcre: 模式不区分大小写。

因此,在正则表达式中添加标志并不能解决您的问题。

正如其他人提到的,您的第一步是验证它是否可以与以下设备配合使用:

postmap -q "<string to test--i.e. Subject: Viagra>" /etc/postfix/header_checks.re

输出将是该行的操作。(DISCARD就你的情况而言)

如果有效,您可能会缺少包含标题的行或阻止包含的行,正如其他人提到的那样。

header_checks = regexp:/etc/postfix/header_checks.re

既然你说那里有那条线,那么后者很可能就是问题所在。

请注意,我有一个.re扩展名。我认为这并不重要,但使用某种扩展名来了解文件包含的内容可能是一个好主意。

答案4

作为@HZC说这可能是-o 接收覆盖选项问题。我在这里遇到了同样的问题:我的问题并按照帖子解决了这个问题postfix header_checks 使用 regexp 正确设置。我的情况是拒绝反而丢弃。如果你想欺骗垃圾邮件发送者,则使用 DISCARD,垃圾邮件发送者将不会收到任何通知。有关此内容的更多信息,请访问此链接并看到拒绝行动部分。

丢弃结构:

              DISCARD optional text...
              Claim successful delivery and silently discard the message.  Log
              the optional text if specified, otherwise log a generic message.

相关内容