No estoy hablando del típico mensajito de «estoy de vacaciones», sino de una verdadera respuesta automática a determinados correos, sensible al contexto. Por ejemplo, yo he usado esto para que mi ordenador enviase mis claves públicas GnuPG a demanda. Para ello, bastaba con enviarme un correo poniendo en el Subject (o Asunto del mensaje), las palabras «enviar clave PGP».
Actualmente ya no lo utilizo, porque subo mis claves a un servidor de claves, que es más rápido y limpio.
Por cierto, y a modo de agradecimiento: Este truco es, en realidad, una adaptación mejorada de otro que podeis encontrar en el «Mutt-i, GnuPG, PGP Howto» ;-)
Lo único que hay que hacer, es meter en vuestro fichero .procmailrc las siguientes líneas:
:0 h * ^Subject:[ ]+\/(|enviar)[ ]+clave PGP\>.* | metasend -b -t `formail -rtzxTo:` -c lacofi@localhost \ -s "Re: clave publica PGP" \ -f /home/lacofi/.gnupg/notifica.txt -m text/plain -e base64 -n \ -f /home/lacofi/.gnupg/llave_publica.txt -m text/plain -e base64 -n \ -f /home/lacofi/.gnupg/telecable.txt \ -m text/plain -e base64
Nota: Lo que hay entre los corchetes es un espacio y un tabulador.
Vamos a explicarlo todo un poco. Estas lineas indican a procmail que, cuando se reciba un mensaje con «enviar» y «clave PGP» en el Subject, haga lo siguiente:
Los programas formail y metasend forman la cabecera de un mensaje destinado al que envía la petición, pero también con una copia carbón (campo CC:) para mí mismo. Así sé quién ha pedido mis firmas. En el subject de este mensaje, se pone «Re: clave publica PGP».
A continuación, el programa metasend empaqueta un texto y lo codifica como MIME: será el cuerpo del mensaje, simplemente un texto en el que se indica que los ficheros adjuntos contienen mis claves públicas, y que se trata de una respuesta automática, por lo que el correo del solicitante no ha sido leido.
Luego metasend empaqueta los dos ficheros que contienen mis claves y los codifica como ficheros adjuntos base64. Despues se lo pasa todo a procmail que ejecuta la orden principal: lo envia. ;-)