我打算在家里建一个电子邮件系统,我订阅了很多邮件列表。电子邮件由fetchmail提取到本地计算机并由procmail过滤。但是,根据我目前的知识,有一种情况无法解决。我一直在谷歌搜索2-3个小时,找到一个没有任何结果的解决方案。
我想要的是,我收到一封包含多个收件人的电子邮件,我想将此电子邮件复制到不同的文件夹中。这是一个例子:
Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
我想把这封邮件放到linux-kernel和linux-kernel-janitors文件夹中。我怎么能用procmail来做呢?
提前致谢!
答案 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