<!doctype linuxdoc system>

<article>

<title>Mutt-i, GnuPG y PGP Como

<author>Andrés Seco <tt><htmlurl url="mailto:AndresSH@ctv.es"
name="AndresSH@ctv.es"></tt> y J.Horacio M.G. 
<tt><htmlurl url="mailto:homega@ciberia.es" name="homega@ciberia.es"></tt>

<date>v1.2, 7 de Febrero de 2000

<abstract>
Este documento explica la forma de configurar <it>Mutt-i</it>, <it>PGP</it> y
<it>GnuPG</it> en sus diferentes versiones (2.6.x, 5.x y GnuPG) de forma rápida
indicando los posibles problemas que pueden surgir al enviar correo firmado o
cifrado para ser leído por clientes de correo que no se ajustan a las
especificaciones PGP/MIME definidas en la RFC2015 y por otros sistemas
operativos. Incluye además un ejemplo de configuración de procmail para enviar
las claves públicas de forma automática a peticiones recibidas por correo
electrónico, como si de un servidor de claves se tratara.
</abstract>

<toc>

<sect>Introducción
<p>

Este documento explica la forma de configurar <em/Mutt-i/ y <em/PGP/ en sus
versiones <tt/2.6.x/, <tt/5.x/ y <tt/GnuPG/ para poder tener en marcha de forma
rápida un lector de correo con seguridad de firmas y cifrado digital.

Para esto se incluirán ficheros de configuración de ejemplo que servirán para
la puesta en marcha. Para obtener el máximo rendimiento y usar todas las
características de los programas que se utilizarán será necesario leer la
documentación adjunta a cada programa y reconfigurar dichos ficheros de
configuración que se incluyen como ejemplos.

Además, se comentarán algunos problemas derivados de la falta de seguimiento de
la recomendación RFC2015 sobre PGP/MIME por parte de muchos programas de correo
electrónico, tanto en Linux como en otros sistemas operativos.

Será presentado también un ejemplo de configuración de procmail de forma que
puedan ser enviadas las claves públicas de manera automática a la recepción de
mensajes que las soliciten.

Nos gustaría dar las gracias a Roland Rosenfeld <tt><htmlurl
url="mailto:roland@spinnaker.de" name="roland@spinnaker.de"></tt>, Christophe
Pernod <tt><htmlurl url="mailto:xtof.pernod@wanadoo.fr"
name="xtof.pernod@wanadoo.fr"></tt>, Denis Alan Hainsworth <tt><htmlurl
url="mailto:denis@cs.brandeis.edu" name="denis@cs.brandeis.edu"></tt> y Angel
Carrasco <tt><htmlurl url="mailto:acarrasco@jet.es"
name="acarrasco@jet.es"></tt> por sus correcciones y sugerencias.

<sect>Copyright y descarga de responsabilidad
<p>

Este documento es <tt>copyright &copy; 1999 Andrés Seco y J. Horacio M.G.</tt>,
y es un documento libre. Puedes distribuirlo bajo los términos de la <bf/GNU
General Public License/, que puedes encontrar en <tt><htmlurl
url="http://www.gnu.org/copyleft/gpl.html"
name="http://www.gnu.org/copyleft/gpl.html"></tt>. Una copia de ésta traducida
al castellano la puedes encontrar en <tt><htmlurl
url="http://visar.csustan.edu/~carlos/gpl-es.html"
name="http://visar.csustan.edu/~carlos/gpl-es.html"></tt>

La información y otros contenidos en este documento son lo mejor de nuestros
conocimientos. Sin embargo, hemos podido cometer errores. Así que deberías
determinar si deseas seguir las instrucciones que se encuentran en este
documento.

Nadie es responsable de cualquier daño en sus ordenadores y cualquier otra
pérdida por el uso de la información contenida aquí.

LOS AUTORES Y MANTENEDORES NO SON RESPONSABLES DE CUALQUIER DAÑO INCURRIDO A
CAUSA DE ACCIONES TOMADAS EN BASE A LA INFORMACION CONTENIDA EN ESTE DOCUMENTO. 

Por supuesto, estamos abiertos a todo tipo de sugerencias y correcciones sobre
el contenido de este documento.

<sect>Nota sobre el intercambio de correo desde/hacia internet
<p>

Este documento no trata sobre el intercambio de mensajes de correo electrónico
entre el equipo local y otros equipos (en red local o en internet). Dicho
intercambio debe ser realizado mediante programas que actúen como Agentes de
Transferencia de Mensajes (MTAs) como Sendmail, <tt><htmlurl
url="http://www.sendmail.org" name="http://www.sendmail.org"></tt>, qmail,
<tt><htmlurl url="http://www.es.qmail.org"
name="http://www.es.qmail.org"></tt>, Exim, <tt><htmlurl
url="http://www.exim.org" name="http://www.exim.org"></tt>, Smail, <tt><htmlurl
url="ftp://ftp.planix.com/pub/Smail"
name="ftp://ftp.planix.com/pub/Smail"></tt>, etc.

En este documento se presupone que este método de envío/recepción de mensajes
fuera del equipo local ya está instalado y funcionando de forma correcta. Si
puede enviar un mensaje y leer su correo con el comando <tt/mail/ desde el
indicador de linea de comando de su equipo,

<tscreen><verb>
$ mail -s <asunto> <usuario@dominio.net>
escribir aquí el texto, y finalizar con un punto en la línea siguiente
.
</verb></tscreen>

es que debes tener instalado algún tipo de MTA que se encargue de la
transferencia de mensajes. En caso contrario, puedes encontrar documentación al
respecto en las páginas de manual de <em/smail/:

<!-- REVISION: -->
<!-- Los entornos tscreen no necesitan codificacion especial de caracteres -->
<!-- Ni retornos de carro (&nl;) -->
<!-- Los entornos _siempre_ <tscreen><verb> por favor... -->

<tscreen><verb> 
$ man smail
</verb></tscreen>

o del MTA que tengas instalado, y las de <em/fetchmail/:

<tscreen><verb>
$ man fetchmail
</verb></tscreen>

o en otro documento similar a estos que haga referencia a dichos programas.

<sect>Configuración de mutt
<p>

El siguiente fichero de ejemplo es válido para comenzar a usar <em/Mutt/ de
forma básica incluyendo caminos para los ficheros de alias, mensajes enviados y
mensajes postpuestos. Se puede realizar una mayor personalización atendiendo a
las indicaciones del manual de <em/Mutt/ en <tt>/usr/doc/mutt/</tt> o
<tt>/usr/doc/mutt-i/</tt>

Ejemplo simple de <tt>&tilde;/.muttrc</tt>:

<tscreen><verb>
set folder=~/Mail
set alias_file=.alias
set postponed=.postponed
set record=MensajesEnviados
set signature=.signature
my_hdr From: Nombre Apellido <Nombre@dominio.com>
source =.alias
</verb></tscreen>

Es necesario que exista el directorio <tt>&tilde;/Mail</tt>, que es el que
aparece como un signo de «igual que» en el fichero de configuración
<tt/.muttrc/ (esto es, <tt/=.alias/ quiere decir para <em/Mutt/
<tt>&tilde;/Mail/.alias</tt>, y <tt/=.postponed/ quiere decir para <em/Mutt/
<tt>&tilde;/Mail/.postponed</tt>). No obstante es posible tener estos ficheros
en otro directorio siempre y cuando indiquemos el camino completo en
<tt>&tilde;/.muttrc</tt>, y tengamos los permisos necesarios para trabajar en
dicho directorio.

También hay que personalizar la linea <tt/my_hdr/ con el nombre y la dirección
de correo electrónico adecuados. En el fichero <tt>&tilde;/Mail/.signature</tt>
se puede incluir la firma que aparecerá en todos los mensajes que se envíen.

Este fichero de configuracion puede llegar a hacerse muy grande, por lo que es
común separar algunos de sus comandos en ficheros diferentes. Por lo pronto,
son facilmente separables las lineas de configuración de <em/PGP/ o <em/GnuPG/
y las macros de teclado que personalicemos. Para ello seria necesario añadir
las lineas siguientes al fichero <tt>&tilde;/.muttrc</tt>:

<tscreen><verb>
source = ~/Mail/.mutt.macros
source = ~/Mail/.gnupgp.mutt
</verb></tscreen>

y utilizar los ficheros <tt>&tilde;/Mail/.mutt.macros</tt> y
<tt>&tilde;/Mail/.gnupgp.mutt</tt> para introducir en ellos las macros de
teclado y la configuración de <em/PGP/ o <em/GnuPG/ que más adelante se
comentan.

Para una información más extensiva y completa sobre el uso y configuración de
<em/Mutt/, así como de características avanzadas, ver el Manual de Mutt en
<tt><htmlurl url="http://www.lucas.org/manual_mutt.html"
name="http://www.lucas.org/manual_mutt.html"></tt>.

<sect>PGP y GnuPG
<p>

Para usar cualquiera de las versiones de <em/PGP/ con <em/Mutt-i/, primero será
necesario configurar adecuadamente <em/PGP/ de modo que existan el fichero con
las claves públicas (anillo de claves públicas) y el fichero con las claves
privadas (anillo de claves privadas). Conviene probar previamente PGP desde la
línea de comandos para asegurarse de que firma y cifra correctamente.

Recordemos que para <em/Unix/ las versiones de <em/PGP/ existentes son
<tt/2.6.3(i)/ y <tt/5.0(i)/, que de ahora en adelante llamaremos <bf/PGP2/ y
<bf/PGP5/ respectivamente. <bf/GnuPG/ es un sistema de codificación nuevo,
todavía en desarrollo aunque muy avanzado, de código abierto y libre, en muchos
aspectos superior a <bf/PGP/ (ver GnuPG mini como en <tt><htmlurl
url="http://www.insflug.org/documentos/GPG-Mini-Como/"
name="http://www.insflug.org/documentos/GPG-Mini-Como/"></tt>).

Aclararemos también que <em/PGP/, al ser un sistema desarrollado en los EE.UU.,
está sujeto a ciertas leyes sobre la exportación de programas que incluyen
código criptográfico;  por esta razón existe una versión internacional para
casi todas las versiones numéricas, y ésta vienen denotadas por la letra
«<bf/i/» (<bf/pgp - pgpi/).

<sect1>PGP2
<p>

<em/PGP2/ genera claves con el algoritmo RSA (<tt><htmlurl
url="http://www.rsa.com" name="http://www.rsa.com"></tt>), y como algoritmo de
cifrado usa IDEA (<tt><htmlurl url="http://www.ascom.ch"
name="http://www.ascom.ch"></tt>).

Ambos son algoritmos propietarios y su uso está restringido por sus respectivas
patentes.

Para su correcto funcionamiento, una vez instalado el programa, deberemos tener
un directorio <tt>&tilde;/.pgp</tt>, en el que se encuentren el fichero de
configuración <tt/pgp-i.conf/ y los ficheros con los anillos de claves públicas
y privadas, <tt/pubring.pgp/ y <tt/secring.pgp/ respectivamente.

<sect1>PGP5
<p>

Las claves generadas por <em/PGP5/ son del tipo <bf>DSS/DH</bf> (Digital
Signature Standard / Diffie-Helman). PGP5 usa como algoritmos de cifrado
<bf/CAST/, <bf/Triple-DES/, e <bf/IDEA/.  PGP5 puede trabajar con datos
cifrados y/o firmados con <em/RSA/ (PGP2), e incluso usar estas claves para
cifrar y/o firmar digitalmente (con claves generadas por PGP2, ya que PGP5 no
puede generar dichas claves).  Por contra, PGP2 no reconoce las claves
<em>DSS/DH</em> de PGP5;  esto crea un problema de incompatibilidad, pues en
<em>Unix/Linux</em> todavía muchos usuarios tienen instalado sólo la versión de
PGP2.

Para el correcto funcionamiento de PGP5, en el directorio
<tt>&tilde;/.pgp</tt>, se encontrarán los anillos de claves públicas y privadas
(<tt/pubring.pkr/ y <tt/secring.skr/ respectivamente), así como el fichero de
configuración <tt/pgp.cfg/.

En caso de tener instaladas las dos versiones de <em/PGP/ (por tanto, habremos
instalado y configurado PGP2 antes que PGP5), el fichero de configuración
<tt>&tilde;/.pgp/pgp.cfg</tt> de PGP5 lo crearemos como un enlace simbólico al
fichero de configuración <tt>&tilde;/.pgp/pgp-i.conf</tt>,

<tscreen><verb>
~/.pgp$ ln -s pgp-i.conf pgp.cfg
</verb></tscreen>

añadiendo las siguientes líneas al final del fichero
<tt>&tilde;/.pgp/pgp-i.conf</tt>:

<tscreen><verb>
PubRing = "~/.pgp/pubring.pkr"
SecRing = "~/.pgp/secring.skr"
RandSeed = "~/.pgp/randseed.bin"
</verb></tscreen>

Los ficheros con los anillos de claves de las diferentes versiones pueden
coexistir sin ningún problema en el mismo directorio.

<sect1>GnuPG
<p>

<bf/GnuPG/ es un programa con las mismas funciones que el anterior. A
diferencia de <em/PGP/, <em/GnuPG/ evita el uso de algoritmos con patentes
restrictivas. <em/PGP/ puede ser usado libremente con fines personales, pero no
comerciales, y su desarrollo es cerrado.  <em/GnuPG/ es de libre uso, y de
desarrollo abierto, al igual que nuestro sistema operativo favorito (además de
que su implementación y desarrollo es principalmente en <em/Linux/).

Las claves generadas por <em/GnuPG/ son del tipo <bf>DSA/ElGamal</bf>
(<em/Digital Signature Algorithm/, también conocido como <em/DSS/). Es
totalmente compatible con <em/PGP/, excepto en el uso de los algoritmos con
patentes restrictivas <em/RSA/ e <em/IDEA/.  No obstante, es posible
implementar cierta compatibilidad al respecto (ver GnuPG mini como en <htmlurl
url="http://www.insflug.org/documentos/GPG-Mini-Como/"
name="http://www.insflug.org/documentos/GPG-Mini-Como/"> para su configuración
e interacción con PGP2 y PGP5).

<sect>Integración de PGP y Mutt
<p>

La operación a realizar en los mensajes salientes (firmar, cifrar o ambas) se
elige justo antes de pulsar «<tt/y/» para enviar el mensaje, en el menú de
opciones que aparece con la opción «<tt/p/». Una vez elegida la operación a
realizar simplemente cambiará la linea de <em/PGP/ en la cabecera que se
muestra en pantalla, pero hasta que no enviemos el mensaje con «<tt/y/» no se
nos pedirá introducir la frase de paso para activar la firma del mensaje o las
claves publicas a utilizar para el cifrado en caso de que no coincida algún
destinatario con los que tienen clave pública en nuestro anillo de claves.

<bf/NOTA:/ En caso de que cometamos un error al introducir la frase de paso
cuando nos es solicitada, parecerá que <em/Mutt/ se queda «colgado»,
pero no será así, si no que estará esperando que la volvamos a introducir.
Para ello pulsaremos la tecla <tt/&lt;Intro&gt;/ y borraremos la contraseña de
la memoria con el juego de teclas <tt/&lt;Ctrl&gt;F/.  A continuación
repetiremos la operación de enviar el mensaje («<tt/y/») y tendremos que volver
a introducir la contraseña.

<em/Mutt/, en este caso, usará <em>PGP/MIME</em> para enviar el mensaje, de
modo que aparecerá un nuevo adjunto al mensaje con la firma (si sólo hemos
elegido firmar) o cifrará el mensaje completo (todas sus partes <em/MIME/,
adjuntos incluidos) y dejará tan solo 2 partes MIME, la primera con la versión
de PGP/MIME y la segunda con el mensaje total (adjuntos incluidos) cifrado (y
firmado si así lo solicitamos).

<bf/Nota:/ Por varios motivos, como que el lector de correo del destinatario
del mensaje no sea capaz de reconocer el formato <em/MIME/, podemos necesitar
que la firma no vaya acompañando al mensaje como un adjunto, sino que aparezca
en el mismo cuerpo del mensaje. Para este modo, ver la sección que trata sobre
<em>application/pgp</em> con <ref id="sec-app-pgp" name="PGP5"> y con <ref
id="sec-app-gpg" name="GnuPG">.

En los mensajes entrantes que vengan firmados o cifrados con <em>PGP/MIME</em>,
<em/Mutt/ intentará verificar la firma y/o descifrarlo automáticamente. Ver la
sección sobre <ref id="sec-procmail.2" name="recetas para procmail">, en donde
se comenta cómo cambiar de forma automática el tipo <em/MIME/ para los mensajes
recibidos cifrados o firmados, que no indican su tipo <em/MIME/ correctamente.

<sect1>Ficheros de configuración opcionales
<label id="sec-opcion">
<p>

En las siguientes secciones se habla sobre las modificaciones al fichero de
configuración de <em/Mutt/ para poder usar <ref id="sec-conf-pgp2"
name="PGP2">, <ref id="sec-conf-pgp5" name="PGP5">, y <ref id="sec-conf-gpg"
name="GnuPG"> con comodidad.

Para ello se usa un fichero de configuración llamaremos <tt/.gnupgp.mutt/ (el
nombre es inventado y le podríamos llamar de cualquier otro modo, siempre y
cuando <bf/indiquemos el origen/ de este fichero de configuración en el fichero
de configuración principal <tt>&tilde;/.muttrc</tt>.

Esto se hace incluyendo el origen (dónde está situado) completo del fichero de
configuración <tt/.gnupgp.mutt/, en una línea al final del fichero
<tt>&tilde;/.muttrc</tt>.  El directorio en el que situemos éste u otros
ficheros opcionales de configuración puede ser cualquiera, siempre y cuando
tengamos los permisos correctos de acceso a él (en un capítulo anterior lo
incluimos dentro del directorio <tt>&tilde;/Mail/</tt>), o podemos crear un
directorio dentro de nuestro directorio de usuario, con un nombre aleatorio:

<tscreen><verb>
~$ mkdir mutt.varios
</verb></tscreen>

en el que copiaremos (o crearemos) el fichero de configuración opcional
<tt/.gnupgp.mutt/, y a continuación indicaremos el origen en el fichero
<tt/.muttrc/ con el comando <tt/source/, del siguiente modo:

<tscreen><verb>
source ~/mutt.varios/.gnupgp.mutt
</verb></tscreen>

De este modo <em/Mutt/ aceptará las variables de configuración en
<tt/.gnupgp.mutt/ como si estuvieran directamente especificadas en
<tt/.muttrc/.

Este sistema es útil para evitar tener un fichero de configuración desordenado
y demasiado grande, y puede ser usado para poner cualquier otro grupo de
variables de configuración en otro fichero aparte.  Por ejemplo, de modo
parecido aunque no igual, si usamos <em/vim/ como el editor por defecto en
<em/Mutt/, le podemos indicar a <tt/.muttrc/ que use un fichero de
configuración <tt/.vimrc/ distinto al que usamos cuando usemos <em/vim/ sobre
la línea de comandos.  Para ello, copiaremos primero <tt>&tilde;/.vimrc</tt> a
nuestro directorio ficticio para ficheros de configuración opcionales
<tt>&tilde;/mutt.varios/</tt> y le daremos un nombre distinto (vg.
<tt/vim.mutt/):

<tscreen><verb>
$ cd /home/usuario
~$ cp .vimrc mutt.varios/vim.mutt
</verb></tscreen>

a continuación cambiaremos las variables de configuración que deseamos que sean
distintas en <em/vim/ como editor de <em/Mutt/, y finalmente modificaremos
<tt/.muttrc/ para que refleje este cambio:

<tscreen><verb>
set editor="/usr/bin/vim -u ~/mutt.varios/vim.mutt"
</verb></tscreen>

Con esta última línea estamos indicando a <tt/Mutt/ que, en lugar de usar su
editor interno por defecto, use un editor externo, <em/Vim/, con las opciones
de configuración que deseamos.

<sect1>Variables de Configuración General
<label id="sec-conf-gen">
<p>

Hay un número de variables que nos servirán para el uso de cualquiera de los
tres sistemas de cifrado público con <em/Mutt/ por igual.  Éstas variables son
del tipo booleano, y aceptan las opciones <bf/set/ (activada) o <bf/unset/
(desactivada).

En el fichero de configuración (bien sea <tt>&tilde;/.muttrc</tt>, o
<tt>&tilde;/mutt.varios/.gnupgp.mutt</tt>, o el que decidamos), el signo de
almohadilla (<bf/&num;/) es un comentario libre y no se interpreta.  Por tanto,
lo usaremos aquí delante de la aclaración a cada una de las variables:

<descrip>
<tag/unset pgp&lowbar;autosign/

&num; si esta variable está activada, <em/Mutt/ nos pedirá firmar todo el&nl;
&num; correo saliente. <ref id="uno" name="(1)">

<tag/unset pgp_autoencrypt/

&num; si esta variable está activada, <em/Mutt/ nos pedirá cifrar todo el&nl;
&num; correo saliente. <ref id="uno" name="(1)">

<tag/set pgp_encryptself/

&num; guardar una copia cifrada de todos los mensajes que se envíen cifrados&nl;
&num; (precisa de la variable de configuración general <tt/set copy=yes/).

<tag/set pgp_replysign/

&num; al responder a un mensaje firmado, requerir que el mensaje de respuesta&nl;
&num; sea también firmado.

<tag/set pgp_replyencrypt/

&num; al responder a un mensaje cifrado, requerir que nuestra respuesta&nl;
&num; también vaya cifrada.

<tag/set pgp_verify_sig=yes/

&num; ¿queremos que se verifique automáticamente las firmas de los mensajes&nl;
&num; entrantes? ¡por supuesto que sí!

<tag/set pgp_timeout=&lt;n&gt;/

&num; eliminar la contraseña de la memoria intermedia cada &lt;n&gt;&nl;
&num; segundos.<ref id="dos" name="(2)">

<tag/set pgp_sign_as=&dquot;0xABC123D4&dquot;/

&num; ¿qué clave quiero usar por defecto para firmar los mensajes salientes?&nl;
&num; <bf/Nota:/ es posible especificar un id de usuario en lugar de un id de&nl;
&num; clave, pero esto podría confundir si tenemos el mismo id de usuario&nl;
&num; para distintas claves.&nl;

<tag/set pgp_strict_enc/

&num; usar codificación «quoted-printable» siempre que PGP la&nl;
&num; requiera.

<tag/unset pgp_long_ids/

&num; no usar identificadores de claves de 64 bits, usar de 32 bits.&nl;

<tag/set pgp_sign_micalg=&lt;algo&gt;/

&num; algoritmo de comprobación de la integridad de un mensaje, en donde&nl;
&num; &lt;algo&gt; es uno de los siguientes:<ref id="tres" name="(3)">

<itemize>
<item><bf/pgp-mda5/&nl;
para claves RSA
<item><bf/pgp-sha1/&nl;
para claves DSS (DSA)
<item><bf/pgp-rmd160/&nl;
</itemize>
</descrip>

En las tres subsecciones siguientes se especificarán las variables a configurar
para cada una de las versiones.  La cuarta subsección explica los cambios en
las variables en caso de que usemos más de una versión.

(1)<label id="uno"> dado que el contínuo requerimiento por parte de <em/Mutt/
para que firmemos o cifremos todos los mensajes salientes puede representar un
inconveniente, es deseable dejar esta variable desactivada.  Esto es
especialmente así en el caso del cifrado, ya que no dispondremos de las claves
públicas de todos los destinatarios.

(2)<label id="dos"> depende del número de mensajes que firmemos o descifremos
generalmente, nos interesará mantener la contraseña en la memoria durante más o
menos tiempo.  Esta opción nos evita que tengamos que introducir la contraseña
por cada mensaje que firmemos, o por cada mensaje cifrado que leamos.
<bf/Aviso:/ mantener la contraseña en la memoria es inseguro, especialmente en
sistemas conectados a una red.

(3)<label id="tres"> esto sólo es necesario para la clave con la que hayamos
configurado para firmar.  Cuando la clave la escojamos desde el menú de
composición, <em/Mutt/ se encargará de calcular el algoritmo.

<sect1>Variables de Configuración para PGP2
<label id="sec-conf-pgp2">
<p>

Para utilizar PGP2 con <em/Mutt-i/ es necesario añadir las siguientes
líneas al fichero <tt>&tilde;/mutt.varios/.gnupgp.mutt</tt>:

<tscreen><verb>
set pgp_default_version=pgp2
set pgp_key_version=default
set pgp_receive_version=default
set pgp_send_version=default
set pgp_sign_micalg=pgp-md5
set pgp_v2=/usr/bin/pgp
set pgp_v2_pubring=~/.pgp/pubring.pgp
set pgp_v2_secring=~/.pgp/secring.pgp
</verb></tscreen>

Evidentemente, deberán existir los ficheros <tt>&tilde;/.pgp/pubring.pgp</tt> y
<tt/secring.pgp/. Más información sobre PGP2 con el comando <tt/man pgp/.

<sect1>Variables de Configuración para PGP5
<label id="sec-conf-pgp5"> 
<p>

Para utilizar PGP5 con <em/Mutt-i/ es necesario añadir las siguientes
líneas al fichero <tt>&tilde;/mutt.varios/.gnupgp.mutt</tt>:

<tscreen><verb>
set pgp_default_version=pgp5
set pgp_key_version=default
set pgp_receive_version=default
set pgp_send_version=default
set pgp_sign_micalg=pgp-sha1
set pgp_v5=/usr/bin/pgp
set pgp_v5_pubring=~/.pgp/pubring.pkr
set pgp_v5_secring=~/.pgp/secring.skr
</verb></tscreen>

Evidentemente, deberán existir los ficheros <tt>&tilde;/.pgp/pubring.pkr</tt> y
<tt/secring.pkr/. Más información sobre PGP 5 con el comando <tt/man pgp5/.

<sect1>Variables de Configuración para GnuPG
<label id="sec-conf-gpg">
<p>

Para utilizar <em/GnuPG/ con <em/Mutt-i/ es necesario añadir las siguientes
líneas al fichero <tt>&tilde;/mutt.varios/.gnupgp.mutt</tt>:

<tscreen><verb>
set pgp_default_version=gpg
set pgp_key_version=default
set pgp_receive_version=default
set pgp_send_version=default
set pgp_sign_micalg=pgp-sha1
set pgp_gpg=/usr/bin/gpg
set pgp_gpg_pubring=~/.gnupg/pubring.gpg
set pgp_gpg_secring=~/.gnupg/secring.gpg
</verb></tscreen>

Evidentemente, deberán existir los ficheros <tt>&tilde;/.gnupg/pubring.gpg</tt>
y <tt/secring.gpg/. Más información sobre GnuPG com el comando <tt/man
gpg.gnupg/, <tt/man gpgm/, y <tt/man gpg/.

<sect1>Variables de Configuración Mixta
<label id="sec-conf-mix">
<p>

En el caso que deseemos tener más de uno de los tres sistemas a la vez, es
preciso modificar algunas de las variables que hemos comentado anteriormente.
En realidad tan sólo se trata de eliminar la redundancia en la versión
configurada por defecto.

Si, por ejemplo, decidiéramos usar GnuPG como el sistema a utilizar por
defecto, todas las teclas relacionadas con PGP/GnuPG de <em/Mutt/ llamarían a
éste sistema para cualquier operación de cifrar, descifrar, firmar, verificar,
etc...&nl; Para ello debemos definir la variable de configuración
<tt/&dollar;set&lowbar;pgp&lowbar;default/ <bf/una sóla vez/, así:

<tscreen><verb>
set pgp_default_version=gpg
</verb></tscreen>

con lo cual, y para el uso conjunto de los tres sistemas, la parte
correspondiente al fichero <tt>&tilde;/mutt.varios/.gnupgp.mutt</tt> podría
quedar del siguiente modo:

<tscreen><verb>
set pgp_default_version=gpg	# versión a usar por defecto

set pgp_key_version=default	# clave que se usará por defecto, en este
				# caso la definirá gnupg

set pgp_receive_version=default	# para descodificar usará la versión que se
set pgp_send_version=default	# haya configurado por defecto (gpg)

set pgp_gpg=/usr/bin/gpg	# localización del binario de GnuPG
set pgp_gpg_pubring=~/.gnupg/pubring.gpg	# fichero de claves pub. GnuPG
set pgp_gpg_secring=~/.gnupg/secring.gpg	# fichero de claves secr. GnuPG

set pgp_v2=/usr/bin/pgp		# localización del binario de PGP2
set pgp_v2_pubring=~/.pgp/pubring.pgp		# fichero de claves pub. PGP2
set pgp_v2_secring=~/.pgp/secring.pgp		# fichero de claves secr. PGP2

set pgp_v5=/usr/bin/pgp		# localización del binario de PGP5
set pgp_v5_pubring=~/.pgp/pubring.pkr		# fichero de claves pub. PGP5
set pgp_v5_secring=~/.pgp/secring.skr		# fichero de claves secr. PGP5
</verb></tscreen>

<sect>Macros interesantes para mutt
<p>

<em/Mutt/ es altamente configurable y puede modificar su forma de trabajo de
modo muy flexible si se hace un uso adecuado de las opciones de <tt/.muttrc/.

Aquí se presentan algunas macros que ayudarán a generar firmas evitando seguir
el estándar <em>PGP/MIME</em>, para enviarlas a destinatarios que sabemos de
cierto que no pueden verificar las firmas <em>PGP/MIME</em>, y para editar el
fichero de alias y volver a cargarlo sin salir de <em/Mutt/ (aunque esto último
no está relacionado con <em>PGP/GnuPG</em>, se presenta como ejemplo para
mostrar el poder de las macros en <em/Mutt/).

Es posible indicar a Mutt las combinaciones de teclado que queremos utilizar
para las opciones de <em>PGP/GnuPG</em> que deseamos implementar en el correo
electrónico. Aun cuando algunas de estas opciones vienen configuradas por
defecto, podemos fácilmente cambiarlas o añadir otras modificando la
configuración.

<sect1>Firma sobre el propio texto del mensaje sin usar PGP/MIME con PGP5
<label id="sec-app-pgp">
<p>

Antes de la existencia de <em>PGP/MIME</em>, la firma de un mensaje iba
incluida en el cuerpo del mensaje. Este caso sigue siendo común con muchos
lectores de correo.

En caso de que queramos firmar de esta forma, tenemos dos opciones, dejar el
tipo <em/MIME/ del mensaje intacto o modificarlo como <tt>application/pgp</tt>.

Para implementar estas dos formas de firmar en <em/Mutt/, añadiremos las líneas
siguientes al fichero <tt>&tilde;/mutt.varios/mutt.macros</tt>.  Previamente,
habremos indicado el origen de este fichero de configuración opcional al
fichero de configuración principal <tt/.muttrc/; ver <ref id="sec-opcion"
name="ficheros de configuración opcionales">:

<tscreen><verb>
macro	compose	\Cp	"F/usr/bin/pgps\ny"
macro	compose	S	"F/usr/bin/pgps\ny^T^Uapplication/pgp; format=text; x-action=sign\n"
</verb></tscreen>

y de esta forma, pulsando <tt/&lt;Ctrl&gt;p/ o <tt/S/ podremos incluir la firma
digital en el adjunto del mensaje sobre el que esté situado el cursor en la
pantalla, en la que se encontrará el mensaje listo para ser enviado.

<sect1>Firma sobre el propio texto del mensaje sin usar PGP/MIME con GnuPG
<label id="sec-app-gpg">
<p>

Igual que en el caso anterior, pero con GnuPG. Las macros quedan de la
siguiente manera:

<tscreen><verb>
macro	compose \CP	"Fgpg --clearsign\ny"
macro	compose \CS	"Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n"
</verb></tscreen>

<sect1>Edición del fichero de alias y recarga del mismo
<p>

Con esta macro para incluir en <tt>&tilde;/mutt.varios/macros.mutt</tt> puedes
editar con <em/vi/ (modificando la linea puedes usar otro editor) el fichero de
alias sin salir de <em/Mutt/ pulsando <tt/&lt;Alt&gt;a/.

<tscreen><verb>
macro	index	\ea	"!vi ~/Mail/.alias\n:source =.alias\n"
</verb></tscreen>

<sect1>Más ejemplos de macros
<p>

El siguiente listado ha sido obtenido de Roland Rosenfeld y presenta macros
para cambiar el «sistema de firmado/cifrado por defecto» y firmar sin PGP/MIME
con GnuPG:

<tscreen><verb>
# ~/Mail/.muttrc.macros
# Fichero de configuración del teclado en Mutt-i
# copiado, modificado y traducido del original:
#
################################################################
# The ultimative Key-Bindings for Mutt                         #
#                                                              #
# (c) 1997-1999 Roland Rosenfeld <roland@spinnaker.rhein.de>   #
#                                                              #
# $ Id: keybind,v 1.36 1999/02/20 19:36:28 roland Exp roland $ #
################################################################
#
# Para su correcto funcionamiento, añadir al fichero de
# configuración ~/.muttrc la línea:
# source ~/Mail/.muttrc.macros
#

# Generic keybindings
# (¡para todos los menús de Mutt excepto el del paginador!)
# Con las tres siguientes podemos cambiar el sistema de cripto que
# estemos utilizando por defecto:

# <ESC>1 para GnuPG
macro   generic \e1     ":set pgp_default_version=gpg ?pgp_default_version\n"\
			"Switch to GNU-PG"

# <ESC>2 para PGP2
macro   generic \e2     ":set pgp_default_version=pgp2 ?pgp_default_version\n"\
			"Switch to PGP 2.*"

# <ESC>5 para PGP5
macro   generic \e5     ":set pgp_default_version=pgp5 ?pgp_default_version\n"\ 
			"Switch to PGP 5.*"


# index, OpMain, MENU_MAIN
# (Menú principal)
# La siguiente sólo funciona desde el menú principal (el que nos
# encontramos nada más abrir Mutt).  La combinación de las teclas
# <CTRL>K nos permite extraer las claves públicas de un mensaje si las
# hubiere (esto se sabe porque el mensaje viene precedido por la letra
# K):

macro  pager   \Ck     ":set pipe_decode pgp_key_version=pgp2\n\e\ek:set pgp_key_version=pgp5\n\e\ek:set pgp_key_version=gpg\n\e\ek:set pgp_key_version=default nopipe_decode\n"\ "Extract PGP keys to PGP2, PGP 5, and GnuPG keyrings"


# pager, OpPager, MENU_PAGER
# (Menú del Paginador)
# Permite las mismas operaciones que en el primer caso, y con las mismas
# combinaciones de claves, pero en este caso desde el menú del
# paginador:

macro   pager   \e1     ":set pgp_default_version=gpg ?pgp_default_version\n"\
			"switch to GNUPG"

macro   pager   \e2     ":set pgp_default_version=pgp2 ?pgp_default_version\n"\
			"switch to PGP 2.*"

macro   pager   \e5     ":set pgp_default_version=pgp5 ?pgp_default_version\n"\
			"switch to PGP 5.*"


# compose, OpCompose+OpGerneric, MENU_COMPOSE
# (Menú de composición)
# Las siguientes operaciones se realizan desde el menú de composición.
# Esto es, una vez hemos compuesto el mensaje y lo cerramos para
# enviarlo, justo antes de presionar la tecla "Y" que nos permita
# pasárselo al MTA.

# En este caso creamos un menú que se abre al presionar la tecla "P".
# Las opciones de este menú las ligamos a MENU_PGP. Estas son las
# opciones de uso principal (codificación y firma).

bind	compose	p	pgp-menu

# Como muchos programas no son capaces de implementar las
# espicificaciones de MIME/PGP (especialmente los de M$), las teclas
# <CTRL>P nos permitirán firmar los mensajes "a la antigua"
# (Application/PGP):

macro	compose \CP	"Fgpg --clearsign\ny"

# A continuación, <CTRL>S nos permitirá firmar "a la MIME/PGP" con la
# clave que tengamos definida por defecto.  Esta macro no es necesaria
# ya que lo mismo podemos hacer desde el menú "P":
macro	compose \CS	"Fgpg --clearsign\ny^T^Uapplication/pgp; format=text; x-action=sign\n"
</verb></tscreen>

Es posible añadir más macros, y algunas otras vienen ya configuradas por
defecto en nuevas versiones de Mutt.  Algunas otras opciones incluyen:

<itemize>
<item>&lt;CTRL&gt;K (extraer claves públicas adjuntas a un mensaje)
<item>&lt;ESC&gt;K (adjuntar una clave pública a un mensaje)
<item>&lt;CTRL&gt;F (al usar la contraseña para firmar o descodificar un
mensaje, ésta queda grabada en memoria.  De este modo podemos borrar la
contraseña de la memoria)
<item>etc...
</itemize>

Para ver qué otras opciones tenemos activadas basta con ir al menú de ayuda (?)
desde el menú en que nos encontremos.

<sect>Algunas «recetas» para Procmail

<sect1>Configuración de Procmail para devolver las claves públicas
automáticamente 
<label id="sec-procmail.1">
<p>

Aunque no es el objetivo de este Como, comentaremos que la forma más segura de
obtener la clave pública de una persona es que ella misma nos la provéa en
mano.

Como en muchas ocasiones este método no es posible (distancia que separa a los
interesados) las personas se pueden enviar por correo electrónico las claves
públicas o buscarlas en un servidor de claves, pero ninguno de los métodos
garantiza que la clave obtenida sea realmente de quien parece ser su poseedor,
a menos que mediante una comunicación de otro tipo que consideremos
«seguro» (buscar en la guia de teléfonos al propietario y pedirle que nos lea
la «huella» de su clave pública para confirmar que es la misma de la clave que
hemos obtenido por el metono no seguro).

Lo que presentamos a continuación es un ejemplo de «receta» para
añadir en <tt>.procmailrc</tt> del procesador de correo Procmail para devolver
automáticamente su clave pública al remitente cuando reciba un mensaje con un
determinado texto en la línea <tt>Asunto</tt>:

<tscreen><verb>
:0 h
* ^Subject:[ 	]+\/(|enviar)[ 	]+clave pub\>.*
| mutt -s "Re: $MATCH" `formail -rtzxTo:` &lt;/clau/miclave.asc
</verb></tscreen>

Lo que aquí dice es lo siguiente:  tenemos una copia de nuestra clave pública
en ASCII, en un directorio (en este caso el directorio <tt>/clau</tt>), en un
fichero llamado <tt>miclave.asc</tt>;  así, cuando procmail reciba un mensaje
que lleve en la línea de <tt>Asunto:</tt> (<tt>Subject:</tt>) la frase
«<bf>enviar clave pub</bf>», enviar el fichero al remitente.

IMPORTANTE: lo que va entre los corchetes es <bf>un espacio</bf> y <bf>un
tabulador</bf>.

<sect1>Verificación y descifrado automáticos de mensajes firmados sin PGP/MIME
<label id="sec-procmail.2">
<p>

Cuando recibimos un mensaje firmado digitalmente del tipo MIME/PGP y lo abrimos
en nuestro lector de correo preferido (Mutt, ¿cuál si no?), éste nos lo
reconoce como tal y comprueba la veracidad de la firma siempre que tengamos la
clave pública del firmante.  Estos mensajes son los que llevan la letra «S» al
lado:

<tscreen><verb>
36  S  05/09 Andres Seco Her ( 12K) Al fin
</verb></tscreen>

mientras los mensajes codificados llevan la letra «P»:

<tscreen><verb>
12  P  03/24 Andres Seco Her (6,3K) Re: FW: Re: Mutt - pgp/gnupg
</verb></tscreen>

Pero si el mensaje viene firmado al estilo «application/pgp», nos encontraremos
que al abrir el mensaje no habrá verificación, y éste vendrá con el texto
rodeado con la firma digital, así:

<tscreen><verb>
-----BEGIN PGP SIGNED MESSAGE-----

Date: Tue, 25 May 1999 13:04:26 +0200
From: La Corporación <bill@reboot.com>
Subject: Actualización S.O.
To: Sufrido Usuario <pepe@casa.es>


Sufrido usuario:

le comunicamos que puede usted adquirir la última actualización del
programa O.E. con la adquisición de nuestro sistema operativo reboot99
por el módico precio de ... etc.


-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: noconv

iKBGNpUBX0235VapRBUy1KklAQGl9wQA3SBMio0bbbajHAnyKMOlx3tcgNG7/UVC
AbqXcUnyGGOo13Nbas95G34Fee3wsXIFo1obEfgiRzqPzZPLWoZdAnyTlZyTwCHe
6ifVpLTuaXvcn9/76rXoI6u9svN2cqHCgHuNASKHaK9034uq81PSdW4QdGLgLoeB
vnGmxE+tGg32=
=Xidf
-----END PGP SIGNATURE-----
</verb></tscreen>

Para poder verificarlo tendríamos que guardarlo en un fichero y hacerlo desde
la línea de comandos.  Sin embargo, es posible convertir estos mensajes con
<em/Procmail/ para que <em/Mutt/ los reconozca como <em>MIME/PGP</em>.  Basta
con añadir a <tt/.procmailrc/:

<tscreen><verb>
:0
* !^Content-Type: message/
* !^Content-Type: multipart/
* !^Content-Type: application/pgp
{
    :0 fBw
    * ^-----BEGIN PGP MESSAGE-----
    * ^-----END PGP MESSAGE-----
    | formail \
        -i "Content-Type: application/pgp; format=text; x-action=encrypt"

    :0 fBw
    * ^-----BEGIN PGP SIGNED MESSAGE-----
    * ^-----BEGIN PGP SIGNATURE-----
    * ^-----END PGP SIGNATURE-----
    | formail \
        -i "Content-Type: application/pgp; format=text; x-action=sign"
}
</verb></tscreen>

Como se puede ver esto sirve tanto para los mensajes firmados como para los
cifrados con application/pgp.

<sect1>Cambio del tipo MIME para mensajes con claves públicas sin PGP/MIME
<p>

Cuando recibes una clave pública desde un MUA sin soporte PGP/MIME, debes
salvar la clave en disco y despues insertarla en tu anillo público de llaves,
pero, incluyendo estas lineas en <tt/.procmailrc/ puedes realizar la inserción
directamente desde el propio <em/Mutt/.

<tscreen><code>
    :0 fBw
    * ^-----BEGIN PGP PUBLIC KEY BLOCK-----
    * ^-----END PGP PUBLIC KEY BLOCK-----
    | formail -i "Content-Type: application/pgp-keys; format=text;"
</code></tscreen>

Gracias a Denis Alan por esta nota de <em/Procmail/.

<sect>Intercambio de mensajes firmados/cifrados entre diferentes clientes de
correo y plataformas
<p>

Inicialmente, las firmas PGP se añadian al final del texto que deseaban firmar.
Posteriormente, se incluyo el tipo MIME <tt>application/pgp</tt> para indicar
que el bloque a continuación contenia firma o cifrado PGP, y finalmente con la
especificación de PGP/MIME se consiguió separar la firma de los bloques a los
que afectaba, de modo que no fueran modificados en absoluto y alguien que no
tuviese PGP pudiese ver el mensaje exactamente como fue enviado (no cuando está
cifrado, evidentemente) sin añadidos al principio y al final de PGP.

La situación actual es tal que existen pocos clientes de correo capaces de
integrarse con PGP para ofrecer PGP/MIME, de modo que suele ser necesario
enviar mensajes firmados digitalmente de modo que con clientes de correo que no
soportan PGP/MIME puedan ser verificadas las firmas.

En Linux, los clientes de correo disponibles que cumplen la especificación
PGP/MIME son mutt-i y pine. En Windows, solo los clientes de correo Eudora en
sus versiones 3.x y 4.x soportan PGP/MIME. Si conoce otros clientes que lo
soporten esperamos su mensaje indicándonoslo, para incluirlo aquí.

<sect>Programas y versiones utilizados
<p>

Para el desarrollo de esta documentación hemos utilizado las siguientes
versiones de mutt:

<itemize>
<item>Mutt 0.93i - con esta versión de mutt no se puede utilizar GnuPG.
<item>Mutt 0.95.3i - todas las versiones de PGP y GnuPG son utilizables.
</itemize>

Y las siguientes versiones de PGP y GnuPG:

<itemize>
<item>PGPi 5.0
<item>GnuPG 0.4.3
<item>GnuPG 0.9.4
</itemize>

<sect>Más información
<p>

La documentación original a partir de la cual ha sido obtenido este documento
puede ser encontrada en las paginas man de <tt>mutt</tt>, <tt>pg</tt>,
<tt>pgp5</tt>, <tt>gnupg</tt>, <tt>procmail</tt>, en los directorios
correspondientes de /usr/doc y en las paginas de los paquetes en la world wide
web:

<itemize>
<item>Página Oficinal de Mutt - <tt><htmlurl url="http://www.mutt.org"
name="http://www.mutt.org"></tt>
<item>Página Pricipal de GnuPG - <tt><htmlurl url="http://www.gnupg.org"
name="http://www.gnupg.org"></tt>
<item>Página internacional de PGP - <tt><htmlurl url="http://www.pgpi.com"
name="http://www.pgpi.com"></tt>
<item>Página Oficinal de Procmail - <tt><htmlurl url="http://www.procmail.org"
name="http://www.procmail.org"></tt>
</itemize>

Las recomendaciones (request for comments, RFC) que hacen referencia a temas
tratados en el documento son las siguientes:

<itemize>
<item>1847 - Security Multiparts for MIME: Multipart/signed and Multipart/encripted
<item>1848 - MIME Object Security Services
<item>1991 - PGP Message Exchange Formats
<item>2015 - MIME Security with Pretty Good Privacy (PGP)
<item>2440 - OpenPGP Message Format
</itemize>

y pueden ser encontradas en /usr/doc/doc-rfc y en diversos lugares de la world
wide web, como <tt><htmlurl url="http://metalab.unc.edu"
name="http://metalab.unc.edu"></tt> y <tt><htmlurl url="http://nic.mil"
name="http://nic.mil"></tt>.  Puedes solicitar información sobre las RFCs en
<tt><htmlurl url="mailto:RFC-INFO@ISI.EDU" name="RFC-INFO@ISI.EDU"></tt>

<sect>Anexo: El INSFLUG <label id="Insflug">
<p>

El <it/INSFLUG/ forma parte del grupo internacional <it>Linux Documentation
Project</it>, encargándose de las traducciones al castellano de los Howtos,
así como de la producción de documentos originales en aquellos casos en los
que no existe análogo en inglés, centrándose, preferentemente, en documentos
breves, como los <em/COMOs/ y <em/PUFs/ (<bf/P/reguntas de <bf/U/so
<bf/F/recuente, las <it/FAQs/. <tt/:)/ ), etc.

Diríjase a la sede del Insflug para más información al respecto.

En ella encontrará siempre las <bf/últimas/ versiones de las traducciones
«oficiales»:  <tt><htmlurl url="http://www.insflug.org" 
name="www.insflug.org"></tt>. Asegúrese de comprobar cuál es la última
versión disponible en el Insflug antes de bajar un documento de un
servidor réplica. 

Además, cuenta con un sistema interactivo de gestión de fe de erratas y
sugerencias en línea, motor de búsqueda específico, y más servicios en los
que estamos trabajando incesantemente.
                                                
Se proporciona también una lista de los servidores réplica (<it/mirror/)
del Insflug más cercanos a Vd., e información relativa a otros recursos en
castellano.

En <tt><htmlurl url="http://www.insflug.org/insflug/creditos.php3"
name="http://www.insflug.org/insflug/creditos.php3"></tt> cuenta con una
detallada relación de las personas que hacen posible tanto esto como las
traducciones.

¡Diríjase a <tt><htmlurl
url="http://www.insflug.org/colaboracion/index.php3"
name="http://www.insflug.org/colaboracion/index.php3"></tt> si desea
unirse a nosotros!.

«Cartel» Insflug, <tt><htmlurl url="mailto:cartel@insflug.org"
name="cartel@insflug.org"></tt>. 
</article>
