Actualmente tengo un servidor Postfix en ejecución que entrega el correo entrante a través de procmail. Eso funciona bien, pero ahora quiero descifrar cualquier correo entrante que esté cifrado con pgp automáticamente. Así que he creado una regla de procmail para activar gnupg.
Este es mi .procmailrc actual:
:0 fw
* ^Subject: encryptme
| /usr/bin/gpg --decrypt | mail -s "ENCRYPTED: $subject" [email protected]
Ahora el correo se descifra con éxito y se envía a[correo electrónico protegido]pero con el asunto vacío (el correo solo muestra "ENCRIPTADO: ") y con la dirección de correo electrónico del servidor como remitente. Y, por supuesto, el correo descifrado contiene partes del encabezado del correo electrónico.
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 alguna posibilidad de descifrar el correo entrante de esta manera automáticamente y "limpiar" (solo el mensaje descifrado) sin software adicional como GNU Anubis? ¿Y cuál es una buena regla para que procmail active el programa (en lugar del asunto)?
Espero que esta información sea suficiente para que alguien pueda ayudarme.
Respuesta1
En otras palabras, gpg --decrypt
quiere un archivo, no un mensaje de correo electrónico. Un mensaje de correo electrónico normalmente consta de varias partes MIME (su ejemplo muestra un mensaje multipart/mixed
con una sola parte del cuerpo, pero el concepto aún se mantiene), que no son archivos. Debe pasar solo la carga útil cifrada, no el contenedor MIME, gpg
o buscar un contenedor u opción que ayude gpg
a analizar el contenedor MIME.
Una búsqueda rápida en Google mostró un contenedor Perl MIME simple que hace esto:
En caso de que el enlace falle, reinventar la misma rueda nuevamente no debería ser un desafío importante; básicamente necesitas identificar la parte MIME que contiene una carga útil cifrada, decodificarla (probablemente esté base64
codificada, a menos que use gpg
la propia "armadura ASCII") y pasarla a gpg
. La existencia de una carga útil cifrada es probablemente un buen desencadenante, pero tal vez el contenedor simplemente debería pasar a través de cualquier cosa que no contenga una carga útil cifrada, y usted alimentaría todo al contenedor.
Tangencialmente, no hay nada que defina $subject
en Procmail o en sus reglas. Puedes hacer algo como esto:
:0
* ^Subject:[ ]\/[^ ].*
{ subject=$MATCH }
... donde el espacio en blanco entre los corchetes debe ser un espacio y una tabulación.