Postfix

間歇性 DKIM 故障

  • November 16, 2020

我們有幾個電子郵件伺服器通過 PostFix 發送合法電子郵件並使用 openDKIM。

最近我們有一些接收者聲稱無法驗證 DKIM 記錄,因此我們嘗試了各種工具,例如 mail-tester.com、isnotspam.com 等,並看到相同的結果,一些電子郵件未通過 DKIM 檢查,而另一些則通過了.

同一台伺服器可以發送一封帶有 DKIM 通行證的電子郵件,它可以發送另一封電子郵件並且 DKIM 失敗。似乎是電子郵件本身決定了 DKIM 是否會通過。我每次都可以用相同的電子郵件複製它。

我無法理解這種行為,並想知道是否有人見過類似的問題。電子郵件本身如何導致 DKIM 失敗?

一、排除與實際簽名無關的問題

  1. 檢查 AR 標頭:Authentication-Results: host; dkim=fail意味著簽名失敗,但Authentication-Results: host; dkim=permerror可能只是意味著收件人無法獲取您的密鑰。
  2. 檢查Received:與收件人無關的最上面的標題,如果不是您,您正在查看轉發的郵件。

然後,確定是誰導致簽名中斷

在送出時獲取郵件的副本(例如儲存在 IMAP Sent 文件夾中),在收到原始郵件時獲取原始郵件的副本,然後逐字節進行比較。

如果收件人無法將完整的標頭轉發給您,您可以通過將問題郵寄到同一提供商的郵箱來重現問題,這樣您就可以查看完整的標頭。

a)您在簽名後修改自己的郵件,使簽名無效

  1. 您是否發送無效郵件,並且您的郵件系統正在為您解決一些問題,例如添加缺少的Date標題?修復/替換不合規的 MUA。
  2. 您用於外發垃圾郵件過濾的某些軟體是否會修改您正在簽名的標頭?

在任何此類修改之後,確保郵件處理軟體的順序將簽名放在最後。

b) 收件人在驗證您的簽名之前修改了您的郵件,因此無法驗證您的簽名

我在野外看到的例子:

  1. 超長的線條被重新折疊
  • 在發送之前應用適當的折疊 - 儘管使用relaxes DKIM 規範化就足夠了。
  1. 一些接受收件人地址不區分大小寫的軟體(通常是 Microsoft)將收件人的字母大小寫轉換為其規範形式
  • 使用規範(通常是小寫)拼寫更新您的通訊錄!
  1. 收件人郵件伺服器將其接收到的國際化域名 (IDN) 編碼為 UTF-8
  • 這應該很明顯,因為它只會發生在標頭中某處的特定域中。以 idna 編碼 ( ) 發送非 ASCII 域xn--..
  1. 您簽署了一個經常被收件人合法修改的標頭
  • 不要簽署諸如Received或之類的標題X-Spam-Status

請注意,如果您的郵件伺服器無法應用建議的轉換,您仍然可以拒絕您期望失敗的郵件 - 然後發件人可以嘗試使用不同的郵件客戶端或收件人地址(或者至少注意到有問題)。

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