Debian テスト/ストレッチで opendkim ソケットを設定する方法

Debian テスト/ストレッチで opendkim ソケットを設定する方法

これはすべてDebianテストにあります(=これまで)。
設定しようとしていますが、opendkim目的のソケットは使用されません。

に基づいてから設定できますman opendkim.conf。また、Jessieのボックスから見たファイルを生成してみましたが、やはり動作しませんでした。Socket/etc/opendkim.conf
/etc/default/opendkim

だから、次の行を入力してみました/etc/opendkim.conf

Socket  inet:39172@localhost

今によると、/etc/init.d/opendkimファイルを読みます。

if [ -f /etc/opendkim.conf ]; then
  CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf`
fi

私が見るにはこれまでは大丈夫です。しかし、すぐ後に続く次のコードスニペットは、現在読んだ情報をダンプするようです。

# This can be set via Socket option in config file, so it's not required
if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then
    DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS"
fi

DAEMON_OPTS="-x /etc/opendkim.conf -u $USER -P $PIDFILE $DAEMON_OPTS"

私はこれが何をすべきかを本当に理解していません。$CONFIG_SOCKETブートをしてみたことがないですopendkimよね?それでは、そもそも設定ファイルを読む必要があるのはなぜですか?

/etc/systemd/system/multi-user.target.wants/opendkim設定がロードされていないファイルもあることがわかりました。
重要な場合は、再起動するには、を入力opendkimしますservice opendkim restart

ソケットを読んだことを確認するために確認することは telnet localhost 39172次のとおりConnection refusedです/var/log/syslog

 opendkim[8343]: OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)

私の質問は次のとおりです Debian テスト/ストレッチで opendkim のソケットをどのように設定する必要がありますか?

これは、上記のスクリプトがどのように機能するかについての謎を解決することもできます。

答え1

正しく設定しましたが、これを無視するDebian Stretchの未解決のバグです。

望むより:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864162

答え2

もちろん、システムユニットの編集はベストプラクティスではありません。私たちはこうする必要があります:

sudo systemctl edit opendkim

そして、以下を挿入してください:

[Service]
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock

(デュアルExecStartに注意してください。これはタイプミスではありません。)

答え3

上記のファイルを編集してこの問題を解決しました/etc/systemd/system/multi-user.target.wants/opendkim。これがベストプラクティスであるかどうかはわかりませんが、設定がハードコーディングされているようで、他の選択肢はありません。

ファイルの内容(現在ランダムポート39172の代わりにUnixソケットを使用しています):

[...]
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/var/run/opendkim/opendkim.sock
[...]

/var/spool/postfix/var/run/opendkimディレクトリを作成して所有権を付与する必要がありましたopendkim:opendkim。ファイルを変更した後に実行し、systemctl daemon-reload新しいservice opendkim restartソケットが認識されました。その後、権限(Umask 002in /etc/opendkim.conf)を変更し、postfixはmilterにアクセスできるようになりました。

関連情報