procmail 食谱有交流发电机“或”运算符吗?

procmail 食谱有交流发电机“或”运算符吗?

给出以下 procmail 配方:

:0:
* ^Subject:.*viagra.*
* ^From:.*viagra.*
/dev/null

Procmail 只会删除来自伟哥且主题中有伟哥的电子邮件。如果其中一个匹配项为真,是否可以应用过滤器?

该解决方案最好不使用正则表达式(regex1|regex2)操作,但如果这是唯一的解决方案,请这么说。

答案1

你很接近。对正则表达式的深刻理解对于成功的 procmail 秘诀大有帮助。 Procmail 非常灵活,但这种灵活性很大程度上取决于正则表达式。

:0: 
* ^(From|Cc|To|Subject).*viagara.* 
/dev/null

或者,我相信更接近您想要实现的目标,使用管道和新行转义来继续下一行的规则(为了可读性)。在您的示例中,您正在创建一个也必须匹配的新条件。

:0:
* ^Subject:.*viagra.* |\
  ^From:.*viagra.*
/dev/null

答案2

只需使用两个配方,每个都转到 /dev/null,一个匹配主题,另一个匹配发件人。第一场比赛获胜。这本质上与 OR 运算符相同。 reg1|reg2 方法可以工作,但我认为它作为两个食谱读起来更清楚。

相关内容