16 de Enero, 2007

Un par de hacks para mail

Hace tiempo que vengo usando el venerable mail(1) de OpenBSD para leer el correo fuera de casa. Es muy rudimentario, pero básicamente no necesito más y puedo usarlo sin problemas vía SSH con cualquier conexión por cutre que sea.

Aunque esto no es del todo cierto :(. Habían un par de cosas que hacían que su uso fuera incómodo. Tanto que ya estaba pensando en instalar un programa más potente para leer el correo vía terminal de texto, pero unos son bastante inseguros, y otros muy complicados de usar (aunque todo es ponerse, sino no usaría mail).

Ojeando un poco el código, al final no ha hecho falta instalar nada ;).

En realidad eran dos minucias, que paso a enumerar:

  • Yo no uso us-ascii: el cliente no implementa los añadidos MIME, muy recientes si los comparamos con la edad de mail ;). Tiene sentido, porque en aquella época todo Internet estaba en USA :D.

    Pero las cosas cambian, y yo escribo mis correos con acentos empleando iso-8859-1. Cuando un cliente de correo recibe uno de mis mensajes no lo sabe, y por lo tanto no se visualizan bien los correos si no coincide que usamos el mismo juego de caracteres.

    Esto se soluciona implementando las cabeceras MIME mínimas para indicar el juego de caracteres: MIME-Version y Content-Type.

    Sería añadir algo así:

    MIME-Version: 1.0
    Content-Type: text/plain; charset=CHARSET; format=fixed

    Solo tenemos que indicar en CHARSET un código válido para el juego de caracteres que usamos (como iso-8859-1, o utf-8 si lo usara) y listo. Además el atributo opcional format nos permite indicar que usamos una fuente de ancho fijo y que no esperamos que el cliente que muestra el correo agrupe por párrafos, por ejemplo.

  • Las refencias a los mensajes en la respuesta son útiles: esto es gracias a la cabecera In-Reply-To, donde los clientes de correo pueden indicar el Message-Id (otra cabecera, esta no es opcional) del correo al que se responde, de forma que los programas puedan agrupar mensajes por conversaciones. Mail no se preocupa de esto, y al mandar mensajes a listas de correo, era un inconveniente porque rompía los hilos de discusión :(.

He tardado poco, unos 15 minutos en ver cómo iba el fuente (muy clarito, por cierto), y otros 15 en meter las lineas de código necesarias.

Para que se añada el tipo MIME hay que indicar en $HOME/.mailrc el valor de charset a usar, por ejemplo:

set charset=iso-8859-1

La inclusión de la cabecera In-Reply-To es automática al responder, así que en esa parte no hay que hacer nada.

Si a alguien le interesa, aquí hay un parche. Es muy simple, y creo que no tiene ningún fallo fundamental (pese a que ahora veo que hay una variable declarada que finalmente no he usado :P).

Actualización: he limpiado el parche quitando la variable que no se usaba ;).

Anotación por Juan J. Martínez, clasificada en: openbsd, free software.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: