僅 DKIM 不能解決垃圾郵件問題嗎?為什麼我需要 SPF?
**最終編輯:**我似乎對 DKIM 完全錯誤,簽名域不必與發件人域相同,因此我的問題的整個前提是有缺陷的。非常感謝保羅指出我的錯誤!
下面的原始問題:
我已嘗試閱讀 SPF 和 DKIM,但我不明白同時使用兩者的意義,至少在打擊垃圾郵件的情況下(偽造的發件人地址,這可能導致我的電子郵件伺服器/域被列入黑名單) )。據我所知,僅 DKIM 就應該完成 SPF 應該完成的工作。
到目前為止,我的理解如下:
- 發送電子郵件時,發件人可以聲明他們想要的任何內容(例如虛假髮件人地址)
- DKIM 允許檢測偽造的發件人電子郵件地址,因為您可以根據 DNS TXT 記錄中的公鑰驗證 DKIM 簽名。
- SPF 允許您驗證電子郵件是從有權為給定發件人地址發送電子郵件的郵件伺服器發送的。
我不明白的是:除非 DKIM 私鑰以某種方式受到損害,否則僅 DKIM 驗證就足以驗證電子郵件是從授權的電子郵件伺服器發送的,否則電子郵件伺服器將不會用於簽署電子郵件的私鑰。
我在這裡看到了一個非常相似的問題的答案:https ://serverfault.com/a/780248/154775 ,其中作者聲稱 DKIM 無法防止重放攻擊。我會承認這一點,但我發現這是一個極端情況,我認為迄今為止最大的問題是帶有虛假髮件人地址的垃圾郵件 - DKIM 應該可以自己輕鬆地防止這種情況。
與僅 DKIM 相比,是否存在 SPF 提供額外保護的重放攻擊以外的場景?
**編輯:**我用粗體標記了我的問題的核心,以澄清我到底想要回答什麼。
僅使用 DKIM,接收伺服器無法知道在哪裡可以找到您的域的 DKIM 密鑰,因為電子郵件的簽名包含選擇器 DNS 記錄位置,該位置由每個郵件伺服器管理員分配。因此,從其他伺服器接收電子郵件的郵件伺服器將無法使用它來評估消息。
如果您有 example.com 並且配置了 DKIM 而沒有其他配置,並且我從我的伺服器 example.net 發送了一封電子郵件,但我的伺服器“欺騙”了來自 example.com 的電子郵件,並且我配置了一個例如.net 的 DKIM 記錄,電子郵件將通過 DKIM 測試,接收伺服器將更難確定郵件不是來自 example.com 所有者批准的伺服器。這是因為 DKIM 測試是使用發送伺服器記錄來驗證電子郵件完整性的,僅此而已。
使用電子郵件簽名中的資訊執行驗證。換句話說,DKIM 測試的開始是電子郵件本身,其中包括發送伺服器的 DKIM 公鑰的位置。DKIM 標準僅用於驗證伺服器發送的電子郵件完整性,因此伺服器的域不需要與其他標頭資訊有任何關係,例如
smtp.mailfrom
. 這就是為什麼我可以“欺騙”example.com 並使用 example.net 的密鑰通過 DKIM 測試這就是為什麼這裡的每個人都說 DKIM 僅用於消息完整性的目的,而不是經過批准的發件人驗證。DKIM 只能用作防止垃圾郵件的“工作證明”,除非與配置了 SPF 的 DMARC 一起使用,因為沒有人知道您的域的密鑰所在的位置。