AWS SESとSPFの話(その2)
では、前回の続きです。
AWS SESでメールを送った時はどうなるのか?
まず、特に何も特別な設定はしないで、SESでメールを送ってみます。
受信者でgmailで受信した場合、
メッセージのソースを表示すると、詳細の情報が確認できます
上記から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レコードの正しい書き方 : 迷惑メール対策委員会