Em um host OpenSUSE Tumbleweed, atualizado esta manhã. Após a atualização e reinicialização, todas as tentativas de iniciar o dovecot falham comCan't open log file /var/log/dovecot: Permission denied
cat /etc/os-release
inclui VERSION_ID="20180314"
/usr/sbin/dovecot --version
rendimentos2.3.0.1 (ffd8a29)
Os pacotes Dovecot atualmente instalados começam com dovecot-2.3-1.1
e dovecot23-2.3.0.1-2.1
. Não tenho certeza de qual versão foi instalada antes da atualização, mas não pode ter mais de uma semana. A atualização não gerou nenhum .rpmnew
arquivo semelhante.
Nada /etc/dovecot
mudou em mais de um ano, e esse problema é novo hoje.
As linhas sem comentários de /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot
auth_verbose = yes
auth_verbose_passwords = no
auth_debug = no
auth_debug_passwords = no
mail_debug = yes
plugin {
}
log_timestamp = "%Y-%m%b-%d%a.%H-%M-%S.%Z"
- Eu relaxei as permissões
/var/log/dovecot*
para777
- Eu relaxei as permissões
/var/log
para775
- Desativei o SELinux com
setenforce 0
- Desativei o apparmor com
service apparmor stop
(e confirmei comservice apparmor status
) - Eu tentei mudar a propriedade de
/var/log/dovecot*
paramail
edovecot
- Eu mudei o nome
var/log/dovecot
paravar/log/dovecot.old
saída de ls -al /var/log/dovecot*
:
-rwxrwxrwx 1 root root 10666 Aug 16 2016 /var/log/dovecot.debug
-rwxrwxrwx 1 root root 1483 Aug 16 2016 /var/log/dovecot.info
-rwxrwxrwx 1 root root 34118709509 Mar 17 12:28 /var/log/dovecot.old
O volume não está cheio (64%).
Por que o dovecot teve permissão negada para abrir seu log, e como faço para concedê-lo?
Responder1
Parece que o OpenSUSE atualizou o perfil apparmor padrão do dovecot para um que o impede de funcionar de várias maneiras. Impedir que ele registre fora do syslog parece ser intencional, mas esse não é claramente o caso com os outros.
Para restaurar a funcionalidade, tive que adicionar permissões em vários arquivos em /etc/apparmor.d/local/
:
usr.lib.dovecot.auth
/run/dovecot/old-stats-user w,
usr.lib.dovecot.config
/var/lib/dovecot/ssl-parameters.dat r, capability dac_read_search,
usr.lib.dovecot.log
/var/log/dovecot w,
usr.sbin.dovecot
/usr/lib/dovecot/stats ix, /var/log/dovecot w,
A w
permissão é necessária para logs porque o apparmor nega ac
e, pelo que sei, não há como permitir permissão para arquivos c
. Não consegui encontrar nenhuma indicação de que exista documentação com uma lista de permissões abertas; portanto, pode haver outra maneira de permitir "criar e anexar" diferente de w
.
Usei a ix
permissão para estatísticas em vez de Px
porque não há como apparmor.d/user.lib.dovecot.stats
incluir o arquivo correspondente em /etc/apparmor.d/local
, e achei melhor limitar minhas edições ao local.
Tudo isso foi notado emBug #1087753 do OpenSUSE, vinculado no comentário do @Psychonaut sobre a questão; é possível que o OpenSUSE melhore os padrões em uma atualização futura.
Nada disso resolve o problema de que o log no syslog não funciona, mas as alterações acima parecem fazer com que o dovecot funcione normalmente novamente.