Courier-imap vers Dovecot : "Renaming not supported across conflicting directory permissions"
Il y a des années de ça, je me suis lancé dans l'aventure de l'hébergement à la maison avec notamment la gestion de mes mails. Dès le départ, je suis parti sur de la Debian GNU/Linux et j'ai installé les outils Postfix et Courier pour gérer les couches SMTP et IMAP.
Cette semaine, j'ai remplacé Courier par Dovecot qui est plus complet, plus simple à configurer et au cœur de beaucoup de documentations. J'avais également besoin d'intégrer Sieve pour gérer des règles de tri coté serveur.
Je ne détaillerai pas la procédure de migration car j'ai pioché dans pas mal d'articles. Globalement, tout s'est très bien passé et ça été transparent pour les quelques utilisateurs du serveur. Cependant, je me suis confronté à une erreur lorsque qu'ai voulu supprimer un dossier via mon client Thunderbird :
[CANNOT] Renaming not supported across conflicting directory permissions
Après quelques recherches, il s'avère que les répertoires Maildir
des utilsateurs,
générés avec la commande maildirmake ~/Maildir
, ont un chmod 700
et que par défaut,
lors de la création d'un répertoire, son chmod est 755
. Dans la version 2.2.*
,
Dovecot vérifie que les chmod
des dossiers correspondent pour valider la suppression et
comme ce n'est pas le cas, cette erreur apparait.
Ainsi, quand un répertoire est créé dans l'arborescence de la boite mail, il ne peut
plus être supprimé sans faire un chmod 700 ~/Maildir/.LeRepertoire
. Pour résoudre
le souci et faire en sorte que le chmod soit le bon, j'ai simplement joué avec les
ACL. Pour chaque utilisateur hébergé, j'ai lancé cette commande :
$ setfacl -d --set u::rwx,g::-,o::- ~/Maildir/
Ainsi, lorsqu'un répertoire est créé dans ~/Maildir
, son chmod est par défaut en 700
et je peux le supprimer via Dovecot au travers de mon client Thunderbird !
J'en ai également profité pour faire un wrapper sur le serveur :
#!/bin/sh
maildirmake.dovecot "$1"
setfacl -d --set u::rwx,g::-,o::- "$1"