Stockage des mails reçus

Nous avons choisi de stocker les mails au format Maildir car c’est un standard et qu’il est optimisé en terme d’accès1). Avec Dovecot, la spécification du format de stockage est très simple, elle est incluse dans la définition de l’emplacement de stockage :

  mail_location = maildir:/home/vmail/%n/Maildir

Il serait donc assez simple de changer de format de stockage (par exemple pour mbox), cependant il faudrait préalablement effectuer la conversion des anciens mails au nouveau format, ou permettre aux utilisateurs le téléchargement de ces anciens mails.

En plus de cela, il faut que le stockage des mails soit pérenne (qu’ils ne disparaissent pas à la suite de l’arrêt du conteneur MDA). Docker propose donc de conteneuriser le stockage des mails avec un Docker Volume. C’est un système de fichier qu’on peut insérer ou retirer d’un conteneur ou encore partager entre plusieurs conteneurs. Voir cet article sur les Docker Volumes pour en savoir plus.

Enfin, puisque nous contrôlons les utilisateurs avec un LDAP, nous utilisons des utilisateurs virtuels dans le sens où nous utilisons un seul utilisateur système (vmail) qui possède toutes les boîtes mails.

L’architecture du volume mail-mda-maildir est donc celle-ci :

À noter que l’utilisation d’utilisateurs virtuels peut être simplifiée2) avec Dovecot en éditant le fichier /etc/dovecot/conf.d/10-mail.conf:

mail_uid = vmail  // nom choisi pour l'utilisateur virtuel
mail_gid = vmail
1)
Une brève comparaison est effectuée sur cette page.
2)
Ainsi, l’ uid et le gid de vmail seront greffés au résultat de chaque requête au LDAP, de manière à avoir les droits d’accès (au sens de système de fichiers UNIX) aux boîtes mails.