Debug de protocolos de email con mutt

Tratando de solucionar algunos problemas derivados de la reciente migración del servidor de correo de escomposlinux.org, he descubierto lo útil que es el modo debug que posee el cliente de correo mutt.

Para usalo, primero hay que asegurarse que mutt ha sido compilado con el modo debug activo, algo tan fácil como comprobar que +DEBUG aparece entre las opciones de compilación de mutt -v:

$ mutt -v | grep "+DEBUG"
+DEBUG

Luego es cuestion de pasar el flag -dN a mutt, donde N es el nivel de debug deseado de 1 a 5:

$ mutt -d4

La única cosa que no me convence es que la salida de debug siempre se almacena en un fichero llamado .muttdebug0 (si éste ya existía, el viejo se renombra a .muttdebug1, y así sucesivamente) en vez de poder nosotros indicar el nombre de fichero que queramos.

Lo bueno del este modo debug es que, aparte del funcionamiento interno de mutt, nos permite ver también la negociación de protocolos tales como SMTP, POP3, IMAP entre el cliente (mutt) y el servidor, lo cual es especialmente útil cuando usamos sus versiones cifradas SSL/TLS (escenario en el que usar un sniffer de red es bastante inútil). Os pongo un ejemplo de mutt hablando con el servidor de SMTP con SASL (algunos datos han sido alterados por seguridad):

[2015-04-03 14:21:47] Buscando smtp.escomposlinux.org...
[2015-04-03 14:21:47] Conectando a smtp.escomposlinux.org...
[2015-04-03 14:21:47] Connected to smtp.escomposlinux.org:587 on fd=6
[2015-04-03 14:21:48] 6< 220 gorgoroth.escomposlinux.org ESMTP Postfix
[2015-04-03 14:21:48] 6> EHLO localhost.localdomain
[2015-04-03 14:21:48] 6< 250-gorgoroth.escomposlinux.org
[2015-04-03 14:21:48] 6< 250-PIPELINING
[2015-04-03 14:21:48] 6< 250-SIZE 8192000
[2015-04-03 14:21:48] 6< 250-VRFY
[2015-04-03 14:21:48] 6< 250-ETRN
[2015-04-03 14:21:48] 6< 250-STARTTLS
[2015-04-03 14:21:48] 6< 250-ENHANCEDSTATUSCODES
[2015-04-03 14:21:48] 6< 250-8BITMIME
[2015-04-03 14:21:48] 6< 250 DSN
[2015-04-03 14:21:48] 6> STARTTLS
[2015-04-03 14:21:48] 6< 220 2.0.0 Ready to start TLS
[2015-04-03 14:21:48] SSL/TLS connection using TLS1.2 (ECDHE-RSA/AES-256-GCM/AEAD)
[2015-04-03 14:21:49] 6> EHLO localhost.localdomain
[2015-04-03 14:21:49] 6< 250-gorgoroth.escomposlinux.org
[2015-04-03 14:21:49] 6< 250-PIPELINING
[2015-04-03 14:21:49] 6< 250-SIZE 8192000
[2015-04-03 14:21:49] 6< 250-VRFY
[2015-04-03 14:21:49] 6< 250-ETRN
[2015-04-03 14:21:49] 6< 250-AUTH PLAIN LOGIN
[2015-04-03 14:21:49] 6< 250-ENHANCEDSTATUSCODES
[2015-04-03 14:21:49] 6< 250-8BITMIME
[2015-04-03 14:21:49] 6< 250 DSN
[2015-04-03 14:21:49] SASL local ip: 192.168.XXX.YYY;42053, remote ip:AA.BB.CC.DD;587
[2015-04-03 14:21:49] External SSF: 256
[2015-04-03 14:21:49] External authentication name: usuario@escomposlinux.org
[2015-04-03 14:21:49] mutt_sasl_cb_authname: getting authname for smtp.escomposlinux.org:587
[2015-04-03 14:21:49] mutt_sasl_cb_authname: getting user for smtp.escomposlinux.org:587
[2015-04-03 14:21:49] mutt_sasl_cb_pass: getting password for usuario@escomposlinux.org@smtp.escomposlinux.org:587
[2015-04-03 14:21:49] Authenticating (PLAIN)...
[2015-04-03 14:21:49] 6> AUTH PLAIN 0012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
[2015-04-03 14:21:49] 6< 235 2.7.0 Authentication successful
[2015-04-03 14:21:49] SASL protection strength: 0
[2015-04-03 14:21:49] SASL protection buffer size: 65536

De la misma manera se puede usar para hacer debugging de POP3 o IMAP (pero eso ya lo dejo como ejercicio para el lector interesado).

Naturalmente, esto se puede hacer con otras herramientas, pero es un montaje mucho más aparatoso y laborioso, mientras que usando mutt basta con un simple flag. Con la ventaja añadida que mutt conoce los protocolos y puede aportar información interna adicional si algo va mal.

Como digo, muy útil.

:wq

blogroll

social