Problèmes d'autorisations dotlock avec dovecot et OS X 10.10.3 ++

1

J'ai installé dovecot sur OS X Yosemite via Homebrew. Mais pour une raison quelconque, je ne peux plus le faire fonctionner correctement en commençant par le 10.10.3 mise à jour du système par Apple. Il existe une sorte de problème d’autorisation insoluble en ce qui concerne la création des fichiers dotlock lorsque pigeonnier souhaite accéder à la boîte de réception. Il est intéressant de noter que postfix n'a aucun problème à créer les fichiers dotlock dans le même répertoire.

$ dovecot --version
2.2.18

Le chemin par défaut configuré sous OS X, également officiellement pris en charge / documenté dans le wiki de dovecot. J'aimerais le conserver comme cela, car les mises à jour du système modifient généralement les autorisations ici de toute façon:

$ ls -lae /var/
...
drwxrwxr-x    3 root       mail        102 Aug 14 18:52 mail
...

$ ls -lae /var/mail
...
-rw-------  1 haru mail  542 Aug 14 18:53 haru
...

C'était ma configuration initiale jusqu'à OS X 10.10.2. J'ai supprimé un tas d'options non pertinentes de la sortie:

$ cat /usr/local/etc/dovecot/local.conf
protocols = pop3
listen = localhost
# Note: user _dovecot is member of the 'mail' group.
default_internal_user = _dovecot
default_login_user = _dovenull
mail_location = mbox:~/.mail:INBOX=/var/mail/%u
mail_privileged_group = mail

Tout fonctionnait bien jusqu'à la OS X 10.10.3 mise à jour est venu et tout à coup dovecot[PID]: pop3(haru): Error: setegid(privileged) failed: Operation not permitted des erreurs ont été vidées lors de la récupération des mails. Il pouvait toujours récupérer les e-mails, mais n'a pas réussi à les supprimer de la boîte de réception. Ainsi, à chaque extraction, les mêmes e-mails sont entrés encore et encore.

Après beaucoup de recherches et d'essais aléatoires, j'ai fini par ajouter mail_access_groups = mail à la config de pigeonnier Je ne comprends pas vraiment ce que l'option fait exactement.

$ cat /usr/local/etc/dovecot/local.conf 
protocols = pop3
listen = localhost
# Note: user _dovecot is member of the 'mail' group.
default_internal_user = _dovecot
default_login_user = _dovenull
mail_location = mbox:~/.mail:INBOX=/var/mail/%u
mail_privileged_group = mail
mail_access_groups = mail

Tout fonctionnait bien jusqu'à ce que le OS X 10.10.5 mise à jour est venu hier et tout à coup l'enfer s'est déchaîné et il échouait complètement avec dovecot[PID]: pop3(haru): Fatal: setgroups(mail,) failed: Too many extra groups. Enlever mail_access_groups = mail a corrigé cette erreur, mais a ramené les comportements incorrects décrits précédemment qui avaient débuté avec 10.10.3. En fin de compte, j'ai dû désactiver le verrouillage du fichier de points en supprimant le paramètre par défaut. dotlock entrée du mbox_write_locks option:

$ cat /usr/local/etc/dovecot/local.conf 
protocols = pop3
listen = localhost
# Note: user _dovecot is member of the 'mail' group.
default_internal_user = _dovecot
default_login_user = _dovenull
mail_location = mbox:~/.mail:INBOX=/var/mail/%u
mail_privileged_group = mail
mbox_read_locks = fcntl
mbox_write_locks = fcntl

Est-ce que je manque quelque chose ici ou ne parviens pas à comprendre? Pourquoi la configuration des autorisations par défaut (décrite dans la documentation de dovecot) ne fonctionne-t-elle pas? C'est peut-être même une sorte d'incompatibilité qui commence à apparaître avec OS X 10.10.3, ou un bogue dans le pigeonnier?

Haru
la source

Réponses:

0

L'échec avec setgroups() provient du fait que l'utilisateur sur la machine, où Dovecot s'exécute, a plus de 16 groupes qui lui sont attribués.

Courir id -G <user> ou id <user> en tant que root (ou en tant qu’utilisateur) pour voir le nombre de groupes.

Malheureusement, macOS assigne une tonne de groupes à des utilisateurs pour leur permettre d’exécuter un contrôle d’accès détaillé, comme le partage d’écran. Heureusement, Dovecot a la possibilité de définir des gammes de gids «valides». Afin que vous puissiez définir

last_valid_gid = 100

Le nombre peut être différent pour vous.

Je viens de courir dans cette histoire et écrit à ce sujet ici: http://pilhuhn.blogspot.com/2018/10/solution-for-dovecot-and-setgroups.html

Heiko Rupp
la source