我最近开始将我的邮件服务器迁移到 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.
它抱怨它是只读的,但如果我将组或所有者更改为 postfix,它会抱怨它应该由 root 拥有和/或它具有写入权限。我应该赋予aliases
和什么权限aliases.db
?
答案1
Gentoo mail-mta/postfix 包的系统服务该单元默认包含强化选项,确实可以对服务进行沙盒处理。具体来说:
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