Debian

如何在 Debian 測試/拉伸上為 opendkim 配置套接字

  • June 30, 2017

這一切都在 Debian 測試中(= 到目前為止的 Stretch)。

我正在嘗試配置opendkim,但它不會使用我想要的套接字。

根據man opendkim.confSocket可以配置在/etc/opendkim.conf.

我也嘗試過創建/etc/default/opendkim我在 Jessie 框中看到的文件,但這也不起作用。

因此,我嘗試在以下行中輸入/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 配置套接字?

這可能也解決了上面的腳本應該如何工作的謎團。

您正在正確配置它,但這是 Debian Stretch 的一個開放錯誤,它忽略了配置:

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

編輯 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 - 這不是錯字)

引用自:https://unix.stackexchange.com/questions/351584