Debian
如何在 Debian 測試/拉伸上為 opendkim 配置套接字
這一切都在 Debian 測試中(= 到目前為止的 Stretch)。
我正在嘗試配置
opendkim
,但它不會使用我想要的套接字。根據
man opendkim.conf
,Socket
可以配置在/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 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 Testing/Stretch 上為 opendkim 配置套接字?
這可能也解決了上面的腳本應該如何工作的謎團。
您正在正確配置它,但這是 Debian Stretch 的一個開放錯誤,它忽略了配置:
編輯 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 - 這不是錯字)