1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS SES】DKIM設定(DomainKeys Identified Mail)

Last updated at Posted at 2025-06-22

はじめに

こちらはDKIM設定についての健忘録です。

DKIMとは

DKIM(DomainKeys Identified Mail) は、メールのなりすましや改ざんを防止するための技術です。

  • メール送信時に「秘密鍵」で署名
  • 受信者は「DNS上の公開鍵」で署名を検証

検証に成功すると、送信者の正当性が保証され、信頼性が向上します。

DKIMのメリット

  • スパムやなりすましと誤判定されにくい
  • DMARCと組み合わせてセキュリティ強化
  • ドメインの信頼性を可視化

DKIM構成の全体像(AWS SES)

構成要素 説明
SES ドメインの送信者認証と署名付与
DKIM署名 SESが自動的に DKIM-Signature を付与
DNS(Route 53等) SESが提供する3つのCNAMEレコードを追加

AWS SESで利用可能な3種類のDKIM設定方式

  • Easy DKIM
  • Deterministic Easy DKIM
  • BYODKIM(Bring Your Own DKIM)

Easy DKIM

▷ 概要

AWS SES が 自動で鍵ペアを生成・管理し、DNSにCNAMEレコードを設定することで、簡単にDKIMを有効にできる方式です。

▷ 特徴

  • 鍵の管理は SES 側で自動
  • DNSに設定するのは CNAME レコード(公開鍵への参照)
  • 最大3つのトークンが発行される(例: xyz._domainkey.example.com
  • 手間が少なく、個人〜中小企業での利用にも向いています

Deterministic Easy DKIM

▷ 概要

2023年にリリースされた Easy DKIM の進化版。セレクター(xyz._domainkeyxyz 部分)が 決定論的な(予測可能な)文字列 になることで、DNS管理の自動化やIaC対応がしやすくなっています。

▷ 特徴

  • Easy DKIM と同様、鍵管理は SES が自動で対応
  • セレクター名が決定論的(例: ses._domainkey.example.com
  • インフラコード(Terraform/CDKなど)での自動化がしやすい
  • マルチアカウント構成やCI/CD導入時に便利

BYODKIM(Bring Your Own DKIM / DKIM認証トークンの指定)

▷ 概要

自分で鍵ペアを用意・管理する方式です。SESに公開鍵を登録し、署名は自前のメールシステムやサービスで実行します。柔軟性が高く、高度なセキュリティ要件に対応可能です。

▷ 特徴

  • 鍵ペアは ユーザー自身が生成・管理
  • SESには公開鍵を登録する(秘密鍵は外部で管理)
  • DNSには TXTレコード を自分で作成して登録
  • オンプレや外部メール送信基盤との連携が可能
  • 高度なセキュリティ要件向き

3方式の比較まとめ

特徴 Easy DKIM Deterministic Easy DKIM BYODKIM
鍵の管理 SES が自動 SES が自動 ユーザーが管理
DNS設定方法 CNAMEレコード CNAMEレコード(予測可能) TXTレコード(自作)
セレクター名 ランダム文字列 固定 or 予測可能(例: ses) 自由に設定可能
署名の実行者 SES SES ユーザー側のシステム
運用のしやすさ ◎(簡単) ◎(自動化向き) △(上級者向け)
想定用途 一般的なSES運用 CI/CD環境・IaC対応 セキュリティ重視、外部連携

どれを選ぶべきか

ユースケース 推奨される方式
手軽に導入したい Easy DKIM
DNSもコード管理している / 自動化したい Deterministic Easy DKIM
自前で鍵管理したい / カスタム署名が必要 BYODKIM

Easy DKIMの設定手順(AWSコンソール)

① SESに送信ドメインを登録

  1. AWSマネジメントコンソールにログイン

  2. SES(Simple Email Service) のコンソールを開く

  3. ナビケーションペインから 設定 > [ID] を押下

  4. [IDの作成] を押下

  5. 以下の設定を入力:

    • IDタイプ: ドメイン
    • ドメイン: your-domain.com(※これは入力例です。ご自身のドメインを指定してください)
    • DNSレコードのRoute53への発行:有効化
    • DKIM 署名: 有効化(デフォルトでON)
  6. [IDの作成] を押下

② DKIMトークン(CNAMEレコード)を取得

  1. 作成されたドメインを押下
  2. DKIM」セクションを確認
  3. xyz12345._domainkey.your-domain.com のような 3つのCNAMEレコード が表示されます。

これらをDNS(Route 53など)に設定する必要があります。

③ DNSにCNAMEレコードを追加(Route 53等)

Route 53を使用している場合の設定手順:

  1. Route 53 コンソールを開く
  2. 該当のホストゾーン(your-domain.com)を押下
  3. [レコードを作成] を押下し、以下の情報を入力
項目 内容例(実際の値はSES画面からコピー)
レコードタイプ CNAME
レコード名 xyz12345._domainkey(ドメイン部分は不要)
値(Value) xyz12345.dkim.amazonses.com
TTL デフォルト(300など)

これを3件分繰り返します。

④ SESでDKIMステータスを確認

  1. SESの「Verified identities」に遷移

  2. 対象ドメインを押下

  3. Verification status」および「DKIM status」が Success になっていればOK

    • 反映には数分〜最大72時間かかる場合があります

送信後の確認方法

実際にSESで送信したメールを受信し、メールヘッダーを確認します。

DKIM-Signature のような行があれば、署名が付与されています。

DKIM-Signature: v=1; a=rsa-sha256; d=your-domain.com; ...

⚠ よくある注意点

注意点 内容
DNS反映の遅延 CNAMEレコードの反映に最大72時間かかることがあります
他サービスとの競合 Google Workspace や SendGrid などと同一ドメイン使用時に注意
メールアドレス単位不可 ドメイン単位のみDKIM署名が可能(xxx@your-domain.comは不可)
DMARCとの関係 DKIMが失敗するとDMARCポリシーでfail扱いになることがあります

まとめ

  • AWSコンソールから簡単にDKIM署名の設定が可能
  • DNSにCNAMEを3件追加するだけで署名が有効化
  • SPFやDMARCと組み合わせてセキュリティ強化

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?