DKIMレコード
DKIMレコードとは、selector._domainkey.yourdomain.com に公開されるDNS TXTレコードで、受信者があなたのDKIM署名を検証するために使う公開鍵を保持します。そのタグには v(バージョン)、k(鍵の種類)、p(公開鍵)があり、空の p= は鍵が失効していることを意味します。
このガイドは、DKIMに関する完全ガイドの一部です。関連: DKIMセレクター、DKIM署名。
DKIMレコードとは、ドメインのDNSに公開される特別な形式のTXTレコードで、受信メールサーバーがメッセージのDKIM署名を検証するために使う公開鍵を保持します。これにより、メッセージがあなたのドメインによって認可され、転送中に改ざんされていないことが確認されます。
DKIMレコードの見た目
DKIMレコードは、セミコロンで区切られたtag=valueペアの1つの文字列です。その大部分は公開鍵であり、これがDKIMレコードがSPFやDMARCのレコードよりもはるかに長い理由です。典型的なレコードは次のようになります。
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQ...
DNS TXTレコードには1文字列あたり255文字の制限があるため、ほとんどのプロバイダーは長いp=の値を複数の引用符付きのかたまりに分割し、DNSソフトウェアがそれを自動的に連結します。ルックアップツールでレコードを見ると、1つの連続した文字列に再構成されます。タグの順序は問題にならず、セミコロン周りの空白は無視されます。
DKIMレコードのタグ
各タグは、鍵の使われ方の一側面を制御します。実際に厳密に必須なのはp=だけですが、v=とk=はほぼ常に存在します。
| タグ | 名前 | 意味 |
|---|---|---|
v | バージョン | DKIMのバージョン。DKIM1でなければならず、存在する場合は最初に来なければならない。 |
k | 鍵の種類 | 公開鍵アルゴリズム。rsaが標準。ed25519はより新しく短い代替。 |
p | 公開鍵 | base64エンコードされた公開鍵そのもの。空のp=は鍵が失効したことを意味し、このセレクターを使う署名はすべて失敗する。 |
t | フラグ | 任意のフラグ。t=yはドメインをテスト中としてマークする(検証者は失敗を厳しく扱うべきではない)。t=sはサブドメインでの使用を禁止する。 |
h | ハッシュアルゴリズム | 許可される署名ハッシュアルゴリズム(sha256など)。検証者が受け入れるハッシュを制限する。 |
s | サービスの種類 | 鍵が有効なサービス。emailは鍵をメールに限定する。*(デフォルト)はすべてのサービスを許可する。 |
DKIMレコードの保管場所
DKIMレコードはルートドメインには公開されません。代わりに、セレクターと固定の_domainkeyラベルから構築されたサブドメインに保管されます。
selector._domainkey.yourdomain.com
セレクターはメールプロバイダーが選ぶラベルで、レコードが保管される正確なホストを決定します。例えば、Google Workspaceがセレクターgoogleであなたのメールを署名する場合、レコードはgoogle._domainkey.yourdomain.comにTXTレコードとして公開されます。1つのドメインは同時に多数のセレクターを持てるため(鍵ごと、送信サービスごとに1つ)、1つのドメインが複数のDKIMレコードを並べて保持することはよくあります。
DKIMレコードを見つけて確認する方法
DKIMの難しいところは、セレクターを既に知っていない限りレコードを検索できないこと、そしてDNSにはドメイン上のすべてのセレクターを一覧表示する方法がないことです。それを見つける確実な方法は、あなたのドメインが実際に送信したメッセージを読むことです。
そのメッセージの生ヘッダーを開き、DKIM-Signatureヘッダーを見つけてください。その中のs=タグがセレクターで、d=タグが署名ドメインです。それらをs._domainkey.dとして組み合わせると、照会すべき正確なホストが得られます。例えば、s=selector1; d=yourdomain.comは、レコードがselector1._domainkey.yourdomain.comに存在することを意味します。
ホストがわかったら、dig、nslookup、またはブラウザベースのチェッカーでTXTレコードとして照会します。無料のDKIMルックアップツールは、これをさらに簡単にします。Google、Microsoft、Amazon SES、Mailchimp、その他の主要プロバイダーが使う数十の一般的なセレクターを自動スキャンするため、ヘッダーを掘り返すことなくレコードを見つけて検証できることがよくあります。また、検証を失敗させる原因となる空または不正な形式のp=値も検出します。
DKIMレコードの追加方法
DKIMの追加は、主にメールプロバイダーを通じて処理される3ステップのプロセスです。
-
鍵ペアを生成する。 送信プラットフォーム(Google Workspace、Microsoft 365、お使いのESP、またはメールサーバー)でDKIMを有効化し、公開鍵/秘密鍵のペアを生成させます。プロバイダーは秘密鍵を保持し、DKIMレコードとして書式化された公開鍵をあなたに渡します。プロバイダーごとの正確な手順はDKIMレコードの生成方法を参照してください。
-
TXTレコードを公開する。 DNSホストで、プロバイダーが指定する
selector._domainkey.yourdomain.comホストにTXTレコードを作成し、渡された値を貼り付けます。 -
検証する。 DNSが伝播するのを待ち、ルックアップツールを使ってレコードが解決し、公開鍵が破損していないことを確認します。テストメッセージを送信し、受信側で
DKIM-Signatureが通過することを確認します。
よくある質問
DKIMレコードとは何ですか?
DKIMレコードとは、ドメインのDNSにあるTXTレコードで、送信メールのDKIM署名を検証するために使う公開鍵を保管します。受信サーバーはこれを取得して、メッセージがあなたのドメインによって認可され、転送中に改変されていないことを確認します。これにより配信性が強化され、なりすましから保護されます。
DKIMレコードのp=タグは何を意味しますか?
p=タグは、検証者がメッセージの暗号学的署名をチェックするために使う、base64エンコードされた公開鍵を保持します。これはレコードの本質的な部分です。p=が存在するが空の場合、それは鍵が失効したことを示し、そのセレクターで署名されたメッセージはすべてDKIM検証に失敗します。
DKIMレコードはどこに保管されますか?
DKIMレコードは、セレクターと_domainkeyラベルによって形成される特別なDNSホストに、selector._domainkey.yourdomain.comの形式でTXTレコードとして保管されます。メールプロバイダーが選ぶセレクターが正確なホストを決定し、これが1つのドメインが異なるセレクターに複数のDKIMレコードを保持できる理由です。
1つのドメインはいくつのDKIMレコードを持てますか?
1つのドメインは、持っているセレクターの数だけDKIMレコードを持てますし、固定の制限はありません。各送信サービスや鍵のローテーションは通常、それぞれ独自のセレクターを使うため、複数のプラットフォームを通じて送信するドメインは、それぞれに個別のDKIMレコードを公開し、それらはすべて異なる_domainkeyホストの下で共存します。