Systemd 单元仅在服务重启时应用用户、组和 RuntimeDirectoryMode 设置

Systemd 单元仅在服务重启时应用用户、组和 RuntimeDirectoryMode 设置

我在 VPS 上使用 Fedora 28 x64。我已将 postfix 设置为仅发送邮件服务器,并使用 OpenDKIM 来签署外发电子邮件。

Postfix 通过 unix 套接字设置连接到 OpenDKIM/run/opendkim/opendkim.sock

权限/run/opendkim/如下

drwx------. 2 opendkim opendkim 80 Jul 13 00:05 opendkim

为了使 Postfix 连接到 OpenDKIM milter,我已在 OpenDKIM 单元文件中更改Group为并添加.这是整个文件。postfixRuntimeDirectoryMode=0750opendkim.service

地点:/usr/lib/systemd/system/opendkim.service

[Unit]
Description=DomainKeys Identified Mail (DKIM) Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html
After=network.target remote-fs.target nss-lookup.target syslog.target

[Service]
Type=forking
User=opendkim
Group=postfix
PIDFile=/run/opendkim/opendkim.pid
EnvironmentFile=-/etc/sysconfig/opendkim
ExecStart=/usr/sbin/opendkim $OPTIONS
ExecReload=/bin/kill -USR1 $MAINPID
RuntimeDirectory=opendkim
RuntimeDirectoryMode=0750

[Install]
WantedBy=multi-user.target

我面临的问题是,仅当我手动重新启动 OpenDKIM 服务时才应用 , , 值User。OpenDKIM 可以通过.GroupRuntimeDirectoryModesystemctl enable opendkim

但重启VPS后,目录权限是一样的。

drwx------. 2 opendkim opendkim 80 Jul 13 00:05 opendkim

我必须运行systemctl restart opendkim才能将权限更改为

drwxr-x---. 2 opendkim postfix 80 Jul 13 00:05 opendkim

知道为什么会发生这种情况吗?我这里缺少什么吗?

答案1

opendkim 包包含一个 systemd-tmpfiles 配置,它/run/opendkim在启动时创建目录并设置其所有权和权限。

[root@localhost ~]# cat /etc/tmpfiles.d/opendkim.conf
D /var/run/opendkim 0700 opendkim opendkim -

因此,您对 systemd 服务单元的自定义将在启动时被覆盖。


根据教程从随包附带的 README.fedora 链接,您应该让 Postfix 通过端口 8891 上的本地 TCP 套接字(而不是通过其 UNIX 套接字)与 OpenDKIM 通信。所以不需要改变临时目录的权限。不过,您确实需要更改您的 Postfix main.cf

smtpd_milters           = inet:127.0.0.1:8891

您还应该将 opendkim 配置恢复为其出厂默认值。

##  Create a socket through which your MTA can communicate.
Socket  inet:8891@localhost

相关内容