DKIM DNS 記錄生成器
只需輸入選擇器(selector)名稱和公鑰(PEM格式),即可自動生成用於DKIM簽名的DNS TXT記錄(v=DKIM1; k=rsa; p=...)。超過255個字元的長公鑰會自動按BIND區域檔案格式進行分段。
拼出 DKIM 用的 DNS 記錄
輸入選擇器名與 PEM 格式的公鑰,本工具便拼出用於驗證 DKIM 簽章的 DNS TXT 記錄,形如 v=DKIM1; k=rsa; p=...。它該落在 選擇器._domainkey.您的網域 之下。
此處人人都會撞上的,是 DNS 的 TXT 記錄每條字串至多 255 個字元這一限制。 RSA 2048 位元的公鑰以 Base64 計約有 390 個字元,照原樣便塞不進一條字串。 在區域檔案裡,它以括號括起、拆作數條字串來寫,接收一方再把它們接回成一個取值。 本工具連這道拆分也一併替您做了。另一件萬萬不可弄錯的是:放進 DNS 的是公鑰。 私鑰只該留在簽章的伺服器上,絕不可外流。
使用方法
- 輸入網域與選擇器名 選擇器由您自取其名;每換一次金鑰,便另起一個。
-
貼入 PEM 格式的公鑰
是以
-----BEGIN PUBLIC KEY-----開頭的那把,而非私鑰。 - 查看產生的記錄 一旦超過 255 個字元,輸出便以括號拆開來給。
-
登記到 DNS
以 TXT 記錄置於
選擇器._domainkey.您的網域。
用好本工具的小技巧
- 可以直接貼上通過opendkim-genkey或OpenSSL的openssl genrsa → openssl rsa -pubout生成的PEM檔案內容,換行符和頭部行會被自動去除。
- 啟用測試模式(t=y)後,部分接收方伺服器在DKIM驗證失敗時可能不會直接拒絕郵件而是先觀察。建議在切換到正式環境前的驗證階段使用。
- 將生成的記錄新增到DNS後,建議使用本站的郵件送達診斷工具(SPF/DKIM/DMARC診斷)確認記錄是否已生效。
- 常見金鑰長度為1024位和2048位,2048位金鑰生成的公鑰字串通常會超過255個字元從而被拆分為多段,這屬於正常現象而非錯誤。
- 選擇器名稱可以自由設定,但如果同一域名使用多個郵件服務商,建議在名稱中加入服務商名稱(如"google"、"mailgun")以便於管理。
這些情境會用到
初次引入 DKIM
金鑰造好之後,它告訴您該怎樣寫進 DNS。
輪替金鑰
以新的選擇器添上一條記錄,切換之後再刪去舊的。
確認拆分的寫法
長金鑰該怎麼分,正是手寫時最易出錯的地方。
檢驗投遞服務給的指示
可確認外部服務遞來的記錄是否形制無誤。
DKIM 的術語
- 選擇器
- 標識一把金鑰的名稱。它構成
selector._domainkey.example.com的開頭,每把金鑰各有其名。 - 公鑰
- 要放進 DNS 的那一把。 接收一方憑它驗證簽章。
- 私鑰
- 用來造出簽章的金鑰。它只該留在發信伺服器上,絕不可公開。
- 255 字元的限制
- TXT 記錄中單條字串的上限。 更長者便拆作數條字串來寫。
- v=DKIM1
- 言明記錄版本的標籤,置於最前。
- k=rsa
- 金鑰的種類。除 RSA 之外尚有 Ed25519,其金鑰要短得多。
常見問題
閒話 ― 公鑰加密如何防止郵件"冒充"
DKIM(DomainKeys Identified Mail)標準化於2004年,由Yahoo!和Cisco各自開發的技術(DomainKeys與Identified Internet Mail)整合而成。其核心是公鑰加密:傳送方使用私鑰對根據郵件頭和部分正文計算出的雜湊值進行加密,並附加為DKIM-Signature頭。接收方使用DNS中公開的公鑰驗證該簽名,如果金鑰對匹配,就能在數學上確認內容在傳送後未被篡改。
SPF驗證的是傳送方IP地址這一網路層面的合法性,而DKIM則是對郵件內容本身施加數字簽名,二者本質不同。因此即使郵件被正規中繼伺服器多次轉發(SPF在這類轉發場景中表現較弱),只要正文未被修改,DKIM簽名依然有效。因此在單純轉發的情況下,DKIM比SPF更容易保持認證結果。不過郵件列表經常會在主旨前加標籤或在內文末尾追加頁尾,從而改寫郵件標頭或內文,這時DKIM簽名同樣會失效(RFC 6377)。為了讓原始認證結果在經過這類中繼後仍能傳遞下去,人們設計了ARC(RFC 8617)。
選擇器(selector)機制在實際運用中也很重要。當一個域名同時使用多個郵件服務商(自建伺服器、Gmail、SendGrid等)時,可以為每個服務商分配獨立的金鑰對和選擇器名稱,從而單獨吊銷或更新金鑰。即使某個金鑰洩露,也不會影響其他選擇器——這種運維上的靈活性,正是DKIM雖然只是一條簡單的DNS記錄,卻能在大規模郵件基礎設施中長期廣泛使用的原因之一。