procmail正则表达式过滤包含列表特定单词模式的邮件

时间:2015-09-19 10:09:45

标签: regex email filter spam procmail

是否可以在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 diam voluptua。在vero eos et accusam et justo duo dolores et ea   rebum。 Stet clita kasd gubergren,no sea takimata sanctus est Lorem   ipsum dolor坐着。 Lorem ipsum dolor坐在amet,consetetur   sadilcing 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”,“möney”,“móney”等等。

有可能吗? 如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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