为什么正则表达式!
不起作用?
在我的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进行测试(好的主题(时,我得到了这个
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
修复了它!很容易。。
针对邮件中的每一条信息都检查check_headers。。所以您需要使用if/endif
来只检查Subject:
字段。
if /^Subject:/
!/^Subject:.*NotBot.*/ REJECT fuck off
endif
愚蠢的垃圾邮件发送者由于滥用我打开的stmp端口而暂停了我的电子邮件帐户。