Archive for March 2009

Maildir en Exim4 (rápido y limpio)

En Debian, el almacenamiento de los mails en el MTA por defecto que es Exim4, se utiliza mbox [1] que para grandes volumenes de mails no es el mas adecuado y tal como Wikipedia explica:

mbox es un término genérico para una familia de formatos de fichero que se usan para almacenar conjuntos de correos electrónicos. Todos los mensajes en un buzón mailbox están concatenados en un único fichero.

Es facil entender entonces que si a la larga tenemos mails almacenados de hace bastante tiempo, todos estaran en el mismo file en el servidor, con el tiempo el rendimiento se degrada sumado el consumo de memoria del server para mantener cada uno de los mbox de usuario.

A las falencias de este método se dió una solución, y justamente viene de la mano Maildir [2], por defecto es el almacenamiento en el archiconocido QMail [3][4].

La mayor ventaja de Maildir es que cada uno de los mails es un archivo diferente en el sistema. eso da como resultado un alto rendimiento en memoria y subsana errores comunes al manejar un solo gran archivo si usaramos mbox, el rendimiento en bruto es lo mas notable a primera vista. luego tenemos seguridad contra fallos de sectores de discos, en todo caso se perderá la porción de mails alojadas en el sector dañado.

Utilizando un file system como reiserfs [5] es mas que adecuado para archivos pequeños.

Pero pasemos al plato fuerte de este artículo, que es cómo tener Maildir en Debian Lenny con mi MTA favorito.

Los archivos implicados son 4:

  • /etc/login.defs
  • /etc/pam.d/login
  • /etc/exim4/exim4.conf.template
  • /etc/exim4/conf.d/transport/30_exim4-config_maildir_home

Tener presente que cuando hayan seleccionado el “split” de los files de configuración de Exim4 cuando ejecutaron

1
~#: dpkg-reconfigure exim4-config
~#: dpkg-reconfigure exim4-config

Tendremos que modificar los 2 últimos file con la misma data.

/etc/login.defs

Estrictamente no es necesario editar este file para que podamos usar Maildir en nuestro server, aún asi no esta de mas especificar que lo usamos, mas que nada para aplicaciones que requieran dejar correo local, un ejemplo lo tenemos en versiones viejas de fetchmail[6]

1
2
#MAIL_DIR        .Maildir/ dejamos esta linea comentada
MAIL_FILE      .Maildir/ y reemplazamos .Maildir en esta otra
#MAIL_DIR        .Maildir/ dejamos esta linea comentada
MAIL_FILE      .Maildir/ y reemplazamos .Maildir en esta otra

En el caso que esten usando Qmail como MTA, al final de este mismo archivo deben descomentar la siguiente linea.

1
#QMAIL_DIR .Maildir/
#QMAIL_DIR .Maildir/

Tengan presente que a todos los paths les he puesto un . (punto) delante de Maildir, la razón es que deseo que sea un directorio oculto, esto lo definiremos mas adelante con el comando maildirmake.

/etc/pam.d/login

Agregaremos una sola linea, debajo de “session optional pam_mail.so standard”, que quedará asi:

1
2
session    optional   pam_mail.so standard
session optional pam_mail.so standard noenv dir=.Maildir/
session    optional   pam_mail.so standard
session optional pam_mail.so standard noenv dir=.Maildir/

/etc/exim4/exim4.conf.template

Tenemos que buscar el siguiente texto:
directory = $home/.Maildir
Siempre y cuando hayan seleccionado “Maildir” en las respuestas del dpkg-reconfigure
Como en mi caso tenia

1
directory = $home/Maildir
directory = $home/Maildir

Solamente necesité agregarle el .(punto) antes de Maildir

1
directory = $home/.Maildir
directory = $home/.Maildir

/etc/exim4/conf.d/transport/30_exim4-config_maildir_home

Aqui los pasos son exactamente que en el anterior file, ambos tiene la misma información, es asi debido a que si seleccionaran hacer o no el “split” de los archivos de exim4, toma de uno u otro lugar lo que Exim4 tiene que hacer.

Listo, con eso ya tenemos un MTA funcionando con Maildir. pero queda algo importante, el software complementario, en este caso necesitamos crear los directorios para los mails. usaremos el comando maildirmake, asi que tienen que decidir queé servidor IMAP utilizarán.

Yo prefiero Dovecot [7] asi que a instalarlo.

1
~#: aptitude install dovecot-imapd
~#: aptitude install dovecot-imapd

Eso nos instalará dovecot con sus dependencias, aunque no el paquete dovecot-pop3, yo nunca uso POP3 en mis servidores.

Con el servidor IMAP instalado, disponemos de la herramienta

1
~#: maildirmake.dovecot ~/.Maildir/
~#: maildirmake.dovecot ~/.Maildir/

Que hace lo mismo que maildirmake, nada mas que esta viene incluida en Dovecot, de la misma forma que Courier (por ejemplo) tambien trae este comando como dependencia.

Tener presente que x cada usuario se debe ejecutar en su /home/~usuario/, o en su defecto como root, podemos ejecutarlo en /etc/skel, de manera que todo nuevo usuario de sistema ya tiene su repositorio de mails

Solamente nos queda editar /etc/dovecot/dovecot.conf y agregarle el .(punto) a la linea que nos informa el path de Maildir.

1
mail_location = maildir:~/.Maildir
mail_location = maildir:~/.Maildir

[1] http://es.wikipedia.org/wiki/Mbox
[2] http://es.wikipedia.org/wiki/Maildir
[3] http://es.wikipedia.org/wiki/Qmail
[4] http://www.qmail.org/
[5] http://es.wikipedia.org/wiki/ReiserFS
[6] http://fetchmail.berlios.de/
[7] http://www.dovecot.org/

Dragora RC1, una grata sorpresa.

Hoy precisamente, recordé que tenia una nueva distro argenta para probar Dragora, en estos dias pasado estuve manteniendo una charla con el creador de la misma.

Créanme, si de una distribución rápida se trata, Dragora es lo mas rápido que he probado en años, incluso a Archlinux, que es una de las mas recomendadas hoy por su perfomance. nada tiene que hacer frente a Dragora, que por supuesto para tener esa calidad sigue el conocido concepto KISS

Aún esta un poco verde todo el tema documentación/foros/wiki, etc. Pero es comprensible dado que es el desarrollo de una sola persona.

Tengo muchas ganas de colaborar, a fin de cuentas es un desarrollo Argentino, lo poco que he probado me ha satisfacido, pero como mis conocimientos en programación son casi nulos, buscaré otra forma de hacerlo. Una que sí puedo hacer ya mismo es la económica, donaré dinero para solventar gastos propios del mantenimiento, en su momento propuse hacerme cargo del pago del hosting del proyecto, actualmente usan Datatten que es una reverenda mierda.

Para los que se animen a probar, les recomiendo esta distro, tiene muchas cosas para mejorar y opino que esta bien encaminada.

Tambien creo que el desarrollador principal tiene que delegar responsabilidades, dejar que otras personas tomen la responsabilidad seria de encargarse del Wiki, foro, etc.