Postfix:由于 aliases.db 权限问题,newaliases 在 postfix 服务启动时失败

Postfix:由于 aliases.db 权限问题,newaliases 在 postfix 服务启动时失败

我最近开始将我的邮件服务器迁移到 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

相关内容