Postfix
間歇性 DKIM 故障
我們有幾個電子郵件伺服器通過 PostFix 發送合法電子郵件並使用 openDKIM。
最近我們有一些接收者聲稱無法驗證 DKIM 記錄,因此我們嘗試了各種工具,例如 mail-tester.com、isnotspam.com 等,並看到相同的結果,一些電子郵件未通過 DKIM 檢查,而另一些則通過了.
同一台伺服器可以發送一封帶有 DKIM 通行證的電子郵件,它可以發送另一封電子郵件並且 DKIM 失敗。似乎是電子郵件本身決定了 DKIM 是否會通過。我每次都可以用相同的電子郵件複製它。
我無法理解這種行為,並想知道是否有人見過類似的問題。電子郵件本身如何導致 DKIM 失敗?
一、排除與實際簽名無關的問題
- 檢查 AR 標頭:
Authentication-Results: host; dkim=fail
意味著簽名失敗,但Authentication-Results: host; dkim=permerror
可能只是意味著收件人無法獲取您的密鑰。- 檢查
Received:
與收件人無關的最上面的標題,如果不是您,您正在查看轉發的郵件。然後,確定是誰導致簽名中斷
在送出時獲取郵件的副本(例如儲存在 IMAP Sent 文件夾中),在收到原始郵件時獲取原始郵件的副本,然後逐字節進行比較。
如果收件人無法將完整的標頭轉發給您,您可以通過將問題郵寄到同一提供商的郵箱來重現問題,這樣您就可以查看完整的標頭。
a)您在簽名後修改自己的郵件,使簽名無效
- 您是否發送無效郵件,並且您的郵件系統正在為您解決一些問題,例如添加缺少的
Date
標題?修復/替換不合規的 MUA。- 您用於外發垃圾郵件過濾的某些軟體是否會修改您正在簽名的標頭?
在任何此類修改之後,確保郵件處理軟體的順序將簽名放在最後。
b) 收件人在驗證您的簽名之前修改了您的郵件,因此無法驗證您的簽名
我在野外看到的例子:
- 超長的線條被重新折疊
- 在發送之前應用適當的折疊 - 儘管使用
relaxes
DKIM 規範化就足夠了。
- 一些接受收件人地址不區分大小寫的軟體(通常是 Microsoft)將收件人的字母大小寫轉換為其規範形式
- 使用規範(通常是小寫)拼寫更新您的通訊錄!
- 收件人郵件伺服器將其接收到的國際化域名 (IDN) 編碼為 UTF-8
- 這應該很明顯,因為它只會發生在標頭中某處的特定域中。以 idna 編碼 ( ) 發送非 ASCII 域
xn--..
!
- 您簽署了一個經常被收件人合法修改的標頭
- 不要簽署諸如
Received
或之類的標題X-Spam-Status
!請注意,如果您的郵件伺服器無法應用建議的轉換,您仍然可以拒絕您期望失敗的郵件 - 然後發件人可以嘗試使用不同的郵件客戶端或收件人地址(或者至少注意到有問題)。