Nova Uptime
メール配信性dkim-checkdkim-checkerdkim-record

DKIM徹底解説:仕組み、設定方法、活用ポイント

DKIMの完全ガイド。DKIMレコードの確認、セレクタの理解、鍵の生成、認証エラーの修正までを解説します。無料のDKIMチェッカーツール付き。 — Nova Uptimeはアップタイム、SSL、メール健全性、リンク変更を1つのダッシュボードで監視します。

SN
Sumit Nova Uptime
2026年2月11日 · 21 min read
Share:

毎日、何十億通ものメールがインターネット上を行き交っています。送信元ドメインを正しく検証する仕組みがなければ、攻撃者は「From」アドレスを偽装し、信頼されたブランドになりすますことができます。DKIM(DomainKeys Identified Mail)は、すべての送信メールに暗号署名を付与することでこの問題を解決し、受信メールサーバーがメッセージの改ざんがないことと、本当にあなたのドメインから送信されたことを検証できるようにします。

このガイドでは、DKIMの仕組みを詳しく解説し、設定手順をステップごとに紹介し、よくあるつまずきポイントを取り上げます。

DKIMとは?#

DKIMは、RFC 6376で定義されているメール認証の標準規格です。送信元ドメインがメッセージにデジタル署名を付けることで、そのメッセージの責任を引き受けます。受信サーバーは、送信元の公開鍵をDNSから取得し、署名を検証することができます。

DKIMの本質は、次の問いに答えることにあります。このメールは、本当に署名に書かれているドメインから送信されたものか?そして、送信途中で改ざんされていないか?

DKIM自体がスパムやフィッシングを防ぐわけではありません。あくまで、DMARCをはじめとする他のシステムが、認証されていないメールに対するポリシー判断を行うための基盤として機能します。

DKIMの仕組み:署名プロセス#

DKIMは公開鍵暗号方式を使います。DKIM対応のドメインからメールが送信されるとき、以下の流れで処理が行われます。

1. 鍵ペアの生成#

ドメイン管理者は、RSA(またはEd25519)の鍵ペアを生成します。

  • 秘密鍵:メールサーバー上で安全に保管されます。送信メッセージに署名するために使用されます。
  • 公開鍵:DNSのTXTレコードとして公開されます。受信サーバーはこれを使って署名を検証します。

2. メッセージへの署名#

メールが送信メールサーバーから出ていく際、DKIMモジュールは以下の処理を行います。

  • ヘッダーと本文の正規化:DKIMは空白や改行を正規化し、配送途中の細かな書式変更で署名が壊れないようにします。正規化モードには「simple」(厳格)と「relaxed」(空白の変更に寛容)の2種類があります。
  • 本文のハッシュ化:正規化された本文のSHA-256ハッシュが計算されます。このハッシュは署名ヘッダーのbh=(body hash)タグに格納されます。
  • 指定ヘッダーへの署名:モジュールは署名対象のヘッダー(From、To、Subject、Dateなど)を選び、それらの正規化済みヘッダーとDKIM-Signatureヘッダー自体(ただしb=の値を除く)に対してハッシュを計算し、秘密鍵で暗号化します。
  • DKIM-Signatureヘッダーの挿入:生成された署名とメタデータがDKIM-Signatureヘッダーとしてメールに追加されます。

3. 署名の検証#

メールが受信サーバーに到着すると、次の処理が行われます。

  • サーバーはDKIM-Signatureヘッダーを抽出します。
  • d=(ドメイン)とs=(セレクタ)タグを読み、公開鍵の場所を特定します。
  • {selector}._domainkey.{domain}に対してDNSのTXTレコードを問い合わせます。
  • 公開鍵を使って署名を復号し、ヘッダーと本文から自分で計算したハッシュと比較します。
  • ハッシュが一致すればDKIMチェックは成功、一致しなければ失敗となります。

DKIM-Signatureヘッダーの構造#

DKIM-Signatureヘッダーの例を見てみましょう。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=example.com; s=google;
  h=from:to:subject:date:message-id;
  bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
  b=AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk...

主なタグは次のとおりです。

  • v=1:DKIMのバージョン(常に1)。
  • a=rsa-sha256:署名アルゴリズム。RSA + SHA-256が最も一般的です。
  • c=relaxed/relaxed:ヘッダー/本文の正規化モード。「relaxed/relaxed」が最も寛容で、広く推奨されています。
  • d=example.com:署名ドメイン。このドメインがメッセージの責任を負います。
  • s=google:セレクタ。検証側がどの公開鍵を参照すればよいかを示します。
  • h=from:to:subject:date:message-id:署名に含まれるヘッダーの一覧。
  • bh=...:正規化された本文のBase64エンコードされたハッシュ。
  • b=...:Base64エンコードされた署名そのもの。

DKIMセレクタの理解#

セレクタは、DNS上の特定の公開鍵を指し示すラベルです。完全なDNSルックアップのパスは次のとおりです。

{selector}._domainkey.{domain}

たとえば、ドメインがexample.comでセレクタがgoogleの場合、受信サーバーは次のレコードを問い合わせます。

google._domainkey.example.com

なぜセレクタが必要なのか?

セレクタを使うと、1つのドメインで複数のDKIM鍵を同時に運用できます。これは次のような場面で役立ちます。

  • 鍵のローテーション:新しいセレクタで新しい鍵を公開し、メールサーバーをそちらで署名するように更新してから、古いDNSレコードを削除できます。認証が途切れることなく切り替えが可能です。
  • 複数のメールサービス:Google Workspace、SendGrid、Mailchimpなど複数のサービスからメールを送る場合、それぞれが独自のセレクタと鍵ペアを持てます。Googleはgoogle、SendGridはs1、Mailchimpはk1といった具合です。
  • テスト:本番トラフィックを切り替える前に、別のセレクタでテスト鍵を導入できます。

プロバイダ別のよく使われるセレクタ名

メールプロバイダごとに、デフォルトのセレクタは異なります。

プロバイダよく使われるセレクタ
Google Workspacegoogle
Microsoft 365selector1, selector2
SendGrids1, s2, sendgrid
Mailchimpk1, k2, k3
Zohos1, s2, zoho
Amazon SESamazonses
Postmarkpostmark
Mailgunmailgun

DKIM設定のステップバイステップガイド#

ステップ1:DKIM鍵ペアを生成する#

ホスティング型のメールサービス(Google Workspace、Microsoft 365など)を使っている場合、通常はプロバイダ側で鍵が生成されます。あなたは提供された公開鍵をDNSに公開するだけです。

自前のメールサーバーを運用している場合は、2048ビットのRSA鍵ペアを生成します。

openssl genrsa -out dkim-private.pem 2048
openssl rsa -in dkim-private.pem -pubout -out dkim-public.pem

秘密鍵はサーバーに残し、公開鍵はDNSに登録します。

ステップ2:セレクタを決める#

わかりやすいセレクタ名を選びましょう。よく使われるのはdefaultmaildkim、またはjan2026のような日付ベースの名前(ローテーションの追跡に便利)です。内部インフラの詳細が漏れるようなセレクタ名は避けましょう。

ステップ3:DNSのTXTレコードを公開する#

{selector}._domainkey.yourdomain.comにTXTレコードを作成し、公開鍵を登録します。レコードの値は次のような形式です。

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...

DNSレコード内のタグは次のとおりです。

  • v=DKIM1:このレコードがDKIM鍵レコードであることを示します。RFC 6376によれば、v=タグは推奨されますが必須ではありません。
  • k=rsa:鍵の種類(RSAがデフォルトで、省略可能)。
  • p=...:Base64エンコードされた公開鍵。このタグが空(p=)の場合、その鍵は失効済みであることを意味します。

重要:多くのDNSプロバイダはTXTレコードに文字数制限を設けています。2048ビット鍵は長い文字列になります。プロバイダが対応している場合はそのまま全体を登録してください。対応していない場合、1つのTXTレコード内で値を複数の文字列に分割できるプロバイダもあります。

ステップ4:メールサーバーを設定する#

設定方法は使用環境によって異なります。

  • Google Workspace:管理コンソールから「アプリ」→「Google Workspace」→「Gmail」→「メールの認証」を開きます。GoogleがTXTレコードの値とセレクタを提供してくれるので、それをDNSに公開し、「認証を開始」をクリックします。
  • Microsoft 365:Microsoft 365 Defenderポータルにアクセスし、「ポリシー」→「DKIM」へ移動します。ドメインのDKIM署名を有効化すると、Microsoftが2つのCNAMEレコードを提示するので、それらをDNSに公開します。
  • PostfixとOpenDKIMの組み合わせ:opendkimをインストールし、署名テーブル、鍵テーブル、信頼ホストを設定します。秘密鍵ファイルへのパスを指定します。

ステップ5:設定を確認する#

DNSレコードを公開したら、DNSの伝播を待ちます(通常は5〜60分、TTLによっては最大48時間)。その後、テストメールを送信してヘッダーを確認します。

DKIM設定はNova Uptimeの無料メール配信ヘルスチェッカーを使えば、すぐに確認できます。50種類以上のよく使われるセレクタを自動でスキャンしてDKIM設定を検出し、メール認証の状態を詳しくレポートしてくれます。

DKIMでよくある間違い#

1. 鍵長が短すぎる#

1024ビットのRSA鍵は弱いとされ、一部の受信側で拒否されることがあります。必ず2048ビット鍵を使いましょう。最近では4096ビット鍵に対応するプロバイダもありますが、DNSレコードのサイズ制限の関係で公開が難しい場合があります。

2. DNSレコードの書式ミス#

TXTレコードの値に余計な空白、引用符の抜け、改行などが含まれていることが、DKIM失敗の最も多い原因です。公開後は必ず実際のレコード内容を確認しましょう。

3. サードパーティサービスでの署名忘れ#

マーケティングプラットフォーム、トランザクションメールサービス、CRMなどからメールを送信している場合、それぞれにDKIM設定が必要です。SendGrid経由で送られたメールは、Google WorkspaceのDKIM鍵では署名されません。送信に使うすべてのサービスで個別にDKIMを設定する必要があります。

4. 鍵をローテーションしていない#

DKIM鍵は定期的に更新するべきです(6〜12か月ごとが目安)。セレクタを使えばスムーズにローテーションできます。新しいセレクタで新しい鍵を公開し、署名設定を切り替え、動作を確認してから古いセレクタのDNSレコードを削除します。

5. 署名するヘッダーが少なすぎる#

最低でも、Fromヘッダーは必ず署名に含めてください。多くの実装ではToSubjectDateMessage-IDも含めます。署名するヘッダーが多いほど改ざん防止は強固になりますが、正規のメール処理で署名が壊れるリスクも高まります。FromヘッダーはDKIM仕様で必須とされています。

6. 「simple」正規化を使ってしまう#

「simple」正規化モードは空白や書式に対して非常に厳格です。途中のサーバー(メーリングリスト、転送サービスなど)がヘッダーや本文にわずかな変更を加えただけで署名が壊れてしまいます。特別な理由がなければ「relaxed/relaxed」を使いましょう。

DKIMとSPF、DMARCの関係#

DKIMは、3層構造のメール認証の一部にすぎません。

  • SPF(Sender Policy Framework):あなたのドメインを名乗ってメールを送信できるIPアドレスを指定します。チェック対象はエンベロープの送信者(MAIL FROM)であり、表示される「From」ヘッダーではありません。
  • DKIM:メッセージの内容が改ざんされておらず、署名ドメインによって承認されていることを暗号的に検証します。
  • DMARC(Domain-based Message Authentication, Reporting, and Conformance):SPFとDKIMをひとつにまとめます。表示される「From」ヘッダーのドメインが、SPFまたはDKIMが成功したドメインと一致するかを確認し、認証に失敗したメッセージをどう扱うか(none、quarantine、rejectのいずれか)を指定します。

DMARCを通過させるには、SPFまたはDKIMのどちらかが成功し、さらに「From」ドメインとアラインメントしている必要があります。つまり、SPFだけでは失敗する場面、たとえばメールが転送されたとき(転送では送信IPが変わるためSPFは壊れますが、DKIM署名は転送されてもそのまま残ります)に、DKIMの存在は特に重要になります。

DKIM設定の確認方法#

DKIMレコードを手動でDNSに問い合わせるのは骨が折れます。正確なセレクタ名を知らないといけませんし、セレクタを発見する標準的な手段もありません。

Nova Uptimeのメール配信ヘルスチェッカーはこの問題を解決します。主要メールプロバイダの50種類以上のよく使われるセレクタを自動でスキャンしてくれます。MXレコード、SPF、DKIM、DMARCの設定を一度にチェックし、0〜100のスコアとAからFまでのレターグレードで結果を返します。

このツールは完全に無料で、登録も不要です。DKIM設定に問題が見つかった場合は、すぐに行動につながる具体的な改善策も提示してくれます。

押さえておきたいポイント

  • DKIMは公開鍵暗号方式を使ってメールに署名し、そのメールが本当にあなたのドメインから送信され、改ざんされていないことを証明します。
  • セレクタの仕組みにより、複数の鍵を使った鍵ローテーションや、複数の送信サービスを並行して扱えます。
  • 必ず2048ビットのRSA鍵を使い、「relaxed/relaxed」正規化を選びましょう。
  • あなたの代わりにメールを送信するすべてのサービスで、DKIMを個別に設定してください。
  • DKIMはSPFやDMARCと連携します。包括的なメール認証のために、3つすべてを設定するのが理想です。
  • Nova Uptimeのメール配信ヘルスチェッカーを使えば、DKIM設定を確認し、メール認証の総合レポートを得られます。

DKIMを正しく設定することは、メール到達性を高めるうえで最もインパクトの大きい施策のひとつです。適切に署名されたメッセージは、あなたが正規の送信者であり、メールセキュリティに真剣に取り組んでいることを受信サーバーに伝え、それは受信トレイへの到達に大きく貢献します。

よくある質問

DKIMレコードはどうやって確認しますか?#

無料のDKIMチェッカーツールを使ってDKIMレコードを調べられます。ドメインを入力すると、ツールが50種類以上のよく使われるセレクタを自動でスキャンし、DKIM設定を見つけ出します。セレクタ名がわかっている場合は、dig TXT selector._domainkey.yourdomain.comで手動で確認することもできます。

DKIMセレクタとは何ですか?#

DKIMセレクタは、署名にどのDKIM鍵ペアを使うかを示すラベルです。署名済みメールのDKIM-Signatureヘッダー内にs=selectorという形で現れます。よく使われるセレクタにはgoogleselector1defaults1k1などがあります。メールプロバイダごとに使うセレクタ名が異なるため、セレクタの自動検出が役立ちます。

メールのDKIMレコードを確認するにはどんなツールが使えますか?#

Nova Uptimeの無料のDKIMチェッカーは、ドメインのDKIMレコードを自動でスキャンします。セレクタを検出し、公開鍵を検証し、RFC 6376への準拠状況をチェックします。SPF、DKIM、DMARC、ブラックリストを含む包括的なメール認証監査には、メール配信ヘルスチェッカーをおすすめします。

メール配信にDKIMは必須ですか?#

2026年現在、GmailとYahooは大量送信者にDKIMを要求しています。少量送信であっても、DKIMがないメールはスパム判定されやすくなります。DKIMはDMARCのアラインメントにも必要であり、ビジネスメールでは事実上必須になりつつあります。

DKIMが失敗するとどうなりますか?#

DKIM検証が失敗すると、受信サーバーはあなたのDMARCポリシーを参照します。p=noneなら通常どおり配信されます。p=quarantineならスパムフォルダに入ります。p=rejectなら配信が拒否されます。DMARCがなくても、DKIM失敗はスパムフィルタにかかる確率を高めます。

関連記事

Monitor Your Website Before It Goes Down

Get uptime monitoring, SSL tracking, domain expiry alerts, and email health checks. Free plan — no credit card required.

Start Monitoring Free

関連記事