在使用procmail的多个收件人的情况下将电子邮件置于多个文件夹
-
09-12-2019 - |
题
我将在家建立一个电子邮件系统,我订阅了很多邮件列表。通过fetchmail获取给本地计算机的电子邮件,并由procmail过滤。但是,存在符合我目前的知识不可能解决的情况。我一直在谷歌曲2-3个小时寻找一个没有任何结果的解决方案。
我想要的是,我收到一个带有多个收件人的电子邮件,我想将此电子邮件复制到不同的文件夹。这是一个例子:
Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
.
我想将此电子邮件放入Linux-Kernel和Linux-Kernel-Janitors文件夹中。我如何通过procmail来做?
提前感谢!
解决方案
您可以使用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
.
如果您可能已在到达此部分之前复制到其他收件箱中,则要将生成的字符串显式设置为空字符串。否则不应该是必要的,但我把它留给了预防措施。(此变量包含消息已传递给的最新文件夹的名称。)
其他提示
解决方案如下所示:
首先,需要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
. 不隶属于 StackOverflow