我使用 Postfix 来屏蔽邮件头和邮件正文中的术语。在少数情况下,它会屏蔽合法邮件,因为使用的术语出现在一个长字符串中(可能是 ID 或引用或编码字符串)。
例如:
/AQHV/ 拒绝垃圾邮件规则 #5
邮件头中包含以下文本的电子邮件将被拒绝。因为其中一个邮件头中包含字符“AQHV”:-
主题索引:空气质量高压SEXnJ2u6futfzU6u85aNv7EgTg
我尝试在术语 AQHV 之前 + 之后添加一个空格,如下所示:-
/ AQHV/ 拒绝垃圾邮件规则 #5
/AQHV/ 拒绝垃圾邮件规则 #6
发生此错误:
postmap:警告:/etc/postfix/header_checks.db:重复条目:“/”
我如何告诉 Postfix 将术语“AQHV”视为单独的单词,而不是字符串的一部分?
提前致谢!
tripleee:对于这些评论表示抱歉——仍然在这些论坛上苦苦挣扎。
我决定卸载 Postfix 并重新安装。这可能会解决这个问题。我会接受你的回答。非常感谢。
答案1
尝试一下/\bAHQV\b/
。这\b
是一个正则表达式单词边界标记。
答案2
确保将其包含在 main.cf 中:
header_checks = pcre:/etc/postfix/header_checks
运行这些命令,假设 header_checks 位于 /etc/postfix/ 中。
postmap /etc/postfix/header_checks
postfix reload
要处理 regex/pcre 中的空格,您可以将其注释掉。例如,如果您想拒绝任何标题中有空格的电子邮件,您可以将其放入 header_checks 中:
/\ / REJECT NO SPACES ALLOWED!!!!
因此,如果您只想阻止标题中包含 AHQV 的行的电子邮件,但只阻止字符串 AHQV,而不是将 AHQV 作为较大字符串中的子字符串,那么这就是您需要的正则表达式:
/\ AHQV\ / REJECT NO AHQV PLS
我希望这有帮助!!