procmail:调节多个字段
procmail: conditioning on multiple fields
我想将我使用 "From" 字段发送给其他人的 e-mails 存储到名为“/sent”的文件夹中
所以,我使用:
:0:
*^From.*user@outlook.com
$HOME/Mail/sent/.
它曾经工作得很好。但是,现在我也从 address:user@outlook.com 转发我的 e-mail,发生的事情是 e-mail 信封包含 header:Resent-From.*user@outlook.com 所以所有转发的 e-mail 都被保存到已发送的文件夹中。
是否可以有双重条件。也就是说,如果 Resent-From 和 From 都有 *user@outlook.com,那么它应该转到 sent-folder。换句话说,是否可以使用 AND 或 OR 或 Negation 条件。
更新: 提供的解决方案是正确的。我在这方面犯了一个错误我忽略了“:”。感谢您的解决方案和耐心。我也学到了很多东西和一些资源,对此我也很感激,
谢谢!
默认情况下,Procmail 完全按照您的要求进行操作。多个条件将被 AND 运算在一起。第一个失败导致配方被放弃;如果他们都成功,则采取行动。
:0 # second colon removed - don't use lock on directories
* ^From:(.*\<)?user@outlook\.com
* ^Resent-From:(.*\<)?user@outlook\.com
$HOME/Mail/sent/.
另请注意我是如何修改您的正则表达式以收紧它的。
如果不这样做,请在条件前添加 !
。要执行 OR,您可以否定这两个条件,并在 "else" 部分(德摩根定律)中执行操作。
:0
* ! First condition
* ! Other condition
{ } # do nothing
:0E # else, meaning at least one was true
action
当然,如果两个条件都是正则表达式,你可以简单地使用正则表达式或运算符。
:0
* First condition|Other condition
action
我想将我使用 "From" 字段发送给其他人的 e-mails 存储到名为“/sent”的文件夹中
所以,我使用:
:0:
*^From.*user@outlook.com
$HOME/Mail/sent/.
它曾经工作得很好。但是,现在我也从 address:user@outlook.com 转发我的 e-mail,发生的事情是 e-mail 信封包含 header:Resent-From.*user@outlook.com 所以所有转发的 e-mail 都被保存到已发送的文件夹中。
是否可以有双重条件。也就是说,如果 Resent-From 和 From 都有 *user@outlook.com,那么它应该转到 sent-folder。换句话说,是否可以使用 AND 或 OR 或 Negation 条件。
更新: 提供的解决方案是正确的。我在这方面犯了一个错误我忽略了“:”。感谢您的解决方案和耐心。我也学到了很多东西和一些资源,对此我也很感激,
谢谢!
默认情况下,Procmail 完全按照您的要求进行操作。多个条件将被 AND 运算在一起。第一个失败导致配方被放弃;如果他们都成功,则采取行动。
:0 # second colon removed - don't use lock on directories
* ^From:(.*\<)?user@outlook\.com
* ^Resent-From:(.*\<)?user@outlook\.com
$HOME/Mail/sent/.
另请注意我是如何修改您的正则表达式以收紧它的。
如果不这样做,请在条件前添加 !
。要执行 OR,您可以否定这两个条件,并在 "else" 部分(德摩根定律)中执行操作。
:0
* ! First condition
* ! Other condition
{ } # do nothing
:0E # else, meaning at least one was true
action
当然,如果两个条件都是正则表达式,你可以简单地使用正则表达式或运算符。
:0
* First condition|Other condition
action