web-dev-qa-db-ja.com

Debian Testing / Stretchでopendkimのソケットを構成する方法

これはすべてDebianテストに関するものです(=現在のところストレッチ)。
opendkimを設定しようとしていますが、必要なソケットを使用しません。

man opendkim.confによると、Socket/etc/opendkim.confで設定できます。
Jessieボックスに表示されているように、ファイル/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 39172Connection 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 Testing/Stretchでopendkimのソケットをどのように構成する必要がありますか?

これはおそらく、上記のスクリプトがどのように機能するかについての謎も解決します。

6
Pharaoh

正しく構成していますが、これは構成を無視するDebian Stretchの未解決のバグです。

参照: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864162

5
Torrance

もちろん、systemdユニットの編集はベストプラクティスではありません。ここに私たちが行くべき方法があります:

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
Dmitry Zagainov

上記のファイル/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-reloadservice opendkim restartを実行したところ、新しいソケットが認識されました。次に、権限を変更し(Umask 002/etc/opendkim.conf)、postfixがmilterにアクセスできるようになりました。

1
Pharaoh