Con el paso del tiempo llegamos a tener cientos de MB de emails en el servidor, y una copia en cada equipo que bajaba mails de la misma cuenta vía POP. Además nos interesaba que los mails enviados desde un ordenador, pudieran ser vistos desde todos los equipos que compartían la cuenta. La solución idónea en este caso fue instalar un servidor IMAP. Con ello tenemos todos los mails centralizados en un servidor, de forma que los podemos leer siempre desde cualquier sitio. La desventaja es el no poder leerlos sin conexión (salvo que los tengamos guardados en caché).
Para ello instalé courier-imap. Al igual que qpopper no tiene mucha complicación. El mayor problema está en que necesita que los mails se guarden en formato MailDir, en lugar de MailBox. Esto se soluciona configurando el servidor de correo para que guarde los mails locales en dicho formato. Además debemos crear los directorios donde se guardarán los mails de cada usuario, con el comando maildirmake /home/usuario/Maildir, (ejecutarlo desde cada usuario, o bien ejecutarlo como root y ajustar los permisos) donde Maildir es el directorio destinado a almacenar los emails. Creando el maildir de este modo, dentro de Maildir nos aparecen varios subdirectorios: cur, new, tmp.
Si tenemos mails en formato mbox, los podemos convertir a IMAP con el script en perl mb2md, incluído en debian testing y unstable. Su uso es muy sencillo, y viene bien explicado. Si tenemos varios buzones mbox, podemos convertirlos uno a uno y meterlos en el mismo directorio IMAP.
Para que exim guarde los correos entrantes en formato maildir, tenemos que modificar lo siguiente en exim.conf
local_delivery: driver = appendfile group = mail mode = 0660 mode_fail_narrower = false envelope_to_add = true return_path_add = true directory = $home/Maildir/new #Asi indicamos donde se guardan los mails nuevos. create_directory = true ---------------------- address_directory: driver = appendfile no_from_hack prefix = "" suffix = "" maildir_format = true |
De este modo exim comprueba la carpeta que el usuario tiene asignada en /etc/passwd, y podemos tener usuarios con $homes del tipo:
/home/Mails/usuario1 /home/Mails/usuario2 /home/Mails/usuario3 /home/Mails/usuario4 |
Para los usuarios que tienen shell válida y su $home está en /home/, tras crear su directorio con maildirmake, hice un enlace simbólico del tipo:
$ ln -s /home/usuario5/Maildir /home/Mails/usuario5/Maildir |
De forma que todos los usuarios tienen sus correos bajo /home/Mails