1

Я установил dovecot на OS X Yosemite через Homebrew . Но по какой-то причине я больше не могу заставить его работать должным образом, начиная с обновления системы 10.10.3 от Apple. Существует некоторая неразрешимая проблема с разрешениями, когда дело доходит до создания файлов с точками блокировки, когда dovecot хочет получить доступ к INBOX. Интересно, что у postfix нет проблем с созданием файлов с точками в той же директории.

$ dovecot --version
2.2.18

Настройка пути по умолчанию в OS X, также официально поддерживается / документируется в вики dovecot. Я бы хотел оставить это так, поскольку системные обновления обычно меняют права доступа здесь в любом случае:

$ 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
...

Это была моя первоначальная настройка до OS X 10.10.2 . Я удалил кучу ненужных опций из вывода:

$ 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

Все работало нормально, пока не появилось обновление OS X 10.10.3 и внезапно dovecot[PID]: pop3(haru): Error: setegid(privileged) failed: Operation not permitted ошибки, были сброшены при получении почты. Он все еще мог получать почту, но не мог удалить их из INBOX, поэтому при каждой загрузке одни и те же письма приходили снова и снова.

После долгих исследований и случайных попыток я добавил mail_access_groups = mail в конфигурацию dovecot . Я действительно не понимаю, что именно делает этот вариант.

$ 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

Все снова работало нормально, пока вчера не появилось обновление OS X 10.10.5 и вдруг весь ад сломался, потерпел неудачу и полностью потерпел неудачу с dovecot[PID]: pop3(haru): Fatal: setgroups(mail,) failed: Too many extra groups . Удаление mail_access_groups = mail исправило эту ошибку, но вернуло ранее описанные ошибки, которые начинались с 10.10.3. В конце концов мне пришлось отключить блокировку dotlock файла, удалив запись о точечной блокировке по умолчанию из опции mbox_write_locks :

$ 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

Я что-то здесь скучаю или не понимаю? Почему настройка разрешений по умолчанию (как описано в документации dovecot) не работает? Возможно, это даже какая-то несовместимость, начинающая появляться с OS X 10.10.3, или какая-то ошибка в dovecot?

1 ответ1

0

Ошибка setgroups() связана с тем, что пользователю на компьютере, на котором работает Dovecot, назначено более 16 групп.

Запустите id -G <user> или id <user> root (или от имени этого пользователя), чтобы увидеть количество групп.

К сожалению, macOS назначает кучу групп пользователям для запуска детального контроля доступа для таких вещей, как совместное использование экрана. К счастью, у Dovecot есть возможность установить диапазоны «допустимых» показателей. Таким образом, вы можете установить

last_valid_gid = 100

Номер может отличаться для вас.

Я только столкнулся с этим и написал об этом здесь: http://pilhuhn.blogspot.com/2018/10/solution-for-dovecot-and-setgroups.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .