メール到達率とDNS

DKIM 設定: 独自ドメインの構成と検証手順

著者:Alexey Bulygin
独自ドメインの DKIM 設定と DNS 確認

DKIM 設定は、独自ドメインの送信環境を整えるうえで重要です。鍵の欠落、破損、切り詰め、署名ドメインの誤りは、認証結果や受信トレイへの到達に影響し得ます。このガイドでは、鍵の生成、DNS レコードの公開、コマンドラインでの確認、正常表示の後でも DMARC を失敗させるアライメントの問題を扱います。

MX、SPF、メールボックス、クライアント設定を含む全体の構成は、自分のドメインでメールを作成する方法から確認してください。プラットフォームを選ぶ段階なら、ビジネスメールのガイドが全体像を説明しています。

DKIM の失敗は、多くの場合、暗号技術そのものではありません。DNS のコピー間違い、管理画面によるドメインの二重追加、2048 ビット鍵の破損、配信事業者が自社ドメインで署名するといった設定が原因です。見当違いの調査に時間を費やさないため、再現できる手順を使います。

DKIM 設定が実際に行うこと

DKIM では公開鍵を DNS に公開し、メールサーバーが対応する秘密鍵でメッセージに署名します。受信側は署名を検証し、署名ドメインが責任を持つことと、署名対象の重要なヘッダーや本文が転送中に変わっていないかを確認します。

DKIM は非対称暗号を使います。送信システムが秘密鍵を保持し、DNS が公開鍵を提供します。送信されるメールには DKIM-Signature ヘッダーが付き、署名ドメイン(d=)とセレクター(s=)が示されます。受信サーバーはセレクターを DNS で調べ、内容に対して署名を検証します。仕組みはRFC 6376で定義されています。

Google は 2024 年二月から、一括送信者の要件を厳しくしました。こうした送信者には SPF と DKIM の両方が必要で、少なくとも一方が表示上の From ドメインと一致し、DMARC アライメントを満たす必要があります。最新の表現は Google の送信者ガイドライン FAQで確認してください。

つまり、有効な署名でも目的を満たすとは限りません。DKIM の不具合やアライメント不足は、DMARC の問題や迷惑メールへの振り分けに関係する可能性があります。

DNS を編集する前に確認すること

適切な DKIM 設定は、実際に署名するシステムを特定するところから始まります。移行、転送の変更、プロバイダーの切り替えでは特に見落としやすい点です。DKIM レコードを生成または取得する場所は、送信経路によって決まります。

まず、このドメインの送信を誰が行うか確認します。

  1. Google Workspace なら、Google Admin で DKIM 鍵を生成します。
  2. Microsoft 365 なら、そのサービスで DKIM を有効にします。
  3. SendGrid、Mailgun、Amazon SES なら、そのプロバイダーでドメイン認証を設定します。
  4. TrekMail 管理の SMTP なら、TrekMail に表示された DKIM 値を使います。
  5. TrekMail がメールボックスを扱い、送信は外部 SMTP なら、SMTP プロバイダーの署名手順に従い、必要に応じて TrekMail の SMTP を設定します。

TrekMail では両方の経路が紹介されています。Nano は BYO SMTP を使い、有料プランでは管理された SMTP を利用できると説明されています。Bring Your Own SMTPの文書には SES、SendGrid、Mailgun の例があります。到達性のトラブルシューティングでは、管理された SMTP が独自ドメインの DKIM 鍵で署名するとされています。署名が有効かつ整合したままなら、転送やリレー後の DMARC に役立つ場合があります。最新のプラン内容は確認してください。

例として、メールボックスは TrekMail にあり、送信が SendGrid を経由するなら、署名するのは SendGrid です。TrekMail にメールを保存しても、SendGrid の DKIM が自動的に設定されるわけではありません。

最初の原則は、実際に署名するシステムで鍵を生成することです。別の場所で生成した鍵は、DNS に存在しても送信に使われないことがあります。

DKIM のレコード形式: TXT と CNAME

一般的には、公開鍵を含む TXT レコードを公開します。一部のプロバイダーでは、ホストされている鍵を参照する一つ以上の CNAME レコードを要求します。どちらも利用でき、重要なのは送信者から指定された値を正確に使うことです。

従来の TXT 型 DKIM の公開先:

selector._domainkey.example.com

値の例:

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

管理されたサービスが CNAME を使うのは、利用者が DNS を編集し直さずにプロバイダーが鍵をローテーションできるためです。TXT は直接管理できますが、必要な鍵の更新も自分で担当します。

方式公開するもの適した用途主なリスク
TXTDNS 内の公開鍵全体Google Workspace、多くの自己管理や直接接続の構成長い鍵の切り詰めや貼り付け間違い
CNAMEプロバイダーの DKIM レコードへの別名管理された基盤や簡単な鍵のローテーション参照先の誤り、必要な複数レコードの不足

注意したいのはホスト欄です。ドメインが example.com、セレクターが k1 なら、通常のホスト名は次のとおりです。

k1._domainkey

次の形式ではありません。

k1._domainkey.example.com

多くの DNS 管理画面はドメインを自動で追加します。その画面に完全な名前を入力すると、k1._domainkey.example.com.example.com になる場合があります。受信サーバーが探す位置にレコードがなくなります。

TrekMail の必要な DNS レコードも参考になります。一部の DNS プロバイダーが DKIM TXT を引用符付きの部分に分ける必要がある点も説明されています。

DNS で DKIM を設定する手順

実務の流れは、セレクターの取得、レコードの公開、DNS 更新の待機、正確な応答の確認、必要なら署名の有効化です。検証を省くと、正しく設定されたか確認できません。

次の手順を使ってください。

  1. 送信プロバイダーで DKIM レコードを生成または表示します。
  2. セレクターを正確にコピーし、プロバイダーが認めない限り変更しません。
  3. selector._domainkey に DNS レコードを作成します。
  4. TXT 全体または CNAME の参照先を指定どおり貼り付けます。
  5. 別の要件がなければ TTL を 3600 に設定します。
  6. DNS 更新を待ちます。
  7. 本番送信前に dig または nslookup で確認します。
  8. プロバイダーに最終的な有効化スイッチがあれば、署名を有効にします。

TXT 型の設定例:

; DNS record
k1._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A..."

CNAME 型の設定例:

; DNS record
s1._domainkey.example.com. 3600 IN CNAME s1.domainkey.u123456.wl.provider.net.

DNS 更新は早く見える場合もありますが、すべての場所で即時に反映されるわけではありません。TrekMail の文書にある約 5 から 15 分はよくある目安で、保証ではありません。状態が変わらなければ、書式、重複レコード、ホスト名に加え、TTL とキャッシュを確認してください。

DKIM と 2048 ビット鍵の問題

送信プロバイダーと DNS ホストが対応していれば、現代の DKIM には 2048 ビットの RSA 鍵を使うのが適切です。暗号学的に強い一方で長いため、古い DNS 管理画面で問題になることがあります。切り詰められた鍵は、存在しているように見えるのに検証が失敗するため、特に紛らわしいものです。

Google の文書でも、対応していれば 2048 ビットを推奨し、長いレコードを扱えないホスト向けに 1024 ビットを代替として示しています。問題は DNS 自体より、その管理画面にあることが少なくありません。

2048 ビットの DKIM 設定で起きやすい問題:

  1. 管理画面が通知せず値を短くする。
  2. 引用符付きの文字列分割が必要なのに説明しない。
  3. Base64 鍵の途中に改行を入れる。
  4. プロバイダーの想定と異なる方法で文字をエスケープする。

分割した文字列が必要なら、次のように公開します。

"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr..."
"restOfTheKeyContinuesHereWithoutAddingSpacesInsideTheBase64Data"

受信側が引用符付きの部分を結合するのは正常です。ただし、実際の鍵の中に空白を追加してはいけません。余分な一文字でも検証できなくなる可能性があります。

多数のドメインを管理すると、この違いが運用負担になります。あるレジストラは長い TXT を正しく扱い、別のものは扱えず、さらに別のものは書き換えます。そのため、代理店はレジストラを標準化したり、可能ならプロバイダーがホストする CNAME 鍵を使ったりします。複数顧客の運用全体は複数ドメインのメールホスティングで説明しています。

DKIM の検証: DNS と実際のメールを確認する

ダッシュボードの「有効」表示だけでは不十分です。公開 DNS を直接問い合わせ、返されたレコードを確認し、実際のメールヘッダーで期待する署名ドメインとセレクターを確かめます。それより少ない確認は部分的なものです。

まずコマンドラインを使います。

# macOS / Linux
dig txt k1._domainkey.example.com +short

# Windows
nslookup -type=txt k1._domainkey.example.com

完全な v=DKIM1 レコード、または結合すると鍵全体になる引用符付き文字列を確認します。結果が空なら、順に調べてください。

  1. セレクターが正しいか。
  2. ホスト欄でドメインが二重になっていないか。
  3. レコード形式がプロバイダーの指定と合っているか。
  4. 値が完全で、切り詰められていないか。
  5. 古いレコードがまだキャッシュされていないか。

続いて、Gmail などヘッダーを確認できるメールボックスへテスト送信します。認証結果と DKIM 署名を探してください。

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=k1; ...
Authentication-Results: ... dkim=pass header.d=example.com ...

DNS が正しくても受信トレイに届きにくければ、別の要因も確認します。TrekMail の迷惑メールに入る場合のガイドでは、DNS の状態、ドメインのウォームアップ、リストの品質、内容も重要としています。DKIM は認証の一部を整えますが、良好なレピュテーションを自動的に得るものではありません。

転送にも注意が必要です。転送後は SPF が失敗することがあります。署名対象が変わらなければ、有効で整合した DKIM 署名により、こうした経路でも DMARC を通過できる場合があります。メール転送を読み、転送による SPF の失敗を認証全体の失敗と混同しないようにしてください。

DKIM 設定とアライメントの落とし穴

正常に見える DKIM がアライメントで問題になることがあります。署名が有効でも、署名ドメインと表示上の From ドメインが整合せず、整合した SPF も成功していなければ、DMARC は失敗し得ます。DNS が原因の場合もありますが、多くはプロバイダーの設定です。

よくある例:

From: ceo@example.com
DKIM 署名ドメイン: d=sendgrid.net
結果: DKIM は成功しても、署名ドメインが example.com と整合しないため、DMARC アライメントは失敗する可能性があります。

Google は一括送信者に、表示上の From ドメインが SPF または DKIM と、少なくとも組織ドメインのレベルで整合することを求めています。配信事業者が自社ドメインだけで署名するなら、その署名は独自ドメインの DKIM アライメントを満たしません。

必要な機能はプロバイダーによってドメイン認証やホワイトラベル化と呼ばれます。カスタム Return-Path は主に SPF アライメントに関係し、それだけでは DKIM 署名ドメインを変更しません。DKIM の最終的な署名は、次のような形を目指します。

DKIM-Signature: ... d=example.com; s=s1; ...

整合した DKIM は DMARC を支える重要な設定です。ただし、受信トレイへの到達を保証するものではありません。

DKIM 設定の従来の方法と新しい方法

従来の方法は、ドメイン、プロバイダー、セレクター、DNS の違いを個別に手作業で処理するため、ミスが起きやすいものでした。新しい方法は標準化です。繰り返せる送信モデルを選び、DNS 確認を集約して、ドメインごとに同じ解決策を作り直さないようにします。

従来の方法新しい方法
任意のツールで鍵を作り、送信元と合うことを期待する実際に署名する送信システムで DKIM を生成する
TXT を一つずつ貼り、問い合わせが来てから対応する可能なら管理された署名を使い、CLI で検証する
すべてのドメインを特別扱いする顧客とチームの全ドメインで共通の手順を使う
キャンペーン失敗後に迷惑メールを調査する最初の本番送信前に DNS、アライメント、ヘッダーを確認する

TrekMail では、このモデルに沿って複数の独自ドメインを一つのダッシュボードで管理し、メールボックスごとの課金ではなく共有ストレージを使い、IMAP で既存のメールを移行できると説明されています。BYO SMTP または含まれる SMTP の選択はプランによります。紹介されている有料プランは月額 $3.50からですが、最新の料金と機能を確認してください。チーム、中小企業、代理店、MSP のインフラ管理負担を減らすことを目指した基盤です。

大きな問題が DNS より運用手順にあるなら、顧客メールの管理も参照してください。複数ドメインの到達性問題では、管理責任の曖昧さが原因になることも多いものです。

最後の DKIM 設定チェックリスト

適切な設定には、正しい署名システム、DNS 名、欠損のない鍵、公開 DNS の確認、DMARC に必要な整合性が含まれます。どれかが誤っていると、認証全体が弱くなります。

  1. 送信を署名するシステムを確認する。
  2. プロバイダーのセレクターとレコード形式を正確に公開する。
  3. DNS ホストが完全な名前を明示的に要求しない限り、ホスト欄は selector._domainkey にする。
  4. 2048 ビット鍵を完全に保ち、管理画面が要求する場合だけ引用符付きの文字列を分割する。
  5. dig または nslookup で検証する。
  6. テスト送信して、dkim=pass と整合した header.d をヘッダーで確認する。
  7. 運用開始後に DMARC の結果を確認する。

DKIM で重要なのは複雑さではなく正確さです。依存関係を減らしたいなら、TrekMail でドメインと送信経路を標準化し、DNS を一か所で確認できる形にできます。そのうえで、実際に使う各送信経路を検証してください。

この記事を共有

投稿 共有 共有

TrekMail の運用と保護に必要な技術を使用します。確認すると、Cookie ポリシーに記載された限定的な分析と広告測定も許可されます。

TrekMail にサインイン

ダッシュボード、メールボックス、DNS にアクセスできます。

または

12 文字 パスワードが一致

または

再設定メールを送信しました

このメールアドレスのアカウントが存在する場合、パスワード再設定の手順をお送りしました。

続行すると、TrekMail の 利用規約 および プライバシーポリシーに同意したものとみなされます.