Linux

Postfix: 由於 aliases.db 權限問題,postfix 服務啟動時 newaliases 失敗

  • July 23, 2020

我最近開始將我的郵件伺服器遷移到 systemd。

我有一個別名雜湊圖:

alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases

啟動服務時:

systemctl restart postfix

無論我設置什麼權限,newalias 和 postalias 都會抱怨我的 aliases.db 權限:

● postfix.service - Postfix Mail Transport Agent
    Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
    Active: active (running) since Wed 2020-07-22 00:36:08 CEST; 22ms ago
   Process: 299515 ExecStartPre=/usr/bin/newaliases (code=exited, status=1/FAILURE)
   Process: 299518 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Main PID: 299596 (master)
       CPU: 721ms
    CGroup: /system.slice/postfix.service
            ├─299596 /usr/libexec/postfix/master -w
            ├─299597 pickup -l -t unix -u
            └─299598 qmgr -l -t unix -u

jul 22 00:36:07 rulakir systemd[1]: Starting Postfix Mail Transport Agent...
jul 22 00:36:07 rulakir newaliases[299515]: postalias: fatal: open /etc/postfix/aliases.db: Read-only file system
jul 22 00:36:07 rulakir postfix/postalias[299515]: fatal: open /etc/postfix/aliases.db: Read-only file system
jul 22 00:36:08 rulakir postfix/postfix-script[299582]: warning: group or other writable: /etc/postfix/./aliases.db
jul 22 00:36:08 rulakir postfix/postfix-script[299594]: starting the Postfix mail system
jul 22 00:36:08 rulakir postfix/master[299596]: daemon started -- version 3.5.1, configuration /etc/postfix
jul 22 00:36:08 rulakir systemd[1]: Started Postfix Mail Transport Agent.

它抱怨它只讀,但是如果我將組或所有者更改為後綴,它會抱怨它應該由 root 擁有和/或它具有寫權限。我應該給aliases和什麼權限aliases.db

Gentoo mail-mta/postfix 軟體包的systemd 服務單元預設包含強化選項,這些選項確實對服務進行沙箱處理。具體來說:

ProtectSystem=full
ReadWritePaths=-/etc/mail/aliases.db

儘管有額外的沙盒,/etc/mail/aliases.db文件應該是可寫的,這要歸功於ReadWritePaths. 從 systemd.exec 手冊頁:

保護系統=

採用布爾參數或特殊值“full”或“strict”。<…> 如果設置為“full”,則 /etc 目錄也以只讀方式掛載。

讀寫路徑=

ReadWritePaths= 中列出的路徑可以從命名空間內訪問,其訪問模式與從其外部訪問的訪問模式相同。

ReadWritePaths=、ReadOnlyPaths= 和 InaccessiblePaths= 中的路徑可能以“-”為前綴,在這種情況下,當它們不存在時將被忽略。

基於截至撰寫本文時最新的穩定 mail-mta/postfix ebuild (3.5.1),src_prepare包括sed -i -e "/^#define ALIAS_DB_MAP/s|:/etc/aliases|:/etc/mail/aliases|"將別名映射的預設位置設置在適當的位置。然而,從您的日誌中,您的似乎指向/etc/postfix/aliases.db. 我建議保留預設值/etc/mail/aliases.db或適當地覆蓋ReadWritePaths使用systemctl edit postfix.service

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