Coloque várias pastas de e-mail no caso de vários destinatários usando procmail
-
09-12-2019 - |
Pergunta
Vou construir um sistema de e-mail em casa e estou inscrito em várias listas de e-mail.Os e-mails buscados na minha máquina local pelo fetchmail e filtrados pelo procmail.Mas há uma situação que não é possível resolver com os meus conhecimentos atuais.Estou pesquisando no Google há 2 a 3 horas para encontrar uma solução sem nenhum resultado.
O que eu quero é receber um e-mail com vários destinatários e gostaria de copiar esse e-mail para pastas diferentes.Aqui está um exemplo:
Cc: linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
Eu gostaria de colocar este e-mail nas pastas linux-kernel e linux-kernel-janitors.Como posso fazer isso pelo procmail?
Desde já, obrigado!
Solução
Você pode fazer um loop do Procmail na lista de destinatários usando SWITCHRC=
mas isso é bastante hackeado.Ou, se você tiver uma lista limitada de pastas que deseja processar, poderá entregar em cada uma separadamente e descartar a mensagem se a tiver entregue pelo menos uma vez.
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
Se você tiver copiado para caixas de entrada adicionais antes de chegar a esta seção, você deseja definir explicitamente LASTFOLDER
para a string vazia.Não deveria ser necessário de outra forma, mas deixei-o lá por precaução.(Esta variável contém o nome da última pasta onde a mensagem foi entregue.)
Outras dicas
A solução é assim:
Primeiro de tudo, uma instrução If é necessária porque meu arquivo .procmailrc contém não apenas condições de filtro da lista de discussão do kernel.Se corresponder, há outra lista de condições.Acho que com o tempo será mais refinado.
: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