本文へスキップ

DKIM生成ツール

ブラウザ内でRSA鍵ペアを生成し、公開用のDKIM TXTレコードと、送信システム用の秘密鍵を取得できます。鍵ペアはここで作成され、どこにも送信されません。

まず確認を。 Google WorkspaceとMicrosoft 365は管理コンソールでDKIM鍵を生成するため、外部で作成した鍵は受け付けません。Microsoft 365では秘密鍵にアクセスすることもできません。どちらかでメールを送信している場合は、この生成ツールではなく各社の手順(Google、Microsoft)に従ってください。ここで作成する鍵は、鍵の提供を求めるメールサーバーやプラットフォーム用です。OpenDKIMを使うPostfix、アプライアンス、自社のアプリケーションなどです。

メールに署名するドメイン。ホスト名の作成に使い、レコードの値には含まれません。

任意のラベルです。1つのドメインで複数の鍵を同時に持てるため、停止せずにローテーションできます。

鍵長

既定は2048ビットが適切です。1024ビットは、長いレコードを今も受け付けないDNS管理画面があるため用意しているだけです。強度は大きく劣るため、一時的な措置として扱ってください。Googleもまさにその理由で1024を代替手段として提供しており、Microsoft 365は既定が1024で、ローテーション時に2048を選べます。

1 · 公開レコード:DNSに公開

鍵ペアは未生成です。

セレクタと鍵長を選んで生成します。鍵ペアはブラウザ自身のWeb Crypto実装で作成されます。公開鍵も秘密鍵も、どこにも送信・保存されません。

2 · 秘密鍵:送信システム専用

生成後、対応する秘密鍵がここに表示されます。

公開後の手順

  1. DNSにTXTレコードを追加します。反映は最大1時間ほどです。
  2. メールを送信するシステムに秘密鍵を読み込み、セレクタpalisade1で署名するよう設定します。
  3. 無料のDKIMチェックで公開した鍵の反映を確認し、Gmailにテストメールを送ってソースを表示でdkim=passを確認します。
  4. DKIMが証明するのは、メールが改ざんされていないことだけです。失敗したメールの扱いは受信側に伝えません。DMARCレコードとSPFを組み合わせてください。

出典

レコード形式はRFC 6376に準拠しています。上記2社の注意点は、GoogleとMicrosoftの公式設定ドキュメントに基づきます。

鍵の生成は簡単。難しいのはその後の運用です

鍵はローテーションが必要で、送信サービスごとに別の鍵が要ります。しかも、気づかないうちに壊れたDKIMレコードもDNS上は正常に見えます。PalisadeはNS委任でDKIMをホストし、DMARCレポートから失敗している送信元を見つけ、修正案を作成して承認を求めます。

DKIMをホスト

ドメイン診断は無料・カード不要。カード登録で15日間のトライアル開始。

DKIM作成ツールとは

このDKIM作成ツールでは、ブラウザ内でDKIM鍵を生成できます。DKIMは送信メールに秘密鍵で署名し、対応する公開鍵をDNSに公開します。これにより受信側は、メールが本当に自社ドメインから送られ、途中で改ざんされていないことを確認できます。設定には鍵ペアが必要で、SPFやDMARCと違って手書きはできません。このツールはブラウザ内で鍵ペアを作成します。公開鍵は公開用のTXTレコードとして、秘密鍵は送信システム用のPKCS#8 PEMファイルとして出力されます。使う前に、メールサービスが鍵を生成してくれるか確認してください。Google WorkspaceとMicrosoft 365はどちらも自動で生成し、外部の鍵は受け付けません。追加する前に公開済みレコードの形を確認したい場合は、DKIMレコードの例をタグごとに解説しています。署名、セレクタ、ローテーションの詳細はDKIMガイドをご覧ください。公開後はDKIMチェックで検証し、SPFとDMARCレコードを組み合わせてください。

メール認証ナレッジベース

DKIM鍵の生成方法は?

RSAの鍵ペアが必要です。公開鍵はselector._domainkey.yourdomain.co.jpのTXTレコードとしてDNSに登録し、秘密鍵はメールを送信するシステムに設定します。システムはこの秘密鍵ですべての送信メールに署名します。上の生成ツールは、ブラウザに組み込まれたWeb Cryptoで鍵ペアを作成するため、秘密鍵は手元のマシン上で作られ、どこにも送信されません。従来の方法はコマンドラインのopensslで、同じものをより多くの手順で作成できます。

この鍵はGoogle WorkspaceやMicrosoft 365で使えますか?

いいえ。DKIM設定で最もよくある時間の無駄がこれです。Google Workspaceは管理コンソールでDKIM鍵を自ら生成し、公開用のレコードを提示します。Microsoft 365は、カスタムドメインでDKIMを有効にすると2組の鍵ペアを生成し、秘密鍵にはアクセスできません。公開するのは自分で管理するTXTレコードではなく、Microsoft独自のセレクタを指すCNAMEレコードです。どちらも外部の鍵はインポートできません。この生成ツールの鍵は、鍵の提供を求めるメールサーバーやプラットフォーム用です。OpenDKIMを使うPostfix、アプライアンス、自社のアプリケーションなどです。

DKIM鍵は1024ビットと2048ビットのどちら?

2048ビットです。より強力な鍵で、DNSプロバイダーが対応していればGoogleも推奨しています。1024ビットは、長いレコード値を保存できない管理画面向けの代替手段です。Microsoft 365は今も既定が1024ビットで、ローテーション時に2048ビットを選べます。DNSの制約で1024ビットから始める場合は一時的な措置とし、プロバイダーが長い値に対応したら2048ビットにローテーションしてください。

DKIMセレクタとは

1つのドメインで複数のDKIM鍵を同時に持つためのラベルです。セレクタはDNSのホスト名(selector._domainkey.yourdomain.co.jp)と、送信する各署名のs=タグに含まれ、受信側はどの公開鍵を確認すべきかがわかります。セレクタは照会先の一部なので、新しいセレクタで新しい鍵を公開し、署名システムを切り替えてから古い鍵を廃止すれば、署名の空白期間なしで移行できます。これがローテーションを可能にする仕組みです。サービスごとに別のセレクタを使うのが一般的です。

ブラウザでDKIM秘密鍵を生成しても安全ですか?

この鍵は、ブラウザがTLSに使うのと同じ暗号実装であるWeb Crypto APIで生成され、ネットワークには一切送信されません。このページの裏でAPIを呼び出すことはなく、何も保存されません。どこにも保存されないため、タブを閉じると鍵は消えます。その後の扱いはご自身の管理です。鍵はすぐにメールサーバーのシークレットストアに移し、サポートチケット、チャット、共有ドキュメントには絶対に貼り付けないでください。組織の規定で、強化されたマシンでの鍵生成が求められる場合は、そのマシンでopensslを使ってください。

DKIMレコードがDNSに長すぎる理由は?

2048ビットの公開鍵はエンコードすると約400文字になりますが、DNSの1つの文字列は255文字までです。レコード自体に問題はなく、DNSサーバーが連結する複数の引用符付き文字列として保存すればよいだけです。多くの管理画面は値全体を貼り付ければ自動で分割します。自分で分割する必要がある画面もあります。公開後にDKIMチェックで鍵が切り詰められている、または無効と表示される場合、原因はほぼこの分割です。

DKIM鍵のローテーション頻度は?

チームが確実に守れるスケジュールでローテーションし、秘密鍵が漏洩したら直ちに切り替えます。仕組みはセレクタです。新しいセレクタで新しい公開鍵を公開し、DNSの反映を待ってから署名システムを新しいセレクタに切り替え、古い鍵で署名されたメールがなくなったら古いレコードを削除します。Microsoftは、カスタムドメインでDKIMを有効にすると自社の鍵を自動でローテーションします。自分で管理する鍵は、自動化の仕組みがない限り手動でのローテーションです。

DKIMレコードの各タグの意味は?

v=DKIM1はバージョンを示します。k=rsaは鍵の種類です。p=には公開鍵そのものがbase64でエンコードされて入ります。機能するレコードに必要なのはこの3つだけです。実際には任意のタグが2つ見られます。t=yは鍵がテスト中であることを示し、失敗を厳しく扱わないよう受信側に伝えます。h=は鍵で使えるハッシュアルゴリズムを制限します。特別な理由がなければ、どちらも付けないでください。

DKIMだけでなりすましを防げる?

いいえ。DKIMが証明するのは、メールがドメインの公開鍵で署名され、途中で改ざんされていないことです。失敗したメールをどう扱うかは受信側に伝えず、署名ドメインが受信者に見えるFromアドレスと一致することも求めません。DMARCはその両方を加えます。署名ドメインと表示上のFromドメインのアライメントと、受信側が従うポリシーです。DKIMを公開し、SPFを追加してから、DMARCポリシーを設定してください。