これはすべて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 002
in /etc/opendkim.conf
)を変更し、postfixはmilterにアクセスできるようになりました。