使用procmail,我想移动任何不含我的名字(“to”字段中的名称(“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/
.

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

谢谢您的任何帮助!

有帮助吗?

解决方案

因为perl看法不是procmail的正则表达式reptoire的一部分。

改为。

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

[]内的空格应该是空格和标签;也不支持\s perlism。

您可能会更好地使用您的电子邮件地址作为过滤标准,也许使用^TO_特殊宏以覆盖CC:等。您当然仍然无法处理BCC:到您的帐户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top