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

StackOverflow https://stackoverflow.com//questions/9617570

  •  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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top