DKIM DNS 記錄生成器

只需輸入選擇器(selector)名稱和公鑰(PEM格式),即可自動生成用於DKIM簽名的DNS TXT記錄(v=DKIM1; k=rsa; p=...)。超過255個字元的長公鑰會自動按BIND區域檔案格式進行分段。

使用提示

  • 可以直接貼上通過opendkim-genkey或OpenSSL的openssl genrsa → openssl rsa -pubout生成的PEM檔案內容,換行符和頭部行會被自動去除。
  • 啟用測試模式(t=y)後,部分接收方伺服器在DKIM驗證失敗時可能不會直接拒絕郵件而是先觀察。建議在切換到正式環境前的驗證階段使用。
  • 將生成的記錄新增到DNS後,建議使用本站的郵件送達診斷工具(SPF/DKIM/DMARC診斷)確認記錄是否已生效。
  • 常見金鑰長度為1024位和2048位,2048位金鑰生成的公鑰字串通常會超過255個字元從而被拆分為多段,這屬於正常現象而非錯誤。
  • 選擇器名稱可以自由設定,但如果同一域名使用多個郵件服務商,建議在名稱中加入服務商名稱(如"google"、"mailgun")以便於管理。

常見問題

這是用於在同一域名下區分使用多個DKIM金鑰的識別符號。DNS中記錄會以"選擇器._domainkey.域名"的形式公開,傳送郵件的DKIM-Signature頭中s=標籤的值會與之匹配,並使用對應選擇器的公鑰驗證簽名。

由於DNS的TXT記錄單個字串(character-string)最多為255位元組,超出部分會被拆分為多個帶引號的字串並無縫拼接,作為一條TXT記錄註冊。本工具生成的BIND格式表示已經處理好了這種拆分。

不能。本工具只負責組裝要釋出到DNS的記錄,不會生成私鑰。請使用opendkim-genkey或OpenSSL等可信工具,在自己的環境中安全地生成和保管私鑰。

建議在剛部署DKIM、需要確認在實際傳送環境中籤名與驗證是否正常工作的階段使用。部分接收方對帶有t=y的域名的DKIM驗證失敗會採取更寬鬆的處理方式,這在正式上線前起到安全緩衝的作用。

目前RSA(k=rsa)是實務上的標準,因為支援的收發伺服器範圍最廣。Ed25519(k=ed25519,RFC 8463)金鑰更短、簽名更快,但仍有部分郵件伺服器不支援,建議僅在確認雙方環境都能正常工作時才採用。
ツールくん

閒話 ― 公鑰加密如何防止郵件"冒充"

DKIM(DomainKeys Identified Mail)標準化於2004年,由Yahoo!和Cisco各自開發的技術(DomainKeys與Identified Internet Mail)整合而成。其核心是公鑰加密:傳送方使用私鑰對根據郵件頭和部分正文計算出的雜湊值進行加密,並附加為DKIM-Signature頭。接收方使用DNS中公開的公鑰驗證該簽名,如果金鑰對匹配,就能在數學上確認內容在傳送後未被篡改。

SPF驗證的是傳送方IP地址這一網路層面的合法性,而DKIM則是對郵件內容本身施加數字簽名,二者本質不同。因此即使郵件被正規中繼伺服器多次轉發(SPF在這類轉發場景中表現較弱),只要正文未被修改,DKIM簽名依然有效。正因如此,在涉及轉發的投遞路徑(如郵件列表)中,DKIM被認為比SPF更可靠。

選擇器(selector)機制在實際運用中也很重要。當一個域名同時使用多個郵件服務商(自建伺服器、Gmail、SendGrid等)時,可以為每個服務商分配獨立的金鑰對和選擇器名稱,從而單獨吊銷或更新金鑰。即使某個金鑰洩露,也不會影響其他選擇器——這種運維上的靈活性,正是DKIM雖然只是一條簡單的DNS記錄,卻能在大規模郵件基礎設施中長期廣泛使用的原因之一。