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/
