【问题标题】:Filter email by containing my name in "To" using procmail使用 procmail 通过在“收件人”中包含我的姓名来过滤电子邮件
【发布时间】:2012-07-26 05:48:30
【问题描述】:

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

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

感谢您的帮助!

【问题讨论】:

  • 目录交付不需要或支持锁定;您应该丢失:0: 的第二个冒号。也不清楚您为什么要阻止对 SpamAssassin 的并发访问,但也许您有特定的原因。
  • 这些特定设置是在我的主机 WebFaction 的模板中推荐的。我自己也不知道它们是什么意思。
  • 好吧,如果您的 Procmail 日志文件包含“忽略锁定文件”警告,这就是原因。如果 SpamAssassin 被大量用户在共享数据库中使用贝叶斯等数据,也许锁定可能有助于避免拥塞,但这个锁定文件是每个用户的,所以我怀疑它是否真的有用(如果他们有可伸缩性问题,为什么不使用 spamd/spamc 包装器)。

标签: unix spam spam-prevention procmail


【解决方案1】:

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

试试这个吧。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2015-01-30
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多