Поместите электронную почту в несколько папок, если несколько получателей используют procmail - PullRequest
0 голосов
/ 08 марта 2012

Я собираюсь создать систему электронной почты дома, и я подписан на множество рассылок. Письма доставляются на мою локальную машину с помощью fetchmail и фильтруются с помощью procmail. Но есть ситуация, которую невозможно решить с моими нынешними знаниями. Я в течение 2-3 часов гуглял, чтобы найти решение без какого-либо результата.

Я хочу, чтобы я получил электронное письмо с несколькими получателями и хотел бы скопировать это письмо в разные папки. Вот пример:

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

Я хотел бы поместить это письмо в папку linux-kernel и linux-kernel-janitors. Как я могу сделать это через procmail?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вы можете сделать цикл 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 в пустую строку. Это не должно быть необходимо иначе, но я оставил это в качестве меры предосторожности. (Эта переменная содержит имя последней папки, в которую было доставлено сообщение.)

0 голосов
/ 10 марта 2012

Решение выглядит так:

Прежде всего, требуется оператор 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
...