DKIM 如何找到金鑰
郵件中的 DKIM 簽章會指定網域(d=)和 selector(s=)。接收端將兩者組合成 selector._domainkey.domain,讀取該處的 TXT 記錄,並使用其 p= 標籤中的公開金鑰驗證簽章。一個網域可以發布任意數量的 selector,因此每個寄信服務都能使用自己的金鑰,也能在不中斷服務的情況下輪替金鑰。
檢查工具需要 selector,因為 DNS 無法列出網域擁有的 selector。沒有任何內容可供掃描,selector 必須取自實際郵件的簽章。
哪些情況會讓金鑰不安全或失效
RFC 8301 規定 RSA 金鑰必須至少為 1024 位元,並建議使用 2048 位元。驗證器可以忽略更短的金鑰,我們的驗證器也會這麼做,因此 512 位元金鑰會視同完全沒有簽章。Ed25519 金鑰依設計本來就較短且安全性高,但目前並非所有收件端都會驗證,因此通常會與 RSA 金鑰一起發布,而不是取代 RSA 金鑰。
此檢查工具會完整解碼金鑰,因為若記錄在多個 TXT 字串之間切割錯誤,或 base64 無法解碼,任何收件端都無法使用該金鑰。空白的 p= 表示金鑰已被刻意撤銷。t=y 表示網域仍在測試,RFC 6376 §3.6.1 指示驗證器將其郵件視同未簽章郵件處理。