2

使用 procmail,我想将“收件人”字段中不包含我的姓名(“John Doe”)的任何传入邮件移动到“垃圾”文件夹。

但是,以下规则似乎没有任何效果,即使我已经在在线测试应用程序中彻底测试了正则表达式以确保它与应有的匹配:

# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/

如果有兴趣,我的整个 procmail 规则文件是:

# Filter mail using SpamAssassin
:0fw: spamassassin.lock
* < 256000
| /usr/bin/spamassassin

# Filter spam based on "Spam-Level"
:0:
* ^X-Spam-Level: \*\*
.Junk/

# Filter spam if the name "John Doe" is not in "To"
:0:
* ^(?!To:.*John\sDoe).*
.Junk/

为什么我的规则不起作用?

感谢您的任何帮助!

4

1 回答 1

4

因为 Perl 前瞻不是 Procmail 正则表达式的一部分。

试试这个。

:0
* ! ^To:.*John[  ]+Doe
.Junk/

[ ] 里面的空格应该是空格和制表符;也不支持\sPerlism。

您最好使用您的电子邮件地址作为过滤标准,并可能使用^TO_特殊宏来覆盖抄送:等。当然,您仍然无法处理密件抄送:到您的帐户。

于 2012-07-27T14:43:57.090 回答