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.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 receive_override_options”覆盖 main.cf 设置以避免重复在内容过滤器之前已经完成的工作。这些选项是对 main.cf 中指定的选项的补充
regex:默认情况下,pcre:模式不区分大小写。但是,该i标志应该可以工作。REJECT代替来DISCARD通知发件人。postmap /etc/postfix/header_checks并重新加载了postfix吗?如果可用,使用pcre正则表达式通常比使用 Posix 实现更快regexp:。使用header_checks = pcre:/etc/postfix/header_checks
日志文件说了什么?