我打算在家里建立一个电子邮件系统,而且我订阅了很多邮件列表。通过fetchmail获取到我的本地计算机并由procmail进行过滤的电子邮件。但是,有一种情况以我目前的知识是不可能解决的。我已经在谷歌上搜索了2-3个小时,以找到一个解决方案,但没有任何结果。
我想要的是,我收到一封有多个收件人的电子邮件,我想将这封电子邮件复制到不同的文件夹中。下面是一个示例:
Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org我想把这封电子邮件放到linux-kernel和linux-kernel-janitor文件夹中。我怎样才能通过procmail做到这一点?
提前感谢!
发布于 2012-03-09 16:00:07
您可以使用SWITCHRC=在收件人列表上执行Procmail循环,但这样做有点黑客作风。或者,如果要处理的文件夹列表有限,可以分别传递到每个文件夹中,如果至少传递过一次,则删除邮件。
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-10 23:02:22
解决方案看起来像这样:
首先,需要一条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 ?? .
| DoItSomethingWithIt3https://stackoverflow.com/questions/9617570
复制相似问题