
次のエラーにより、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
。
しかし、明らかに milter の設定が何らかの理由で間違っています。 /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
。これはブロック全体で繰り返されます。ブロック全体が小文字のドット区切りのファイル名に修正され、サービスが再起動します。
ただし、送信中の電子メールは、次のように postfix によってログに記録されます。
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.sock
おそらく、postfix設定と 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
これはシステム上でソケットが存在するパスですが、chroot された 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.
その後すぐに、/run/opendkim/opendkim.pid
事実上、opendkim.pid
root によって作成され、所有されるようになりました。