0

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

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

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

我想将此电子邮件放入 linux-kernel 和 linux-kernel-janitors 文件夹中。我怎样才能通过procmail做到这一点?

提前致谢!

4

2 回答 2

1

您可以通过使用使 Procmail 在收件人列表中循环,SWITCHRC=但这很不合时宜。或者,如果您想要处理的文件夹列表有限,您可以单独发送到每个文件夹,如果您至少发送过一次,则丢弃该邮件。

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为空字符串。否则它不应该是必要的,但我把它留在了以防万一。(此变量包含消息传递到的最新文件夹的名称。)

于 2012-03-09T08:00:06.690 回答
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
于 2012-03-10T15:02:22.393 回答