DKIMレコードの構造とメール認証における役割
DKIM(DomainKeys Identified Mail)は、送信する電子メールにデジタル署名を付加することで、送信ドメインのなりすましやメール本文の改ざんを防ぐための仕組みです。この仕組みにおいて、送信側ドメインのDNSに登録される「DKIM TXTレコード」は、受信サーバーが署名を検証するために必要な公開鍵や各種パラメータを提示する重要な役割を担っています。
DKIM TXTレコードは、セミコロン(;)で区切られた複数の「タグ=値」のペア(タグリスト)で構成されます。例えば、v=DKIM1; k=rsa; p=… のような形式です。受信サーバーは、メールのヘッダーに付与された署名情報と、DNSから取得したこの公開鍵レコードを照合することで、メールが本当にそのドメインから送信され、途中で改ざんされていないかを検証します。
公開鍵の種類とセキュリティ基準
DKIMレコードにおいて、暗号鍵の仕様を定義するタグが k(キータイプ)と p(公開鍵)です。本ツールは、暗号鍵として「RSA」および「Ed25519」の2つの公開鍵タイプを認識します。
安全なメール認証を維持するためには、適切な鍵の種類と十分な鍵サイズ(ビット数)を選択する必要があります。
- RSAキー: 広く普及している暗号方式です。セキュリティ強度の観点から、1024ビット未満のRSAキーは無効(DKIMの要件を満たさない)と判定されます。また、1024ビット以上であっても2048ビット未満のRSAキーは、現在の推奨基準よりも弱いと判定されます。安全な運用のために、2048ビット以上の鍵サイズを使用することが推奨されています。
- Ed25519キー: より新しく効率的な楕円曲線暗号方式です。Ed25519キーは、デコードした際に正確に32バイトである必要があります。
また、p タグの値を空(p=)にして公開すると、そのDKIMキーが「失効済み」であることを示す状態になります。
DNS TXTレコードの制限とチャンク分割
DNSにTXTレコードを登録する際、技術的な仕様として「1つの文字列(チャンク)は最大255バイトまで」という制限が存在します。
公開鍵の文字列が長い場合(特に2048ビット以上のRSAキーなど)、この255バイトの制限を超えるため、レコードを複数の引用文字列(チャンク)に分割して登録する必要があります。DNSはこれらの分割された文字列を順番に結合して1つのTXTレコードとして処理するため、すべてのチャンクが正しく引用符で囲まれ、1つのレコード内に収まっている必要があります。
本ツールにゾーンファイル形式の括弧や、引用符で囲まれた複数のチャンクを含むレコードを入力した場合、ツールはそれらを自動的に結合して1つのレコードとして解析します。
ローカル処理によるプライバシー保護
本ツール「DKIMレコードチェッカー」は、入力されたDKIM TXTレコードのテキストを解析する専用ツールです。
最大の特徴は、処理がすべて利用者のブラウザ内でローカルに実行される点です。入力されたレコードデータが外部のサーバーにアップロードされたり、保存されたりすることはありません。
また、本ツールは純粋なテキスト構文解析器として動作します。実際のDNSサーバーに対して問い合わせ(クエリ)を行ったり、実際のメール署名を検証したりすることはありません。そのため、公開前のレコード下書きや、手元で作成した設定値の構文チェックをプライバシーが守られた環境で行うことができます。
レコード構成における重要ルールとエラー判定
DKIMレコードが正しく機能するためには、規格に準拠した厳格な記述ルールに従う必要があります。本ツールは、入力された値(最大20,000文字)に対して以下のルールを検証し、問題がある場合はエラーや警告を出力します。
- バージョン(vタグ):
v=DKIM1タグが存在する場合、必ずレコードの最初のタグでなければなりません。また、値は正確にDKIM1である必要があり、それ以外の値は認められません。 - キータイプ(kタグ): サポートされている値は
rsaまたはed25519のみです。 - サービス(sタグ): 適用されるサービスを指定する
sタグの値には、emailまたは*(すべて)が含まれている必要があります。 - ハッシュアルゴリズム(hタグ): 現在のDKIM署名において、
hタグはsha256を許可する必要があります。かつて使用されていたsha1は現在廃止(非推奨)されており、使用してはいけません。 - 構文の整合性: 必要な
p(公開鍵)タグの欠落、同一タグの重複、等号(=)の不足、不正なタグ名、255バイトを超える単一チャンクなどはすべてエラーとして検出されます。
DKIMレコードチェッカーのFAQ
なぜ長いDKIMレコードは引用文字列に分割されるのですか?
DNS TXTレコードは複数の文字列を含むことができ、各文字列は255バイトに制限されます。DNSは文字列を順番に結合するので、すべてのチャンクは1つのTXTレコード内に残る必要があります。
このチェッカーはどのDKIMキーの種類を認識しますますか?
RSAおよびEd25519の公開鍵を認識し、それらのBase64形式をチェックし、1024ビット未満のRSAキーを無効として報告し、2048ビット未満のキーを推奨より弱いと報告します。
クリーンな結果はDKIMが正常に機能していることを証明しますか?
いいえ。このページはあなたが貼り付けたレコードテキストのみをチェックします。DNSに問い合わせたり、メッセージ署名を確認したり、セレクタ名を確認したり、メール受信者がレコードを取得できることを証明したりすることはありません。