Procmail: encontrar e-mails enviados de e para o mesmo endereço?

Procmail: encontrar e-mails enviados de e para o mesmo endereço?

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

Basicamente, estou tentando encontrar e-mails em que o remetente envia o e-mail para seu próprio endereço e depois para todos os outros. Normalmente eu uso notmuche estou feliz com isso, mas não consigo fazer o que estou tentando alcançar aqui. notmuchposso trabalhar junto procmail, então eu esperava que alguém que conhecesse procmailmuito bem pudesse ajudar e, assim, me poupar da necessidade de aprender um sistema de filtragem totalmente novo para fazer isso.

Responder1

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

: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 To:cabeçalho. Onde $MATCHcontém a string capturada, $\MATCHcontém um regex onde quaisquer caracteres especiais de regex na string foram escapados para corresponder literalmente. O $modificador é necessário na receita para permitir a interpolação de variáveis ​​do Procmail no 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, em seguida, captura 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:devem ter conteúdos idênticos. Se o remetente inserir um "nome real" diferente (que tecnicamente é apenas um comentário), esta receita não corresponderá. Por exemplo,

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

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

informação relacionada