Linux

Dovecot 升級後無法打開日誌

  • April 10, 2018

在今天早上更新的 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-2.3-1.1目前安裝的 Dovecot 軟體包以和開頭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/log775
  • 我已經禁用了 SELinuxsetenforce 0
  • 我已禁用 apparmor service apparmor stop(並已確認service apparmor status
  • 我已經嘗試將所有權更改/var/log/dovecot*maildovecot
  • 我已重命名var/log/dovecotvar/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 被拒絕打開其日誌的權限,我該如何授予它?

看起來 OpenSUSE 將 dovecot 的預設 apparmor 配置文件更新為阻止它以多種方式執行的配置文件。阻止它在 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.

我使用了ixstats 的權限,而不是Px因為沒有apparmor.d/user.lib.dovecot.stats在 中包含相應的文件/etc/apparmor.d/local,我認為最好將我的編輯限制在本地。

所有這些都已在OpenSUSE 錯誤 #1087753中註明,連結在 @Psychonaut 對該問題的評論中;OpenSUSE 可能會在未來的更新中改進預設設置。

這些都沒有解決登錄到 syslog 不起作用的問題,但上述更改似乎確實讓 dovecot 再次正常執行。

引用自:https://serverfault.com/questions/903204