OpenDKIM / Postfix 簽署控制台發送的郵件,但不是來自郵件客戶端 / SMTP
我在 Debian 9 機器上執行 Postfix,並安裝了 opendkim(都來自 Debian 儲存庫)。milter 套接字/連接是 inet:localhost:8892,iptables 防火牆允許該連接(a
telnet localhost 8892
成功)。但是,如果我從控制台(帶有 )發送電子郵件,我只會收到簽名消息
mail -s "testing DKIM" my-address@not-the-same-domain
,但如果我從 Thunderbird 發送電子郵件則不會。請注意,對於 Thunderbird,我使用 ssh 隧道,以便郵件伺服器將連接視為源自 localhost。(也就是說,在我的桌面上,我執行ssh -Llocalhost:2525:my-server:25 tunnel@my-server
,並告訴 Thunderbird 外發郵件伺服器是 localhost,埠 2525。這是我從控制台發送時得到的簽名範例:
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=[omitted -- but it shows the correct domain]; s=mail; t=1557228588; bh=slJTHzrIw+6TkIIPpFmGER34xtLwMLZ2md99gvHoFTE=; h=To:Subject:Date:From:From; b=jtOM5OOM83l [ ··· several lines of "gibberish" ··· ] 4qdpSt4l86DEA==
關於可能導致此問題的任何想法?
**$$ [EDIT $$]**問題變得更加令人費解。在檢查日誌時,我注意到一個警告
external host XXXX.my-service-provider.com
試圖發送為my-domain.com
我調整了
/etc/hosts
,/etc/hostname
… 最後我意識到我必須調整反向 DNS 查找,我做到了。現在,該命令hostname
以 FQDN(我正在為其配置 DKIM 的正確域)響應。現在,
/var/log/syslog
當我發送電子郵件時,我收到了消息external host *the-correct-FQDN* attempted to send as *the-correct-FQDN*
。並且傳輸的消息不包含 DKIM 簽名。如果我這樣做
telnet localhost 25
了,用 問候 SMTP 伺服器helo the-correct-FQDN
,該消息是 DKIM 簽名的;日誌顯示來自的連接localhost (127.0.0.1)
負責傳輸。有任何想法嗎?
$$ [ END EDIT $$]
原來問題是由於缺少 InternalHosts 參數引起的。對於Debian 9(2.11)上的opendkim目前版本,我解決瞭如下:
編輯文件
/etc/opendkim.conf
並添加以下行:InternalHosts file:/etc/opendkim-trustedhosts.conf
然後,該文件
/etc/opendkim-trustedhosts.conf
包含:127.0.0.1 x.x.x.x (the actual public IP of the server)
瞧——重新啟動,問題就解決了!
我注意到與我在那裡發現的其他資訊的一些差異 — 從我所看到的,在 CentOS 上(不確定是舊版本還是仍然這樣),預設配置是:有一個目錄
etc/opendkim
,並且在那個目錄裡面有,除其他外,一個文件TrustedHosts.conf
;該文件/etc/opendkim.conf
已經具有InternalHosts
指向 TrustedHosts 文件的指令。在 Debian 9 上,必須手動創建它。