opendkim milter 未在正確的伺服器套接字上啟動

opendkim milter 未在正確的伺服器套接字上啟動

以下錯誤阻礙了 opendkim 的重新啟動

× opendkim.service - OpenDKIM Milter
     Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2023-04-22 08:00:27 UTC; 2s ago
[...]    Process: 2295 ExecStart=/usr/sbin/opendkim (code=exited, status=78)
opendkim.service: Control process exited, code=exited, status=78/CONFIG

嘗試諮詢(未加密的,並且可能沒有更新)文檔,沒有發現任何關於status=78.
但很明顯,米爾特配置在某種程度上是不正確的。 /etc/postfix/main.cf 定義:

# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

/etc/opendkim.conf

Syslog                  yes
SyslogSuccess           yes
LogWhy                  yes

Canonicalization        relaxed/simple
Mode                    sv
SubDomains              no
OversignHeaders         From

UserID                  opendkim
UMask                   007

Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

#Nameservers            127.0.0.1
AutoRestart                     yes
AutoRestartRate                 10/1M
Background                      yes
DNSTimeout                      5
SignatureAlgorithm              rsa-sha256

ExternalIgnoreList      refile:/etc/opendkim/trusted.hosts
InternalHosts           refile:/etc/opendkim/trusted.hosts
KeyTable                refile:/etc/opendkim/key.table
SigningTable            refile:/etc/opendkim/signing.table

PidFile                 /var/run/opendkim/opendkim.pid
# UserID                  opendkim:opendkim

我注意到以下內容:
• 最初引用的 opendkim 配置ExternalIgnoreList refile:/etc/opendkim/TrustedHosts,而現有文件是/etc/opendkim/trusted.hosts.這對整個區塊重複。整個區塊被修改為小寫點分隔的檔案名,然後服務重新啟動。

但是,電子郵件在發送時會被後綴記錄為: warning: connect to Milter service local:opendkim/opendkim.sock: No such file or directory

cd /var/spool/postfix/opendkim
-bash: cd: /var/spool/postfix/opendkim: No such file or directory

我也看到沒有 pid 文件/var/run/opendkim/

smtpd_milters = local:opendkim/opendkim.sockpostfix配置和 opendkim定義之間可能存在一些問題Socket。需要改變什麼?

更新
warning: connect to Milter service local:opendkim/opendkim.sock: Permission denied仍在郵件日誌中,因此該配置元素是錯誤的。

將設定更改postfix/main.cf

smtpd_milters = local:/var/spool/postfix/opendkim/opendkim.sock

結果是: warning: connect to Milter service local:/var/spool/postfix/opendkim/opendkim.sock: No such file or directory。的存在/var/spool/postfix/opendkim/opendkim.sock被驗證。

答案1

雖然這是套接字在系統上所在的路徑,但 chrooted smtpd 實例不會在該路徑中看到它:

smtpd_milters = local:/var/spool/postfix/opendkim/opendkim.sock

Postfix smtpd 想要一條路徑相對的/var/spool/postfix/到chroot目錄,啟動後不知道路徑。

smtpd_milters = unix:opendkim/opendkim.sock

/usr/share/doc/postfix/MILTER_README您可以在和中找到詳細信息man 5 master,這裡僅引用關鍵信息,強調我的:

如果 smtpd(8) 或 cleanup(8) 程序以 chroot 方式執行,則會解釋絕對路徑名相對於 Postfix 佇列目錄。在許多系統上,local 是 unix 的同義詞

答案2

部分解決方案

sudo chown opendkim:postfix /var/spool/postfix/opendkim 需要授予 postfix 建立權限opendkim.sock

雖然opendkim.service: Can't open PID file /run/opendkim/opendkim.pid (yet?) after start: Operation not permitted發生是暫時的

Started OpenDKIM Milter.此後不久,followwoed 並被/run/opendkim/opendkim.pid有效地創建opendkim.pid為 root 所有。

相關內容