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
しかし、明らかに 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.pidroot によって作成され、所有されるようになりました。

関連情報