На хосте OpenSUSE Tumbleweed, обновленном сегодня утром. После обновления и перезагрузки каждая попытка запустить dovecot заканчивается неудачейCan't open log file /var/log/dovecot: Permission denied
cat /etc/os-release
включает в себя VERSION_ID="20180314"
/usr/sbin/dovecot --version
урожайность2.3.0.1 (ffd8a29)
Установленные в настоящее время пакеты Dovecot начинаются с dovecot-2.3-1.1
и dovecot23-2.3.0.1-2.1
. Я не уверен, какая версия была установлена до обновления, но она не могла быть старше недели. Обновление не создало никаких .rpmnew
или похожих файлов.
Ничего не /etc/dovecot
изменилось за год, а эта проблема возникла сегодня.
Строки без комментариев /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"
- Я ослабил разрешения
/var/log/dovecot*
на777
- Я ослабил разрешения
/var/log
на775
- Я отключил SELinux с помощью
setenforce 0
- Я отключил apparmor с помощью
service apparmor stop
(и подтвердил с помощьюservice apparmor status
) - Я пробовал изменить владельца на
/var/log/dovecot*
иmail
dovecot
- Я переименовал
var/log/dovecot
вvar/log/dovecot.old
выход 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
Объем не полный (64%).
Почему Dovecot не разрешает открывать свой журнал?, и как мне его предоставить?
решение1
Похоже, OpenSUSE обновил профиль apparmor по умолчанию для dovecot на тот, который препятствует его работе несколькими способами. Запрет на ведение журнала за пределами syslog, похоже, был преднамеренным, но это не совсем относится к остальным.
Для восстановления функциональности мне пришлось добавить разрешения в нескольких файлах /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,
Разрешение w
необходимо для журналов, поскольку apparmor отклоняет, ac
и, насколько я могу судить, нет способа разрешить разрешение для c
. Я не смог найти никаких указаний на то, что существует документация со списком открытых разрешений, поэтому может быть другой способ разрешить «создание и добавление», кроме w
.
Я использовал ix
разрешение для статистики, а не Px
потому, что нет возможности apparmor.d/user.lib.dovecot.stats
включить соответствующий файл в /etc/apparmor.d/local
, и я подумал, что лучше ограничить свои правки локальными данными.
Все это было отмечено вОшибка OpenSUSE № 1087753, ссылка на который есть в комментарии @Psychonaut к вопросу; возможно, OpenSUSE улучшит настройки по умолчанию в будущем обновлении.
Ничто из этого не решает проблему, связанную с тем, что ведение журнала в syslog не работает, но вышеуказанные изменения, похоже, позволили dovecot снова нормально функционировать.