【问题标题】:Move emails with procmail if it matches from sender如果与发件人匹配,则使用 procmail 移动电子邮件
【发布时间】:2010-10-20 10:09:59
【问题描述】:

由于我使用不同的电子邮件客户端来阅读/发送我的邮件,我想设置 procmail 将我的电子邮件移动到通常由 Thunderbird 过滤功能完成的文件夹。

我知道我可以通过在我的电子邮件用户 .procmailrc 文件中为 procmail 使用以下代码来做到这一点:

:0:
* ^From:.test@host.name.com
myfolder

但我有一个大约 50 个电子邮件地址的列表,我想将它们移动到那个特定的“我的文件夹”。

所以通过使用

:0:
* ^From:.first@mail.com
* ^From:.second@mail.com
jimsmail

没有帮助,因为 procmail 使用 AND 运算符解释它们。因此,如果 From 是 first@... AND second@...,则上面的代码将是正确的,这永远不会是正确的。

那么我该如何使用 OR 运算符。

实际上,我有一个简单的文本文件,所有电子邮件地址都在其中。 如果在该文件中准备好 procmail 并检查 From 是否与文件中的至少一行匹配,将电子邮件移动到“myfolder”,这将是一件很酷的事情。

类似

 :0:
 * ^From:file(email.txt)
 myfolder

如果这或类似的事情是可能的,是否会做任何事情。 我不想在我的 procmailrc 文件中添加这 3 行 50 次。

【问题讨论】:

    标签: email filter procmail


    【解决方案1】:

    Procmail 使用正则表达式,因此您可以使用 | 字符分隔地址。

    :0:
    * ^From:.((first|second|third)@mail.com|(fourth|fifth)@othermail.com)
    myfolder
    

    会工作的。一条线有五十个可能会有点乱,注意...

    【讨论】:

    • 嗯,一个不工作。在日志中它显示没有错误。但不知何故没有匹配。该行如下所示:* ^From:.(email.info@domain.com|second.email@domain.com)
    【解决方案2】:

    我找到了解决方案。 有了这个解决方案,我可以使用一个简单的电子邮件文本文件,将所有电子邮件地址保存在一行中。

    我的.procmailrc中的代码如下:

    EMAILFILE=/path/to/my/emailfile
    FROM=`formail -xFrom: | sed -e 's/ *(.*)//; s/>.*//; s/.*[:<] *//'`
    :0
    * ? fgrep -qxis $FROM $EMAILFILE
    myfolder
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      相关资源
      最近更新 更多