Courier IMAP

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