Postfix

OpenDKIM / Postfix 簽署控制台發送的郵件,但不是來自郵件客戶端 / SMTP

  • December 20, 2019

我在 Debian 9 機器上執行 Postfix,並安裝了 opendkim(都來自 Debian 儲存庫)。milter 套接字/連接是 inet:localhost:8892,iptables 防火牆允許該連接(atelnet 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 上,必須手動創建它。

引用自:https://serverfault.com/questions/966176