首页 > 解决方案 > 后缀 header_checks 无缘无故失败!(不是操作员)

问题描述

为什么正则表达式!不起作用?

在我的header_checks文件中,我得到了

!/^Subject:.*NotBot.*/ REJECT fuck off

在我的 master.cf 中,我使用清理守护进程进行检查

cleanup  unix  n       -       n       -       0       cleanup
  -o header_checks=pcre:/etc/postfix/header_checks

当我通过 telnet 连接到 stmpd 进行测试(Good Subject)时,我得到了这个

220 test.com ESMTP Postfix
HELO www.test.com
MAIL From: <test@test.com>
RCPT To: <test@test.com>
DATA
From: <tester@hahaha.com>
Subject: NotBot123

test250 test.com
250 2.1.0 Ok
250 2.1.5 Ok
354 End data with <CR><LF>.<CR><LF>

.
550 5.7.1 fuck off

但 Bad Subject 也可以

220 example.com ESMTP Postfix
HELO www.example.com
MAIL From: <test@test.com>
RCPT To: <test@test.com>
DATA
From: <tester@hahaha.com>
Subject: hahaha

test250 test.com
250 2.1.0 Ok

250 2.1.5 Ok
354 End data with <CR><LF>.<CR><LF>
.
550 5.7.1 fuck off

标签: pcreregex-lookaroundspostfix-mta

解决方案


解决它!很容易..

check_headers 会检查邮件中的每一个信息。所以你只需要使用if/endif检查Subject:字段。

if /^Subject:/
!/^Subject:.*NotBot.*/ REJECT fuck off
endif

由于滥用我的开放 stmp 端口,愚蠢的垃圾邮件发送者暂停了我的电子邮件帐户。


推荐阅读