Postfix Header_Checks 拒绝合法邮件(CnetOS 7 + Postfix 2.10.1)

Postfix Header_Checks 拒绝合法邮件(CnetOS 7 + Postfix 2.10.1)

我使用 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

我希望这有帮助!!

相关内容