我正在使用 sendmail 從我的 Debian 伺服器發送郵件。我希望能夠使用 genericstable 進行偽裝來發送具有多個網域的郵件。我正在使用 OpenDKIM 簽署郵件,但由於 OpenDKIM 在偽裝發生之前簽署郵件,因此金鑰不符。
OpenDKIM 在其上解決了這個問題自述文件頁面
由於 milter 協定合併到 MTA 的方式,opendkim 在根據這兩個功能的要求修改標頭之前會看到標頭。這意味著 DKIM 簽章是根據郵件用戶端最初注入的標頭產生的,而不是根據 MTA 實際發送的標頭產生的。結果,接收方的驗證代理將無法驗證簽名,因為簽署的資料和接收到的資料不符。
針對此問題的建議解決方案是:
(1) 發送郵件時已根據需要編寫了標頭,從而不再需要這些功能(或直接將其關閉)。
(2) 設定兩個 MTA,可以在不同的盒子上,也可以在同一個盒子上。第一個 MTA 應該執行所有重寫(即使用這兩個功能),第二個 MTA 應該使用 opendkim 添加簽名並且根本不進行重寫。
(3) 設定檔中有多個 DaemonPortOptions 行。第一個守護程式連接埠(連接埠 25)進行標頭重寫,然後將訊息路由到第二個連接埠;後者不進行重寫,而是進行簽名,然後按原樣發送訊息。
我想使用第三種解決方案來解決問題,但我不知道如何開始。由於某些原因,我不想使用第一個解決方案。
我的 sendmail.mc 檔案中目前的 DeamonPortOptions 是
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea')dnl
是否可以將我的 sendmail 設定為使用 1 個連接埠進行偽裝,使用另一個連接埠新增 DKIM 並按照自述文件的建議進行傳送?
任何幫助將不勝感激!
答案1
我能夠透過在我的submit.mc
/submit.cf
配置中添加偽裝功能和設定來解決這個問題。這樣,本機郵件程式 (MSP) 在 MTA 將其傳送到 DKIM 郵件過濾器之前會更改 From: 標頭。
我使用了與我相同的MASQUERADE_AS
和行MASQUERADE_DOMAIN
sendmail.mc