procmail:以多个字段为条件

时间:2019-12-23 14:01:36

标签: procmail

我想使用“发件人”字段将我发送给其他人的电子邮件存储到名为“ / sent”的文件夹中

所以我用:

:0:
*^From.*user@outlook.com
$HOME/Mail/sent/.

它曾经可以正常工作。但是,现在我也从以下地址转发电子邮件:user@outlook.com,这是因为电子邮件信封中包含标题:Resent-From.*user@outlook.com,因此所有转发的电子邮件都邮件被保存到发送的文件夹中。

是否可能有双重条件。这就是说,如果Resent-From和From都具有*user@outlook.com,则应该转到已发送文件夹。换句话说,可以使用“与”或“或”或“否定”条件。

更新: 所提供的解决方案是正确的。 我由于忽略了“:”而犯了一个错误。感谢您的解决方案和耐心等待。我也学到了很多东西,了解了很多资源,对此我也表示感谢,

谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,Procmail会完全按照您的要求进行操作。多个条件将被与在一起。第一个失败导致配方被放弃;如果它们全部成功,就会采取措施。

:0  # second colon removed - don't use lock on directories
* ^From:(.*\<)?user@outlook\.com
* ^Resent-From:(.*\<)?user@outlook\.com
$HOME/Mail/sent/.

还请注意我如何修改您的正则表达式以使其更紧密。

要不执行此操作,请在条件前面添加!。要执行“或”操作,您可以同时消除这两个条件,并在“其他”部分(摩根定律)采取行动。

:0
* ! First condition
* ! Other condition
{ } # do nothing
:0E # else, meaning at least one was true
action

当然,如果两个条件都是正则表达式,则只需使用正则表达式或运算符即可。

:0
* First condition|Other condition
action