En utilisant Dovecot, j'ai rencontré un problème assez troublant en ce qui concerne la purge des boîtes de réception. Voici ma configuration :
- Dovecot stocke ses utilisateurs/boîtes aux lettres sur un backend MySQL.
- Postfix gère les transmissions de courrier électronique, et s'appuie sur Dovecot pour l'authentification.
- Les boîtes de réception sont stockées dans
/var/mail/domain/user
.
C'est la configuration de base. Imaginez maintenant le scénario suivant :
- Je crée un utilisateur dans ma base de données (disons johndoe@mydomain.tld ), et commencez à envoyer et à recevoir des e-mails. Aucun problème, tout se passe bien.
- Je n'ai plus besoin de mon utilisateur, je le supprime simplement de la base de données, plus d'utilisateur.
Mais voilà le problème... En ce moment, /var/mail/mydomain.tld/johndoe
) existe toujours. Imaginez maintenant :
- Un autre John Doe apparaît, et il veut une boîte de réception. J'ajoute johndoe@mydomain.tld à la base de données, super, ça marche !
Ce qui est amusant, c'est que l'ancien John Doe n'a pas supprimé ses e-mails avant de partir, et que le nouveau John Doe a eu accès au contenu de l'ancienne boîte aux lettres (comme les adresses sont les mêmes, on lui a donné le même emplacement de boîte aux lettres). Espérons que l'inconnu numéro 1 n'a pas laissé d'informations d'identification, de carte de crédit ou autre dans sa boîte de réception...
Voici donc ma question : Existe-t-il un moyen approprié de supprimer les boîtes de réception réelles lors de la suppression d'un utilisateur Dovecot ? Dans mon exemple, je voudrais /var/mail/mydomain.tld/johndoe
à supprimer lorsque le premier John Doe disparaît (étape 2, au redémarrage du service peut-être ?). Maintenant, je pourrais faire cela de manière programmatique en utilisant mon application frontale (une application PHP qui remplit le backend MySQL), mais cela créerait un désordre avec les permissions (permettre à l'utilisateur web d'accéder aux boîtes aux lettres, non merci !)