Postfix: 由於 aliases.db 權限問題,postfix 服務啟動時 newaliases 失敗
我最近開始將我的郵件伺服器遷移到 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
。