【问题标题】:procmail regex filter mails containing a list specific word patternsprocmail 正则表达式过滤包含列表特定单词模式的邮件
【发布时间】:2015-12-16 11:37:12
【问题描述】:

是否可以在 procmail 中应用正则表达式来过滤特定的单词模式。 例如,我可以使用普通的正则表达式来做到这一点:

/(?=.*dolor)(?=.*ipsum)(?=.*sit)/s

这将产生与以下文本的匹配。这不会:

/(?=.*money)(?=.*ipsum)(?=.*sit)/s

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed 直径 voluptua。 At vero eos et accusam et justo duo dolores et ea 责备。 Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor 坐在 amet。 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。在 vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,没有海 takimata sanctus est Lorem ipsum dolor sit amet。

我希望它能够适应 procmail 的使用。甚至扩展它,而不是仅仅搜索“money”,它还会匹配“mOney”、“möney”、“móney”等等。

有可能吗? 如果有,怎么做?

【问题讨论】:

    标签: regex email filter spam procmail


    【解决方案1】:

    是的,这是可能的。让我告诉你怎么做。

    您的正则表达式检查单词dolorispumsit 是否以随机顺序出现在文本中的某处。以下 procmail 配方也是如此:

              :0 B
              * -2^0
              * 1^0  \<dorum\>
              * 1^0  \<ipsum\>
              * 1^0  \<sit\>
              action_dorum_ipsum_sit
    

    第一个条件包含一个空的正则表达式,因为它总是匹配,所以它被用来给你的分数一个负偏移量。接下来的每个规则的匹配将使该分数增加一个(无论每个单词出现的频率如何)。最后,只有当文本至少包含一次所有 3 个单词时,分数才会是正数(因此会触发操作)。

    要添加更多关键字,您可以添加更多规则(并相应减少负偏移量)或扩展现有规则,例如像这样

              * 1^0   \<(mOney|möney|móney)\>
    

    【讨论】:

    • 不过,您可能想要添加单词边界锚;正则表达式 \&lt;sit\&gt; 只匹配那个词,而 jusr sit 匹配 situation, position, deposit, 等等。
    • 我不确定这是否是由于我的 procmail 版本造成的,但我不得不稍作更改以使其正常工作,但它确实有效,谢谢! VERBOSE=yes # Body = dolor,ipsum,sit [move to junk] :0 B * -2^0 * 1^0 ^*(dolor).* * 1^0 ^*(ipsum).* * 1^0 ^*(sit).* $HOME/mail/Junk
    • ^* 完全错误,括号和结尾的.* 完全没有必要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多