DKIMレコードとは?基本から設定方法まで徹底解説

DomainKeys Identified Mail(DKIM)は、メールのなりすましを防ぐための認証方式です。送信者のドメインの正当性を受信側のメールサーバーが確認できるようにすることで、メールのセキュリティを高めます。
DKIMレコードとは、受信側のサーバーがメールの正当性を確認するための公開鍵を含むDNSのTXTレコードです。通常はメールサービスプロバイダーから提供され、名前・バージョン、鍵の種類といった情報が含まれています。
メールの約85%が迷惑メールフォルダに振り分けられるとされていますが、DKIMを設定することで暗号学的な認証が可能となり、正当なメールであることを証明できます。これにより、あなたのメールが迷惑メール扱いされるのを防げるほか、メッセージの改ざんや、アカウントのなりすましなどの悪意ある行為からも保護されます。
DKIM署名とは何か?
DKIM署名とは、メールメッセージに追加される特別なヘッダーであり、重要な情報が含まれています。このDKIM署名ヘッダーはハッシュ値とも呼ばれる独自のテキスト形式の文字列で構成されています。
DKIM署名ヘッダー内の情報は、タグ=値のペアの形式で表されます。タグは1文字のアルファベットで、等号(=)に続きます。値の部分には、送信者の情報、メッセージの詳細、公開鍵の場所などが記載されます。
すべてのDKIM署名に必須のタグがあり、これらがないと検証プロセスは失敗してしまいます。代表的な必須タグには以下が含まれます:
- “v=” 署名仕様のバージョンを示します。値は常に1です。
- “a=” 署名アルゴリズムを示します。ほとんどの場合rsa-sha256が使用されます。
- “d=” 署名を行ったドメイン名を示します。
- “s=” セレクタ名を示します。ドメイン名と組み合わせて、DNS上の公開鍵の場所を特定するために使用されます。
- “h=” ハッシュ化に使用されたメールヘッダーのリストを指定します。
- “b=” 署名されたハッシュデータを表します。
- “bh=” メール本文のハッシュ値を示します。
DKIM署名には必須タグだけでなく、追加のセキュリティ対策として役立つ任意タグも存在します。これらのタグは必須ではありませんが、スパムの識別や検出精度の向上に役立つため、使用が推奨されています:
- “t=” メールが送信された時刻を示します。形式は1970年1月1日00時00分00秒(UTC)からの経過秒数です。例えば、2021年5月7日午前7時42分40秒(UTC)にメールを送信した場合、“t=” の値は1,620,373,360となります。
- “x=” DKIM署名の有効期限を示します。形式は “t=” と同じで、必ず “t=” よりも大きな値である必要があります。
オプションタグの値は自動的に生成されるため、ユーザー自身が秒数を計算する必要はありません。3
DKIMはどのように機能するのか?
DKIMの仕組みをご紹介する前に、まずは2種類のDKIM鍵の概念を理解しておきましょう。これには、DNSレコードに使用される公開鍵(受信側サーバーがメールメッセージを検証するために使用)と、認証プロセスの一部としてメールサーバーに保存される秘密鍵が含まれます。
すべてのDKIM処理は、メールサーバー内で行われます。
例えば、test@example.comというアドレスからメールを送信する場合を考えてみましょう。メッセージを送信する前に、送信側のメールサーバーは秘密鍵を使ってDKIM署名ヘッダーを生成します。メールシステムは、DKIM署名が送信者の情報と一致していることを確認することで、DKIM検証を開始します。
メッセージが配信されると、受信側のメールサーバーはexample.comのDNSレコードからDKIMレコードを取得します。受信側のメールサーバーは、そのDNSレコードにある公開鍵を使って、メッセージのDKIM署名を検証します。
公開DKIM鍵が署名内の情報と一致すれば、そのメッセージは正当なものと見なされ、受信トレイに振り分けられます。これは、メッセージが送信途中で改ざんされていないことを意味します。
DKIM鍵が情報と一致しない場合、そのメッセージは迷惑メールフォルダやスパムフォルダに振り分けられる可能性が高くなります。

DKIMはSPFやDMARCと関係があるのか?
DKIMは、送信するメールを保護する唯一のセキュリティ標準ではありません。Sender Policy Framework(SPF)やDomain-based Message Authentication, Reporting, and Conformance(DMARC)といった標準も、メールインフラを保護するために活用できます。
SPFは、ユーザーのドメインからメールを送信できる相手を制限することで、なりすまし対策として機能します。SPFは、ドメインが認証済みのサーバーのみからメールを送信することを保証するメール認証プロトコルです。
DMARCは、SPFとDKIMという2つの認証方式を共通の仕組みに統合します。また、DMARCはドメイン所有者に対して、認証されていないメッセージをどのように扱うかを通知する手段も提供します。
DKIM、SPF、DMARCはそれぞれ異なる認証の側面に対応しており、互いに補完し合うことができます。これらを組み合わせることで、メールセキュリティにおいて最良の結果が得られ、ドメインの評価やメールの配信率も向上します。
DKIMは本当に重要なのか?
DKIMは、メール送信者の身元を認証することで、メッセージが迷惑メールフォルダやスパムフォルダに振り分けられないようにします。これは、取引メールやビジネスメールをお客様に頻繁に送信する組織にとって不可欠です。
組織や企業の責任の一部は、自社のドメインとメッセージのインテグリティを守る対策を打つことです。DKIMがないと、攻撃者が正規のメールのように見せかけたメールを簡単に送信できてしまい、詐欺に巻き込む恐れがあります。
メールにDKIMレコードを追加する方法
DKIMを設定するには、主に3つのステップがあります。まずDKIM鍵を生成し、公開鍵をDNSサーバーに、秘密鍵を送信メールサーバーに設定します。
DKIMに対応している多くのメールサービスでは、DNSレコードに追加するための公開情報を自動で生成してくれます。そのため、自分のドメインのDNSレコードにアクセスできることが重要です。
Google Workspaceのような一部のメールサービスでは、秘密鍵が自動で生成されることもありますが、手動で追加する必要がある場合もあります。
次のセクションでは、さまざまなメールサービスでDKIMがどのように機能するかをご紹介します。

HostingerのメールサービスでDKIMレコードを追加する方法
Webホスティングプロバイダーが提供するメールサービスを利用すれば、設定手順を簡略化できます。Hostingerのメールサービスを使用する場合は、Hostingerメールを設定するだけで、DKIMレコードが自動的に追加されます。
1. 新しいメールアカウントを設定するには、Webホスティングアカウントにログインし、ドメイン名の横にある「管理」ボタンをクリックします。次に、「メール」→「メールアカウント」へ進んでください。

2. ドメイン名の横にある管理を選択し、「メールアカウントを作成」ボタンをクリックします。

3. 「メールアカウントを設定」からフォームに必要事項を入力し、作成ボタンをクリックします。

4. DNS設定に移動し、DKIMの横にある「デフォルトを設定」をクリックします。反映には最大24時間かかることがあります。

5. ステータスがアクティブに変わったら、DKIMの横にある矢印アイコンをクリックし、「DNSを確認」を選択します。

他のメールプロバイダーでDKIMレコードを追加する方法
DKIMの基本的な設定手順は、どのメールサービスプロバイダー(ESP)でもほぼ同じです。
HostingerのメールやGoogle Workspaceなどの一般的なESPでは、
ユーザーがDKIMレコードを簡単かつ迅速に追加できるように設計されています。このセクションでは、Google Workspaceを例に、DKIMの設定方法をご紹介します。
Gmailはすべてのメールに対して既定のDKIMドメイン鍵で署名しますが、追加のセキュリティ層として、お客様のメールドメインを手動で認証することをおすすめします。
以下は、Google WorkspaceでDKIMを設定するステップです:
1. Google Workspaceアカウントにログインし、アプリ内の「管理」ボタンを選択します。管理コンソールのホームページは、Google Workspaceのメールアカウントのみで利用できます。

2. 管理コンソールのホームページで、ヘッダーのGoogle管理コンソールの横にある三本線をクリックします。「アプリ」 → 「Google Workspace」 → 「Gmail」の順に進み、認証プロセスを開始します。

3. 「メールの認証」をクリックして、DKIMを設定します。

4. 選択したドメインは自動的にお客様のドメインになるため、変更しないでください。そのまま「新しいレコードを生成」をクリックします。

5. まず、「DKIM 鍵のビット長」を選択します。より安全性の高い2048を選ぶのがおすすめです。一部のドメインでは1024ビットのキーしかサポートされていない場合があるため、ドメインホストに確認してください。プレフィックスセレクタはgoogleのままで構いません。「生成」をクリックして続行します。

6. これにより、公開鍵用の「TXT レコードの値」が生成されます。ドメインサーバーのDNSゾーンエディタに移動して、DNSレコードを追加してください。

7. Googleによって生成されたレコードを、「DNSレコードを管理」の下に追加します。受信サーバーはこの鍵を使ってお客様のメッセージを検証できます。

8. Google Workspaceの認証ページに戻り、「認証を開始」ボタンをクリックしてDKIM署名を有効にします。
9. DKIMのセキュリティ標準が機能しているかを確認するには、GmailまたはGoogle Workspaceを利用している相手にメールを送信します。
10. 受信側のメールの受信トレイにアクセスし、メッセージを開きます。左上の三点アイコンをクリックし、「原文を表示」を選択します。

11. DKIMが正常に機能していれば、ドメイン名の前に「PASS」と表示されます。
これは、そのドメインが保護されていることを意味します。

変更が反映されるまでに最大24時間かかる場合があることにご留意ください。
自前のメールサーバーでDKIMレコードを追加する方法
独自のメールサーバーを運用している場合、署名用の鍵を生成するには、SparkPostのようなDKIMジェネレーターが必要です。
一部のジェネレーターではセレクターを自分で作成するオプションがあり、他のものでは自動的に作成されます。

- 鍵が生成されたら、公開DKIM鍵をコピーしてDNSレコードに追加します。タイプは「TXT」を選択し、名前は以下の形式になります。
Selector-name._domainkey
- 公開DKIM鍵をターゲットまたはコンテンツ欄に貼り付けます。秘密鍵については、メールサーバーがDKIMに対応していることを確認してください。
- 秘密鍵で新しいテキストファイルを作成します。BEGIN RSA PRIVATE KEYからEND RSA PRIVATE KEYまで、すべてを漏れなくコピーしてください。
- WindowsではファイルをC:\pmtaに、Linuxでは/etc/pmtaに保存します。
- ドメインのコントロールパネルに移動し、DKIM署名の欄でそのテキストファイルを選択します。
- 最後に、セレクター名を入力してDKIM署名の設定を完了します。
まとめ
有害なメールの配信やなりすましを防ぐためには、ドメインから送信されるすべてのメッセージを保護する責任があります。特にスモールビジネスでは、マーケティングメールが迷惑メールフォルダに振り分けられないことが重要です。
この問題への対策のひとつが、DKIMレコードと署名を追加することです。送信側および受信側のメールサーバーは、秘密鍵と公開鍵を用いてメッセージを認証します。DKIM標準は、SPFやDMARCとも連携しながら、メールの配信率向上にも貢献します。
DKIMレコードと署名を追加するさまざまな方法をご紹介しました。DKIMレコードの追加は、Hostingerのメールサービス、Google Workspace、または独自のメールサーバーを使って実施できます。いずれの方法を選ぶにしても、まずは秘密鍵と公開鍵のDKIM鍵を取得しておくことが重要です。
これで、 独自ドメインから送信するすべてのメッセージを簡単に保護できるようになります。ぜひご活用ください。