Amazon Simple Email Service (Amazon SES) で送信した E メールが、送信元ポリシーフレームワーク (SPF) アライメントまたは DomainKeys Identified Mail (DKIM) アライメントのためのドメインベースのメッセージ認証、レポート、および適合 (DMARC) 検証に失敗します。解決方法を教えてください。
簡単な説明
DMARC は、SPF と DKIM を使用して電子メールのなりすましを検出する電子メール認証プロトコルです。DMARC にパスするには、メッセージは SPF または DKIM、あるいはその両方にパスする必要があります。
SPF アライメントまたは DKIM アライメントを DMARC で検証する場合、メールヘッダーの主要コンポーネントは次のとおりです。
- メッセージ受信者に表示される送信元アドレス
- メッセージの送信元を示すメール送信元アドレスまたはエンベロープ送信元アドレス
- DKIM シグネチャ内の d= ドメイン
DMARC は、メール送信元またはエンベロープ送信元ドメインを送信元ドメインと照合して SPF アライメントをチェックします。このとき、以下のいずれかの条件を満たすことが求められます。
- 厳密アラインメント:****メール送信元またはエンベロープ送信元ドメインは送信元ドメインと同じです。
- 緩和アラインメント:****メール送信元またはエンベロープ送信元ドメインは、送信元ドメインのサブドメインです。
DMARC は、DKIM シグネチャの d= ドメインと送信元ドメインを照合して DKIM アライメントをチェックします。このとき、以下のいずれかの条件が満たされることが求められます。
- **厳密アラインメント:**d= ドメインは送信元ドメインと同じです。
- **緩和アラインメント:**d= ドメインは送信元ドメインのサブドメインです。
解決策
DMARC 検証にパスするには、メールが SPF 認証または DKIM 認証のいずれかをパスしている必要があります。
DMARC レコードで SPF または DKIM の緩和アラインメントを使用します
SPF または DKIM のいずれかの緩和アライメントを使用すると、メールが DMARC 検証にパスしやすくなります。
SPF と DKIM のドメインの DMARC アライメントを確認するには、次のコマンドを実行します。
nslookup -type=TXT _dmarc.example.com
このコマンドは、次のような DMARC レコードを返します。
"v=DMARC1;p=quarantine;pct=25;rua=mailto:hello@example.com"
SPFの場合、レコードに (上の例のように) aspf 文字列が含まれていない場合、またはレコードに aspf=r という文字列が含まれている場合、ドメインは緩和アラインメントを使用します。レコードに aspf=s という文字列が含まれている場合、ドメインは厳密アラインメントを使用します。
DKIMの場合、レコードに adkim 文字列が含まれていない場合、またはレコードに adkim=r という文字列が含まれている場合、ドメインは緩和アラインメントを使用します。レコードに adkim=s という文字列が含まれている場合、ドメインは厳密アラインメントを使用します。
厳密アラインメントから緩和アラインメントへの変更は、システム管理者が行う必要があります。
SPF を通じて DMARC に準拠します
SPF レコードを取得するには、次のコマンドを実行します。
nslookup -type=TXT example.com
このコマンドは、次のような SPF レコードを返します。
"v=spf1 include:amazonses.com ~all"
メッセージが SPF 経由で DMARC に準拠していることは、以下の手順で確認します。
1. メッセージが SPF チェックにパスする。つまり、ドメインの SPF レコードには、Amazon SES がユーザーのドメインに代わって E メールを送信することを許可する「include: amazonses.com」が必要です。
2. 電子メールヘッダーの 送信元アドレスのドメインが、送信側メールサーバーが受信側メールサーバーに指定する メール送信元 または エンベロープ送信元ドメインと一致する。
Amazon SES を使用して E メールを送信するとき、メール送信元またはエンベロープ送信元ドメインはデフォルトで amazonses.com であり、送信元ドメインは検証したドメインです。これらの値はSPFアライメントとDMARC検証にパスしません。
これを解決するには、カスタムのメール送信元ドメインを設定して、メール送信元の値が検証済みドメインのサブドメインになるようにする必要があります。たとえば、認証済みドメイン (送信元ドメイン) が example.com の場合、カスタムのメール送信元ドメインを mail.example.com に設定できます。これらの値は SPF アライメントと DMARC 検証にパスします。
注:Amazon SES では、カスタムのメール送信元サブドメインの一部として SPF レコードを追加します。手順については、「メール送信元ドメインの設定」を参照してください。
DKIM を通じて DMARC に準拠します
Amazon SES で Easy DKIM を使用すると、3 つの CNAME レコードが与えられます。それぞれの DKIM レコードを確認するには、各 CNAME で次のコマンドを実行します。
nslookup -type=CNAME example1._domainkey.example.com
このコマンドは DKIM レコードを返します。
example1.dkim.amazonses.com.
メッセージが DKIM を通じて DMARC に準拠していることは、以下の手順で確認します。
1. メッセージに有効な DKIM 署名がある。
2. メールヘッダーの送信元アドレスが、DKIM 署名の d= ドメインと一致している。
Easy DKIM を設定するのがベストプラクティスです。この機能により、DKIM を通じて両方の DMARC 検証要件を満たすことができるからです。メールに手動で署名することもできますが、Amazon SES は作成した DKIM 署名を検証しません。