Hacia la pureza: Usando el cliente de correo mutt
Hasta hace poco, venía utilizando webmail, al principio, y Mozilla Thunderbird, después, para gestionar mi correo personal. Son buenas soluciones, pero me apetecía un poco más de control. Poder disponer de distintas réplicas de lotes de correos, navegar por ellos pero también leerlos y editarlos con lo que me de la gana. Además, las situaciones día a día pueden ser de trabajo
offline, en remoto contra la máquina que tengo en casa, o incluso
online pero sin tener acceso a esa máquina.
La idea, por tanto, es mantener una copia centralizada de todo el correo en mi casa, pero accediendo a el o manteniendo copias accesibles desde otras máquinas (mi portátil incluído). Para completar el escenario, el correo me lo descargo por pop3 desde el
hosting∞ donde estás leyendo este documento, y tengo una segunda cuenta en Gmail, también para descargar por pop3. Los correos los envío através del servidor autenticado del servicio de hosting.
Por todo ello, el cliente escogido es
mutt. Trabaja con mboxes (formato legible con cualquier editor de texto; en el fondo mozilla también lo hace, pero hay que
bucear más por el directorio de configuración), y puede ser usado en modo consola, ideal para trabajar en remoto (y con máquinas no demasiado potentes, además). Es además altamente configurable. Para descargar el correo utilizamos
fetchmail y
procmail para organizarlo. Para enviarlo, en principio valoré el usar postfix, pero para lo que necesito (smtp autenticado)
msmtp es pequeño y perfectamente válido. Como complemento,
urlview y
lynx permiten desde el mismo terminal ver información web (enlaces, páginas) que puedan incluir los correos.
Configurando mutt
Para configurar mutt, nada más fácil (y más complejo) que coger el fichero de ejemplo de la documentación, e ir retocando cada opción. El tiempo que lleva hacerlo bien motiva para sacar buenas copias de seguridad del archivo. También existen repositorios de archivos de ejemplo para diferentes situaciones, lo que nos puede facilitar mucho las cosas. así quedó mi .muttrc:
#set pop_user="prueba@dominio1.org"
ignore *
unignore From: return-path to cc subject date
hdr_order from return-path to cc subject date x-mailer
set from="prueba@dominio1.org"
set envelope_from=yes
set use_from="yes"
#Elegimos el editor de texto favorito. jmacs es la versión de joe con combinaciones de teclas de emacs.
set editor=jmacs
#Si descomentamos la siguiente opción, se visualizan los hilos de conversación
#set sort=threads
#Se puede establecer una forma complementaria de organizar los correos
#set sort_aux=date-received
#Pero finalmente me decanto por tener la conversación plana por fecha de recepción
set sort=date-received
set assumed_charset="iso-8859-1"
set confirmcreate=yes
set connect_timeout=30
set content_type="text/plain"
set copy=yes
#set header=yes
set locale="es_ES"
set pager_context=1
set pager_index_lines=6
set header_cache="/home/fran/Mail/cache"
#set header_cache="16384"
set status_format=" %r %b %f %n Del %d Msgs %m %l %> (%P)"
# Configuración del comando que ejecuta fetchmail. Con -k mantengo los correos en el servidor
macro index G "!fetchmail -k -m 'procmail -d %T'\r"
macro pager G "!fetchmail -k -m 'procmail -d %T'\r"
# Configuración de origen de la cuenta de correo que queremos usar (en conjunción con msmtp)
macro generic "<esc>1" ":set from=prueba@dominio1.org"
macro generic "<esc>2" ":set from=prueba@dominio2.com"
# Con Ctrl-b puedo ver con el browser por defecto (lynx, por ejemplo) las urls en los correos (con urlview)
macro index \cb |urlview\n
macro pager \cb |urlview\n
#mailboxes varios...
set folder = /home/fran/Mail
mailboxes /home/fran/Mail/mbox
mailboxes /home/fran/Mail/crypto
mailboxes /home/fran/Mail/forensics
mailboxes /home/fran/Mail/gpul
mailboxes /home/fran/Mail/sent
mailboxes /home/fran/Mail/spam
set mark_old=no
set mbox_type=mbox
set menu_scroll=yes
set pop_checkinterval=60
set pop_delete=ask-yes
set postponed="~/Mail/postponed"
set print_command="lp"
set quit=ask-yes
set record="~/Mail/sent"
# La firma de mis correos
set signature="~/Mail/.signature"
set send_charset="iso-8859-1:utf-8"
set digest_collapse=no
# El programa através del cual se envía el correo
set sendmail="/usr/bin/msmtp"
# Mis contactos
alias prueba Direccion de prueba <prueba@prueba.es>
Configuración de fetchmail
No me gusta demasiado tener en claro la password para bajar el correo del servidor de POP3, pero me resulta cómodo. Se puede hacer interactivo desde mutt para que un prompt pida la password y evitar el problema.
# Put here each user config
poll www.dominio1.org with proto POP3
user 'prueba@dominio1.org' there with password 'enclaro' is 'fran' here
options fetchall ssl
Configuración de procmail
Con procmail configuramos a donde va cada correo. Consultar la documentación para ver las muchas posibilidades que da este programa.
# Please check if all the paths in PATH are reachable, remove the ones that
# are not.
#
PATH=/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail # You'd better make sure it exists
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/from
SENDMAIL=msmtp
:0
* ^To:.*gpul-list*
$MAILDIR/gpul
:0
* ^To:.*crypto*
$MAILDIR/crypto
:0
* ^To:.*forensics*
$MAILDIR/forensics
# En el servidor de correo tengo funcionando spamasassin, que le añade la palabra SPAM al subject
:0
* ^Subject: *SPAM*
$MAILDIR/spam
# El resto de correo que no ha sido procesado por las anteriores instrucciones, al mbox genérico
:0
* .*
$MAILDIR/mbox
Configuración de msmtp
El correo lo envío através del mismo dominio de mi hosting en LMI (www.enelparaiso.org), configuro la cuenta para que use autenticación y tls, y que no proteste por el certificado (otra de las peculiaridades del servicio que uso es que el nombre de usuario es la dirección completa de correo,
prueba@dominio1.org y no
prueba a secas); la segunda cuenta sólo cambia el from. Podría parecer que basta con cambiarlo editando la cabecera desde mutt, pero así lo que conseguríamos es que aparecieran dos from en la cabecera del correo: la que queremos (prueba@dominio2) y la que se le añade en el proceso smtp (prueba@dominio1), lo que haría sospechoso el correo.
account default
domain dominio1.org
host www.dominio1.org
port 465
connect_timeout 30
auth login
user prueba@dominio1.org
password passwordenclaro
from prueba@dominio1.org
tls on
tls_certcheck off
tls_starttls off
syslog on
account dominio2:default
from prueba@dominio2.org
Algunos comandos de uso habitual
En el índice de un buzón:
- G: descargar correo del servidor
- m: escribir (y enviar) correo
- f reenviar un correo
- c: cambiar de buzón de correo (por defecto ofrece el buzón siguiente con correo nuevo)
- Esc-b búsqueda de una cadena de caracteres en correos del buzón
- d: marcar el correo para borrar
- u: marcar el correo para no borrar
- F: marcar correo como importante
- !: ejecutar comando de shell
- 327: ir al correo numero 327
- a: añadir una dirección a la lista de contactos
Escribiendo un correo:
- t: cambiar el destinatario
- c: añadir copias de carbón
- b: añadir copias de carbón ocultas
- s: cambiar el subject del correo
- a: adjuntar archivo al correo
- r: cambiar el reply-to
- Esc-1, 2... tal como está configurado en .muttrc, cambiar el from del correo
- e: volver a editar el cuerpo del correo
- E: editar el correo completo, incluyendo cabeceras
Leyendo un correo:
- Ctrl-b buscar urls en el cuerpo de un correo (para poder visualizarlas a continuación)
- Esc-e editar un correo ya enviado para reenviarlo como nuevo
- a añadir la dirección de origen del correo a la lista de contactos
- v ver adjuntos
- s guardar en otro buzón
Los comandos referentes a entrada de direcciones, nombres de fichero o cambio de buzones permiten autocompletado con tabulador, lo que es comodísimo :-)
Documentación
Para poner en marcha el sistema, me he basado en la
Guía de inicio rápido con Mutt∞ del proyecto Gentoo, y en las páginas man de cada uno de los programas que comento.