見出し画像

メールが迷惑メールフォルダーに振り分けられたり、ブロックされることを防ぐ方法(AWS SES 設定)

本記事では、AWS SESでDKIM、DMARC、SPF を設定することにより、メールが迷惑メールフォルダーに振り分けられたり、ブロックされることを防ぐ方法をみていきます。
この記事の前提条件:

  • AWSアカウント

  • SESの基本的な知識

  • 有効なドメイン名

多くのシステムで、メールは重要な役割を果たしています。
電子メール認証は、メール送信者が本物で信頼できることを確認するための技術です。これにより、メールがスパムではなく受信トレイに確実に配信されるようになります。
この記事では、電子メール認証に不可欠な SPFDKIMDMARC について説明します。また、AWS SES での設定方法を見ていきます。

SPF

Sender Policy Framework(SPF)は、電子メールのなりすましを防ぐために設計された電子メール検証標準です。ドメイン所有者はSPFを使用して、どのサーバーがそのドメインからメールを送信することを許可されているかを電子メールプロバイダーに伝えます。
*https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-spf.html*

DKIM

DomainKeys Identified Mail(DKIM)は、特定のドメインから送信されたと主張する電子メールが実際にそのドメインの所有者によって認可されたものであることを確認するために設計された電子メールセキュリティ標準です。公開鍵暗号方式を使用して、プライベートキーでメールに署名します。受信サーバーは、ドメインのDNSに公開されている公開鍵を使用して、メールの一部が転送中に変更されていないことを確認できます。
*https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-dkim.html*

DMARC

Domain-based Message Authentication, Reporting and Conformance(DMARC)は、Sender Policy Framework(SPF)とDomainKeys Identified Mail(DKIM)を使用して電子メールのなりすましとフィッシングを検出する電子メール認証プロトコルです。DMARCに準拠するためには、メッセージはSPFまたはDKIMのいずれかを通じて認証される必要がありますが、理想的には、両方をDMARCと併用することで、電子メール送信に対して最高レベルの保護を確保できます。
*https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-dmarc.html*

AWS SES 設定

では、上記の設定を AWS SES でやってみましょう。
AWSアカウントにログインし、SESを検索します。

SESダッシュボードに移動した後、左側のサイドバーで[Identities]をクリックします。

下の画像で見られるように、現時点では設定されたアイデンティティがありません。

そこで、[Create identity]をクリックしてアイデンティティの作成を進めます。
このチュートリアルでは、ドメインアイデンティティを使用し、作成したドメインからメールを送信してみます。

すべての値をデフォルトのままにして、下にスクロールして[Create identity]をクリックします。

アイデンティティの作成には少し時間がかかる場合があります。作成が完了すると、そのホームページにリダイレクトされます。

上の画像では、検証が保留中の状態であり、青いバーに提案が表示されています。このアイデンティティの所有権を確認するには、提供されたCNAMEレコードを使用してドメインのDNS設定でDKIMを構成する必要があります。
下にスクロールすると、DomainKeys Identified Mail(DKIM)セクションが表示され、ドメインを検証するための複数のCNAMEレコードがあります。
このチュートリアルではAWS Route 53を使用しているため、AWSが自動的にこれらのレコードを作成してくれました。

外部DNSサーバーを使用している場合は、ドメイン名の各DNSプロバイダーで手動でレコードを作成する必要があります。CNAMEレコードの変更の伝播には、DNSプロバイダーによっては最大48時間かかる場合があります。

DKIM情報の検証が正常に完了したら、次にDMARC(Domain-based Message Authentication, Reporting, and Conformance)レコードを設定します。DMARCセクションが見つかるまで下にスクロールします。

上の画像では、_dmarcサブドメインに作成すべきTXTレコードが提案されているのが分かります。Route 53 DNSを使用しているため、[Publish record to Route 53]をクリックします。(外部DNSを使用している場合は、それぞれのDNSプロバイダーでTXTレコードを作成します。)
ここで、"v=DMARC1,p=none"の意味を理解しましょう。

1. v(バージョン)

  • 目的:DMARCのバージョンを指定します。

  • :DMARC1(現時点で唯一の有効な値)

  • 意味:現在の標準であるDMARCバージョン1を使用していることを示します。

例:v=DMARC1;

2. p(ポリシー)

  • 目的:メールがDMARCチェックに失敗した場合にとるべきアクションを定義します。

  • 可能な値:

    • none:アクションは取られません。メールは配信されますが、レポートは収集されます。

    • quarantine:メールは疑わしいとマークされ、受信者のスパム/迷惑メールフォルダーに送信されます。

    • reject:メールは拒否され、まったく配信されません。

  • 意味:DMARCをどの程度厳格に適用するかを指定します。

例:
p=none; // 監視のみ、強制なし
p=quarantine; // DMARCに失敗したメールはスパムに送られる
p=reject; // DMARCに失敗したメールはブロックされる

3. rua(集計レポートURI)

  • 目的:DMARC集計(要約)レポートの送信先を定義します。

  • :これらのレポートが送信される電子メールアドレス

  • 意味:メールがDMARCをパスまたは失敗しているかについてのフィードバックを提供します。

例:rua=mailto:reports@example.com;
これらがDMARCに使用される最も一般的な設定です。

特定の設定についてさらに詳しく知りたい場合は、以下のドキュメントを参照してください。

https://docs.aws.amazon.com/ses/latest/dg/send-email-authentication-dmarc.html#send-email-authentication-dmarc-implement
ドメインのDMARC設定の詳細については、DMARCウェブサイトの概要をご覧ください。

ここまでで、ドメイン名のDKIMとDMARCレコードを設定しました。最後に、ドメイン名のSPFレコード設定に取り組みます。
SPFレコードを設定するには、SESアイデンティティのMAIL FROMドメインを設定する必要があります。

カスタムMAIL FROMドメインセクションで[Edit]をクリックし、設定を開始します。

ここでボックスにチェックを入れると、以下の画面が表示されます。このチュートリアルでは、email.manippoudel.com サブドメインを使用します。

MX失敗時の動作について

  • デフォルトのMAIL FROMドメインを使用 — カスタムMAIL FROMドメインのMXレコードが正しく設定されていない場合、Amazon SESはamazonses.comのサブドメインを使用します。サブドメインは、Amazon SESを使用するAWSリージョンによって異なります。

  • メッセージを拒否 — カスタムMAIL FROMドメインのMXレコードが正しく設定されていない場合、Amazon SESはMailFromDomainNotVerifiedエラーを返します。このドメインから送信しようとするメールは自動的に拒否されます。

カスタムMAIL FROMドメインを設定したら、MXとTXTの2つのレコードが設定されます。

このセクションで述べたように、Route 53 DNSにレコードを公開する必要があります。[Publish DNS records to Route 53]をクリックすると、自動的にRoute 53にレコードが作成されます。
変更が伝播するまでしばらく待つ必要があります。レコードが反映されると、カスタムMAIL FROMドメインの設定が成功します。

これでドメインの電子メール認証プロトコルの設定が完了しました。SESのベストプラクティスに従っているかを確認するために、検証済みアイデンティティの推奨事項を確認します。

[Check for recommendations]ボタンをクリックしたら、数分間(1〜2分)待って、SESに関するAWSの推奨事項に準拠しているかを確認するための推奨事項を取得します。

読んでいただきありがとうございます。参考になりましたら幸いです。
気になることや質問がありましたら、ぜひコメントください。

この記事が役立つと感じた場合は、スキを押してもらえると嬉しいです!


この記事は、2024年10月に弊社のインフラエンジニアである Manip Poudel が執筆した内容を日本語に翻訳したものです。
英語版はこちらからご覧いただけます。
https://articles.wesionary.team/email-authentication-with-dkim-dmarc-and-spf-how-to-keep-emails-out-of-spam-28a406910369


採用情報

私たちはプロダクト共創の仕組み化に取り組んでいます。プロダクト共創をリードするプロダクト・マネージャー、そして、私たちのビジョンを市場に届ける営業メンバーを募集しています!


開発パートナーをお探しの企業様へ

弊社は、グローバル開発のメリットを活かし、高い費用対効果と品質を両立しています。経験豊富で多様性のあるチームが、課題を正しく理解し、最適なシステムと優れた体験を実現します。業務システムの開発、新規事業の開発、業務効率化やDX化に関するお困りごと、ぜひ弊社にご相談ください。