使用procmail将电子邮件多个文件夹放在多个收件人的情况下

时间:2012-03-08 12:19:09

标签: procmail

我打算在家里建一个电子邮件系统,我订阅了很多邮件列表。电子邮件由fetchmail提取到本地计算机并由procmail过滤。但是,根据我目前的知识,有一种情况无法解决。我一直在谷歌搜索2-3个小时,找到一个没有任何结果的解决方案。

我想要的是,我收到一封包含多个收件人的电子邮件,我想将此电子邮件复制到不同的文件夹中。这是一个例子:

Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org

我想把这封邮件放到linux-kernel和linux-kernel-janitors文件夹中。我怎么能用procmail来做呢?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用SWITCHRC=在收件人列表中设置Procmail循环,但这是相当hackish。或者,如果您要处理的文件夹列表有限,则可以单独发送,并在至少一次发送邮件时删除邮件。

LASTFOLDER=
:0c:
* ^TO_linux-kernel@vger\.kernel\.org\>
linux-kernel
:0c:
* ^TO_kernel-janitors@vger\.kernel\.org\>
kernel-janitors
# ... repeat for other addresses you want to multiplex ...
# If it was delivered, LASTFOLDER will be set
:0
* LASTFOLDER ?? .
/dev/null

如果您在到达此部分之前可能已复制到其他收件箱,则需要将LASTFOLDER显式设置为空字符串。否则不应该这样,但我把它留在了预防措施中。 (此变量包含邮件传递到的最新文件夹的名称。)

答案 1 :(得分:0)

解决方案如下所示:

首先,需要一个If语句,因为我的.procmailrc文件不仅包含内核邮件列表过滤条件。如果它匹配,则存在另一个条件列表。我认为到时候会更精细。

:0
 * [To|Cc].*vger.kernel.org
   LASTFOLDER=

    :0Ac:
    * ^[To|Cc].*linux-janitors@vger.kernel.org
    | DoItSomethingWithIt

    :0Ac:
    * ^[To|Cc].*linux-kernel@vger.kernel.org
    | DoItSomethingWithIt2

    :0                             
    * LASTFOLDER ?? .
    | DoItSomethingWithIt3