Procmail: encontra email enviado de e para o mesmo endereço?

1

Existe uma maneira com procmail (ou outra coisa?) para pesquisar por e-mail em que os campos from: e to: contenham o mesmo endereço? E isso pode ser feito sem precisar codificar cada endereço de e-mail em uma receita?

Basicamente, estou tentando encontrar e-mails onde o remetente envia o e-mail para seu próprio endereço e, em seguida, para todos os outros. Normalmente eu uso notmuch e estou feliz com isso, mas não posso fazer o que estou tentando alcançar aqui. notmuch pode trabalhar junto com procmail , então eu esperava que alguém que conhecesse procmail realmente pudesse ajudar e, assim, evitar que eu precisasse aprender um novo sistema de filtragem para fazer isso.

    
por frankqux 28.10.2016 / 20:48

1 resposta

0

Isso é possível, embora exija alguns recursos obscuros do Procmail e, é claro, você precisa entender o que está alcançando.

:0
*   ^From:[     ]*\/[^  ].*
* $ ^To:[   ]*$\MATCH
{ ... actions ... }

O operador \/ capture coleta a string correspondente na variável especial MATCH . Na próxima linha, procuramos a mesma string no cabeçalho To: . Onde $MATCH contém a string capturada, $\MATCH contém uma regex em que todos os caracteres especiais da regex na string foram escapados para corresponder literalmente. O modificador $ é necessário na receita para permitir a interpolação de variáveis Procmail na regex.

Isso usa o usual [ ]* (espaço ou tabulação, zero ou mais) para pular os espaços em branco após os dois pontos, e depois pega tudo a partir do primeiro caractere que não seja espaço em branco.

Na prática, isso significa que os cabeçalhos From: e To: precisam ter conteúdos idênticos. Se o remetente colocar um "nome real" diferente (o que tecnicamente é apenas um comentário), essa receita não será compatível. Por exemplo,

From: Myself <[email protected]>
To: Everyone <[email protected]>

Aqui, o terminal de email é idêntico, mas todo o campo é diferente. Se você precisar lidar com esse cenário, talvez mude a regex para corresponder ao primeiro < antes do \/ , mas isso obviamente dependerá das sequências precisas que você precisa corresponder; existem muitas variações possíveis.

    
por 30.10.2016 / 12:53

Tags