Oscar's Blog

Blog de Oscar Valenzuela - GNU con Linux, Free Software, Android, Hacking

Configurar Mutt como cliente de correo en Fedora

13 Aug 2012


Antiguamente utilizaba Evolution como cliente de correo, tanto para la cuenta de mi trabajo, como para mi cuenta personal, sin embargo el volumen de correos que llegaban a mi cuenta personal era superior a los 300 correos diarios, es decir, un almacenamiento de aproximadamente 3 o 4 Gigas mensuales.
Evolution como cliente funciona muy bien, pero al tener un volumen tan alto de nuevos correos, el registro interno que posee Evolution para indexar el contenido comienza a tener problemas, se corrompe y comienza a fallar seguido. Incluso en una ocasion tuve que borrar todo registro en Evolution y hacer que reindexara todo mi correo para poder continuar trabajando, lo que demora alrededor de 2 horas.
Por esto, tomé la decisión de continuar utilizando Evolution como cliente para gestionar el calendario y correo de la pega, ya que la organización donde trabajo utiliza un servidor de correo privativo, y Evolution es capaz de conectarse a ese motor utilizando DavMail. Para mi cuenta personal, decidí entonces que lo mejor era migrar a un cliente, liviano, simple y poderoso, osea, lo más cercano al ideal de cualquier Nerd, el cliente Mutt.
Hoy, debo decir que el sistema funciona excelente, y para quienes deseen probarlo, pueden utilizar la siguiente configuración. Les recuerdo que yo configuro en Fedora por lo que es posible que la configuración pueda variar entre diferentes distribuciones.

Lo primero es descargarnos el software que utilizaremos:

yum install mutt fetchmail spamassassin nano esmtp aspell aspell-es

Luego, creamos una carpeta de trabajo y algunos archivos:

mkdir ~/mail/
touch ~/mail/.aliases
touch ~/mail/.signature

En el archivo .aliases guardaremos nuestra libreta de direcciones y en .signature podremos luego agregar una firma para nuestro correo. Luego crearemos un archivo de configuracion para fetchmail, el software que nos permitirá descargar el correo y lo almacenará en nuestro directorio de trabajo.

# nano ~/.fetchmailrc
set daemon 300
set postmaster “ovalenzuela”
set bouncemail
set no spambounce
set properties “”
poll MISERVIDORPOP protocol pop3 username “NOMBREUSUARIO” password “MICLAVE” no keep fetchall mda “procmail -d %T”

Fijarse, la primera opción define el periodo cada cual el sistema verifica si hay nuevo correo. El parametro que aparece al lado de postmaster corresponde al usuario del sistema que utilizaremos. Adicionalmente deberemos cambiar MISERVIDORPOP por la ip o nombre del servidor, NOMBREUSUARIO y MICLAVE por los datos de nuestra cuenta pop3 (debemos mantener las comillas dobles).
Como notaron, utilizamos procmail para realizar la distribución, y podremos aprovecharnos de esta funcionalidad para filtrar correos mediante spamassassin. Para esto, creamos la siguiente configuración:

MAILDIR=/home/ovalenzuela/mail/
DEFAULT=$MAILDIR/mbox
LOGFILE=$MAILDIR/from-log
LOCKFILE=$MAILDIR/.lock
:0fw: spamassassin.lock
* < 256000</span>
| spamassassin
:0
* ^^rom[ ]
{
  LOG=”*** Dropped F off From_ header! Fixing up. “
  :0 fhw
  | sed -e ‘1s/^/F/’
}

Realizadas estas configuraciones, lanzamos fetchmail para que comience a descargar nuestro correo:

# fetchmail

Luego, deberemos crear una configuración adicional para el servicio esmtp, el cual será utilizado para enviar los correos.

# nano ~/.esmtprc
identity MICUENTA@CORREO
   hostname MISERVIDORSMTP:25
   starttls = enabled
   username = “MICUENTA@CORREO”
   password = “MICLAVE”
Finalmente, configuramos mutt:
nano ~/.muttrc
set folder = ~/mail/
set spoolfile = “~/mail/mbox”
set mbox = “~/mail/read”
set record=”~/mail/send”
set postponed=”~/mail/postponed”
set sort=date
set copy= yes
set mark_old= yes
set move=yes
set postpone=ask-no
set status_on_top = yes
set mail_check =5
set delete=yes
set fast_reply=yes
set editor=”nano +7″
set abort_nosubject=ask-yes
set include
set include=yes
set indent_string=”> “
set send_charset=”utf-8″
set assumed_charset=”iso-8859-1″
set quit=ask-yes
# desplazar únicamente una línea en lugar de una página entera
set menu_scroll=yes
# queremos ver algunos tipos MIME en línea, mire más abajo en esta misma
# guía para ver una explicación de esto
auto_view application/msword
auto_view application/pdf
# hacer que el patrón de búsqueda por defecto busque en los campos: To,
# Cc y Subject (destinatario, copia y asunto)
set simple_search=”~f %s | ~C %s | ~s %s”
# preferencias sobre hilos, ordenar por hilos
set sort=threads
set strict_threads=yes
# mostrar la puntuación de spam cuando se lea un mensaje (solo válido para
# SpamAssassin)
spam “X-Spam-Score: ([0-9.]+).*” “SA: %1”
set pager_format = ” %C – %[%H:%M] %.20v, %s%* %?H? [%H] ?”
# no mostrar todos los campos de la cabecera del mensaje, solo algunos
ignore          *
unignore        From To Cc Bcc Date Subject
# y en este orden
unhdr_order     *
hdr_order       From: To: Cc: Bcc: Date: Subject:
# iluminar con colores, para más ejemplos de colores, visite:
# http://aperiodic.net/phil/configs/mutt/colors
color normal      white          black
color hdrdefault  green          default
color quoted      green          default
color quoted1     yellow         default
color quoted2     red            default
color signature   cyan           default
color indicator   brightyellow   red
color error       brightred      default
color status      brightwhite    blue
color tree        brightmagenta  black
color tilde       blue           default
color attachment  brightyellow   default
color markers     brightred      default
color message     white          black
color search      brightwhite    magenta
color bold        brightyellow   default
# ajustes de personalidad
set realname = “MINOMBREREAL”
set from = “MICORREO”
alternates “MICORREO|MICORREO”
set use_from=yes
set envelope_from=”yes”
set sendmail=”/usr/bin/esmtp”
set sendmail_wait=0
# el siguiente fichero debe existir, contiene la firma, comente la línea
# si no quiere utilizar una firma
set sig_dashes
set signature = ~/mail/.signature
# alias (parecido a una libreta de contactos)
set alias_file= ~/mail/.aliases
set sort_alias= alias
set reverse_alias=yes
source $alias_file
#SOLO SI DESEAMOS UTILIZAR GNUPG
source ~/mail/crypto
# los buzones de correo en los que queremos comprobar si ha entrado correo
mailboxes “=”
mailboxes “=Lists”

Editando las variables MICORREO y MINOMBREREAL deberemos tener disponible nuestro nuevo cliente de correo configurado y funcionando. Fijarse que estamos incluyendo el archivo crypto, ahí podremos agregar nuestra configuración para utilizar gnupg, si no desean utilizarlo es cosa de comentar la linea agregando un caracter “#” o eliminarla. Un ejemplo del archivo crypto podría ser el siguiente, reemplazando los ID con los de tu clave:

set pgp_decode_command=”gpg %?p?–passphrase-fd 0? –no-verbose –batch –output – %f”
set pgp_verify_command=”gpg –no-verbose –batch –output – –verify %s %f”
set pgp_decrypt_command=”gpg –passphrase-fd 0 –no-verbose –batch –output – %f”
set pgp_sign_command=”gpg –no-verbose –batch –output – –passphrase-fd 0 –armor –detach-sign –textmode %?a?-u %a? %f”
set pgp_clearsign_command=”gpg –no-verbose –batch –output – –passphrase-fd 0 –armor –textmode –clearsign %?a?-u %a? %f”
set pgp_encrypt_only_command=”pgpewrap gpg –batch –quiet –no-verbose –output – –encrypt –textmode –armor –always-trust –encrypt-to 0x7F7F7F7F — -r %r — %f”
set pgp_encrypt_sign_command=”pgpewrap gpg –passphrase-fd 0 –batch –quiet –no-verbose –textmode –output – –encrypt –sign %?a?-u %a? –armor –always-trust –encrypt-to 0x7F7F7F7F — -r %r — %f”
set pgp_import_command=”gpg –no-verbose –import -v %f”
set pgp_export_command=”gpg –no-verbose –export –armor %r”
set pgp_verify_key_command=”gpg –no-verbose –batch –fingerprint –check-sigs %r”
set pgp_list_pubring_command=”gpg –no-verbose –batch –with-colons –list-keys %r” 
set pgp_list_secring_command=”gpg –no-verbose –batch –with-colons –list-secret-keys %r”
# specify the uid to use when encrypting/signing
set pgp_sign_as=0x7F7F7F7F
# this set the number of seconds to keep in memory the passpharse used to encrypt/sign
# the more the less secure it will be
set pgp_timeout=60
# it’s a regexp used against the GPG output: if it matches some line of the output
# then mutt considers the message a good signed one (ignoring the GPG exit code)
set pgp_good_sign=”^gpg: Good signature from”
# mutt uses by default PGP/GPG to sign/encrypt messages
# if you want to use S-mime instead set the smime_is_default variable to yes
# automatically sign all outcoming messages
set crypt_autosign
# sign only replies to signed messages
set crypt_replysign
# automatically encrypt outcoming messages
set crypt_autoencrypt=yes
# encrypt only replies to signed messages
set crypt_replyencrypt=yes
# encrypt and sign replies to encrypted messages
set crypt_replysignencrypted=yes
# automatically verify the sign of a message when opened
set crypt_verify_sig=yes
set pgp_autosign=yes

Y con esto, abrimos mutt y presionamos la tecla m para enviar un nuevo correo. El resto, pues en la ayuda de Mutt, sino este post será interminable.
Publicado originalmente por Oscar Valenzuela en http://ovalenzuela.xpertians.com – Puede ser compartido y copiado libremente, mientras mantenga esta nota.