如果邮件与发件人匹配,请使用procmail移动电子邮件

时间:2010-10-20 10:10:00

标签: email filter procmail

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

我知道我可以在我的电子邮件用户.procmailrc文件中使用以下代码来执行此操作:

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

但是我有一个大约50个电子邮件地址的列表,我想转移到那个特定的“myfolder”。

所以使用

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

没有帮助,因为procmail使用AND操作符来解释它们。所以如果From是第一个@ ...和第二个@ ...,那么上面的代码将是真的,这将永远不会成真。

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

实际上我有一个简单的文本文件,其中包含所有电子邮件地址。 如果procmail在该文件中准备就绪并且检查From是否与文件中的至少一行匹配,则移动电子邮件发送到“myfolder”会很酷。

这样的东西
 :0:
 * ^From:file(email.txt)
 myfolder

是否可以使用此类或类似内容的任何代码。 我不想在procmailrc文件中添加这3行50次。

2 个答案:

答案 0 :(得分:2)

Procmail使用regexp,因此您可以使用|字符分隔地址。

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

会奏效。在一条线上可能会有五十个混乱,请注意......

答案 1 :(得分:2)

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

我的.procmailrc中的代码如下:

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