我有 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.cf
master.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 accept_override_options” 会覆盖 main.cf 设置,以避免重复内容过滤器之前已经完成的工作。这些选项是对 main.cf 中指定的选项的补充
答案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.