Descriptografar mensagens pgp recebidas com procmail

Descriptografar mensagens pgp recebidas com procmail

Atualmente tenho um servidor Postfix em execução que entrega mensagens recebidas através do procmail. Isso funciona bem, mas agora quero descriptografar qualquer e-mail recebido que seja criptografado automaticamente com pgp. Então criei uma regra procmail para acionar o gnupg.

Este é o meu .procmailrc atual:

:0 fw
* ^Subject: encryptme
| /usr/bin/gpg --decrypt | mail -s "ENCRYPTED: $subject" [email protected]

Agora o e-mail foi descriptografado com sucesso e enviado para[e-mail protegido]mas com assunto vazio (o e-mail mostra apenas "ENCRIPTO: ") e com o endereço de e-mail do servidor como remetente. E é claro que o e-mail descriptografado contém partes do cabeçalho do e-mail.

Content-Type: multipart/mixed; boundary="713bkotRlnRGA7FAhJANoI0IsDpX3ws8N"

--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable

Just a test.

--713bkotRlnRGA7FAhJANoI0IsDpX3ws8N--

Existe alguma possibilidade de descriptografar os e-mails recebidos dessa maneira automaticamente e "limpar" (apenas a mensagem descriptografada) sem software adicional como o GNU Anubis? E qual é uma boa regra para o procmail acionar o programa (em vez do assunto)?

Espero que esta informação seja suficiente para alguém me ajudar.

Responder1

Em outras palavras, gpg --decryptdeseja um arquivo, não uma mensagem de e-mail. Uma mensagem de e-mail normalmente consiste em várias partes MIME (seu exemplo mostra uma multipart/mixedcom apenas uma parte do corpo, mas o conceito ainda é válido), que não são arquivos. Você precisa passar apenas a carga criptografada, não o contêiner MIME, para gpg, ou encontrar um wrapper ou opção que ajude a gpganalisar o wrapper MIME.

Uma pesquisa rápida no Google revelou um wrapper Perl MIME simples que faz isso:

Caso o link dê errado, reinventar a mesma roda novamente não deve ser um desafio significativo; você basicamente precisa identificar a parte MIME que contém uma carga criptografada, decodificá-la (provavelmente está base64codificada, a menos que use gpga própria "armadura ASCII") e passá-la para gpg. A existência de uma carga criptografada é provavelmente um bom gatilho, mas talvez o wrapper deva simplesmente passar por qualquer coisa que não contenha uma carga criptografada, e você alimentaria tudo no wrapper.

Tangencialmente, não há nada que defina $subjectno Procmail ou nas suas regras. Você pode fazer algo assim:

:0
* ^Subject:[    ]\/[^   ].*
{ subject=$MATCH }

... onde o espaço em branco entre os colchetes deve ser um espaço e uma tabulação.

informação relacionada