Procmail para reconhecer e-mails que já foram copiados em uma pasta

1
Estou trabalhando em um lugar onde e-mails são enviados para vários grupos com muita frequência, o que significa que os e-mails serão filtrados em diretórios aleatórios, mesmo no meio da thread, se um novo grupo for adicionado ao encadeamento. Eu gostaria de ver todos os e-mails em cada pasta de grupo para onde foram enviados, o que significa mais espaço em disco usado, mas o espaço em disco é barato. Para isso existe o sinalizador "c", mas o problema é que se colocar um "c" em cada regra, terei todos os e-mails na pasta apropriada e na caixa de entrada no final. Então, eu gostaria de ter uma última regra que poderia reconhecer se este e-mail já foi reconhecido / filtrado em alguma pasta, e se não, deixe-o passar para a caixa de entrada. Eu tentei usar "test -z $ LASTFOLDER, que parecia funcionar, exceto que com este procmail retornou uma falha no fetchmail, que por sua vez não estava apagando meus e-mails do servidor imap e a bagunça aconteceu. Qual é a maneira correta de fazer isso? Devo usar outra coisa para filtragem de mensagens? Eu era capaz de escrever com clareza o que eu queria?

    
por vermokus 09.07.2015 / 15:36

2 respostas

2

Você pode fazer algo assim para todas as regras que classificam as mensagens em pastas de lista:

:0
* ^List-Id:...
{
    :0 c:
    somefolder

    :0 fw
    | formail -a X-Chad-Loop: Chad was here
}

Então, pouco antes do fim:

:0
* ^X-Chad-Loop:\ Chad\ was\ here
{
    :0
    /dev/null

    HOST
}

Eu acho que isso também registrará a entrega para /dev/null . Se você não gosta disso, você terá que jogar com LOGABSTRACT .

Em uma nota lateral: cuidado com o fato de procmail ficar sem manutenção por um longo tempo e ter problemas de segurança bem conhecidos. Mesmo alguns de seus desenvolvedores antigos recomendam mudar para outra coisa hoje em dia. Para que vale a pena, minha preferência pessoal é fdm , que tem um registro de segurança muito melhor.

    
por 09.07.2015 / 18:24
1

A ideia de LASTFOLDER é completamente boa; você só precisa certificar-se de que você não acabe sinalizando falha no processo de chamada. Você não está mostrando seu código, mas algo como o seguinte deve funcionar bem.

:0
* LASTFOLDER ?? .
/dev/null

A sintaxe variable ?? regex é o recurso interno do Procmail para examinar uma variável. O único ponto corresponderá a qualquer valor, exceto a string vazia (ou, tecnicamente, uma string contendo apenas novas linhas).

    
por 10.07.2015 / 08:36