私の戦闘力は53万です

awsとgcpについて書きます

AWS SESとSPFの話(その2)

では、前回の続きです。

AWS SESでメールを送った時はどうなるのか?


まず、特に何も特別な設定はしないで、SESでメールを送ってみます。

受信者でgmailで受信した場合、
メッセージのソースを表示すると、詳細の情報が確認できます

f:id:remmemento:20191105204646p:plain
gmail

f:id:remmemento:20191105204723p:plain
上記からSPFの認証を合格(PASS)したことが確認できます。

ソースを確認

メールのソース部分を見ていきます。
SPFで検証するレコードは、下記になります
Return-Path: xxxxx-xxxxxx-xxxxxxx-xxxxxxx@amazonses.com

ここで、「あれ?amazonses.comからなんてメール送信していないのに?」と思うかもしれません。
実はAWS SESで送信するメールは、特別な設定をしない限りは「amazonses.com」から送信されます。

メール送信元の情報

ここが紛らわしいところです。
実はメールには、送信元の情報が2つ存在します。
1つはメールヘッダで、もう1つはエンベロープfromです。
呼び方は、いろんな呼ばれ方がありますが、要は2つあります。
代表的な用途としては、
メールヘッダの方は、メールアプリとかで送信元を表示するために、
エンベロープfromの方は、実際にメールが送信されるサーバを示すために利用されます。

なんでそもそも2個あるのかという説明は下記が分かりやすいかと思います。
https://business.biglobe.ne.jp/mail/semi/semi_002.html

SPFの確認をしてみる

SPFは実際にメールを送るサーバを検証したいので、エンベロープfromを検証します。
エンベロープfromはメールソースの「Return-Path:」を確認すれば分かります。

AWS SES でデフォルト設定で送信した場合、
SPFで検証するレコードは下記のようになっているはずです。
Return-Path: xxxxx-xxxxxx-xxxxxxx-xxxxxxx@amazonses.com

では「amazonses.com」のSPF設定(TXTレコード)を確認しましょう。

digします。

dig email.amazonses.com txt
amazonses.com. 117 IN TXT "v=spf1 ip4:199.255.192.0/22 ip4:199.127.232.0/22 ip4:54.240.0.0/18 -all"


SPFでは上記送信元IP(54.240.8.42)が送信元のIPと記載されています。
送信元のIP(54.240.8.42)が上記TXTレコードの
「ip4:54.240.0.0/18」部分に該当するしたため、SPF認証をパスしていることが分かります。

よってAWS SESでは、特に何も初期設定をしなくてもSPFの認証を通ってしまいます。
AWSのドキュメントにもそのことが記載されていますね。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/spf.html

国内ケータイキャリアに送る時は対策が必要

ただ、これにプラスして、SESでは国内キャリアに送る場合、
特別な設定を追加しておいたほうが良いです。

au,docomoにおいて、迷惑メール設定次第では
senderID(上記で言うメールヘッダ)でのSPFレコード検査も実施される仕様のようです。
SPFレコードを設定することでメール到着率が上がることが報告されています。
下記が各会社のアナウンスです。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/spf.html
https://www.au.com/mobile/service/attention/spf-record/
https://www.nttdocomo.co.jp/service/imode_mail/notice/sender_id/

具体的にはTXTレコードに「v=spf1 include:amazonses.com」を追加する形となります。
digコマンドで引いた時に下記のように出てくるイメージです。
your_domainの部分は対象のドメインに置き換えてください。

your_domain TXT "v=spf1 include:amazonses.com ~all"

すでにTXTレコードが存在している場合はケースバイケースです。
SPFの書き方として下記が参考になると思います。
間違いから学ぶSPFレコードの正しい書き方 : 迷惑メール対策委員会