problemas de permissões de dotlock com o dovecot e OS X 10.10.3 ++

1

Eu instalei dovecot em OS X Yosemite via Homebrew . Mas, por algum motivo, não consigo mais que ele funcione corretamente, começando com a atualização do sistema 10.10.3 pela Apple. Há algum tipo de problema de permissão insolúvel quando se trata de criar os arquivos dotlock quando o dovecot quer acessar as caixas de entrada. Curiosamente, o postfix não tem problemas para criar os arquivos dotlock no mesmo diretório.

$ dovecot --version
2.2.18

A configuração do caminho padrão no OS X, também oficialmente suportada / documentada no wiki dovecot. Eu gostaria de mantê-lo assim, já que as atualizações do sistema geralmente alteram as permissões aqui de qualquer maneira:

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

Esta foi minha configuração inicial até OS X 10.10.2 . Eu removi várias opções irrelevantes da saída:

$ 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

Tudo estava funcionando bem até que a atualização OS X 10.10.3 aparecesse e, de repente, os erros dovecot[PID]: pop3(haru): Error: setegid(privileged) failed: Operation not permitted fossem eliminados ao buscar e-mails. Ele ainda pode buscar e-mails, mas não conseguiu excluí-los da caixa de entrada, então, a cada busca, os mesmos e-mails chegavam de novo e de novo.

Depois de muitas pesquisas e tentativas aleatórias, acabei adicionando mail_access_groups = mail à configuração do dovecot. Eu realmente não entendo o que a opção faz exatamente.

$ 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

Tudo estava funcionando bem até que a atualização de OS X 10.10.5 apareceu ontem e, de repente, todo o inferno acabou perdendo e estava falhando completamente com dovecot[PID]: pop3(haru): Fatal: setgroups(mail,) failed: Too many extra groups . Remover mail_access_groups = mail corrigiu esse erro, mas trouxe de volta os erros anteriormente descritos que começaram com 10.10.3. No final, tive que desabilitar o bloqueio do arquivo de ponto removendo a entrada dotlock padrão da opção 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

Eu sinto falta de algo aqui ou não entendo? Por que a configuração de permissão padrão (conforme descrito na documentação do dovecot) não está funcionando? Talvez seja mesmo algum tipo de incompatibilidade começando a aparecer com o OS X 10.10.3, ou algum bug no dovecot?

    
por Haru 14.08.2015 / 19:29

1 resposta

0

A falha com setgroups() vem do fato de que o usuário na máquina, onde o Dovecot é executado, tem mais de 16 grupos atribuídos a ele.

Execute id -G <user> ou id <user> como raiz (ou como usuário) para ver o número de grupos.

Infelizmente, o macOS está atribuindo uma tonelada de grupos aos usuários para executar um controle de acesso refinado para coisas como o compartilhamento de tela. Felizmente, a Dovecot tem a opção de definir intervalos de lances 'válidos'. Então você pode definir

last_valid_gid = 100

O número pode ser diferente para você.

Eu encontrei e escrevi sobre isso aqui: link

    
por 11.10.2018 / 12:12