Fedora

Systemd 單元僅在服務重新啟動時應用使用者、組和 RuntimeDirectoryMode 設置

  • July 21, 2018

我在 VPS 上使用 Fedora 28 x64。我已經使用 OpenDKIM 將 postfix 設置為僅發送郵件伺服器,用於簽署傳出電子郵件。

Postfix 通過 unix socket setup 連接到 OpenDKIM/run/opendkim/opendkim.sock

權限/run/opendkim/如下

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

為了讓 Postfix 連接到 OpenDKIM milter,我在 OpenDKIM 單元文件中更改Group為並添加了. 這是整個文件。postfix``RuntimeDirectoryMode=0750``opendkim.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

我面臨的問題是User, Group,RuntimeDirectoryMode值僅在我手動重新啟動 OpenDKIM 服務時應用。OpenDKIM 已啟用以在系統啟動時通過systemctl 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

知道為什麼會這樣嗎?我在這裡缺少什麼嗎?

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 套接字與 OpenDKIM 對話,而不是通過其 UNIX 套接字。因此無需更改臨時目錄的權限。您確實需要更改您的 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

引用自:https://unix.stackexchange.com/questions/454960