主要プロバイダの送信ドメイン認証実施状況を知ってほしい

# 読んで欲しい人

- Amazon SES などでメール配信を利用 or 検討している人
- SPF, DKIM, DMARC を PASS して安心している人（先週の僕）
- キャリアメールで大量のバウンスが発生している人（今週の僕）

# 実施状況

主要プロバイダにおける送信ドメイン認証実施状況です（2021年12月時点）。

|                                           | SPF | DKIM | DMARC | Sender ID | MXレコードチェック ※1 | 
| ----------------------------------------- | --- | ---- | ----- | --------- | ---------------------- | 
| Gmail (@gmail.com) | ○  | ○   | ○    |           |                        | 
| Yahoo! (@yahoo.co.jp) | ○  | ○   | ○    |           |                        | 
| au (@ezweb.ne.jp)                         | ○  |    |     | ○ ※2      |                        | 
| softbank (@i.softbank.jp)                         | ○  |    |    |        |                        | 
| docomo (@docomo.ne.jp)                    | ○ ※3  | ○  |  ○ | ○      | ○  ※2               | 

Gmail や Yahoo! といったフリーメールは、`SPF`、`DKIM`、`DMARC` が主要です。
キャリアメールは、`SPF`に加え`Sender ID` や `MXレコードチェック`が実施されています。

※1 ヘッダFromのドメインに対してMXレコードの存在を確認することを指します
※2 迷惑メールフィルターの設定によって実施状況は変わります
※3 Sender ID が実施できない場合、SPF が実施されます

> 2022/08/24 追記
docomo が新たに DMARC および DKIM に対応しました
https://www.itmedia.co.jp/news/articles/2208/23/news153.html

# 詳細

### Gmail

ドキュメントは見つかりませんでしたが、Gmail のソースを確認すると`SPF`、`DKIM`、`DMARC` の認証結果が表示されます。このため、認証の仕組みとしてこれらを用意しており、いずれかで失敗するとバウンスやフィルタリングの対象となると考えられます。
![0106017d7a678cae-e15318f1-7429-4dba-9a09-76b188d61a51-000000@ap-northeast-1.amazonses.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619762/594f36fb-b60f-5879-2630-eb7613687bc5.png)

### Yahoo!

[迷惑メール相談センター](https://www.dekyo.or.jp/soudan/contents/auth/auth-fm.html)のHPより確認できます。
`SPF`、`DKIM`、`DMARC` の認証を実施しているようです。

公式のアナウンスもありました。
>送信ドメイン認証技術「DMARC（Domain-based Message Authentication, Reporting & Conformance）」を3月より順次導入します。（中略）「Yahoo!メール」では送信元のドメインを認証するSPF（※1）を2006年から、DKIM（※2）を2012年より順次導入しています。
https://security.yahoo.co.jp/news/0014.html

### キャリアメール

こちらも[迷惑メール相談センター](https://www.dekyo.or.jp/soudan/contents/auth/auth-phone.html)のHPより確認できます。

携帯3社では`SPF`のみ必要であるように見えます。が、これが落とし穴です。
迷惑メールフィルターの設定状況によっては`SPF`に対応していても迷惑メール判定されてしまいます。
とりわけ、au と docomo には注意が必要です。

### au

迷惑メールフィルターの設定に依存して、`SPF`に加え、`Sender ID`が必要になる場合があります。両者の違いは[こちら](https://sendgrid.kke.co.jp/blog/?p=2292)をご覧ください。

>お客さまが迷惑メールフィルターの「なりすまし規制 (高)」をご利用になる場合、エンベロープFromに加えてPRAに記述されているドメインを使用したSPFレコードの確認を行い、SPFレコードが無い場合はメールを拒否します。
https://www.au.com/mobile/service/attention/spf-record/

なお、PRAに記述されているドメインとは、ヘッダ From のドメインのことになります。

### docomo

こちらも`SPF`に加えて`Sender ID`が必要になります。ヘッダ From が存在しないのはレアケースな気もしますが。
>SPF（TXT）レコードの確認には、メールヘッダのFROMフィールドを使用します。なお、メールヘッダのFROMフィールドが存在しない場合はエンベロープFROMを使用します。
https://www.nttdocomo.co.jp/service/imode_mail/notice/sender_id/

docomo の場合、`Sender ID`だけでは不十分です。
迷惑メールフィルタの設定によって、ヘッダ From のドメインに対して MX レコードの有無を確認することがあるためです。

>「存在するドメインからのみ受信」を選択した場合は、DNS（Domain Name System）サーバを参照し、送信元アドレスのドメインが存在することを確認することにより、送信元アドレスのドメインの存在が確認できた場合にのみ受信し、確認できなかった場合には受信しません。
https://www.nttdocomo.co.jp/info/news_release/page/070911_00.html#notice0201

注意すべきは、エンベロープ From ではなくヘッダ From のドメイン有無を確認している点です。
送信オンリーで Amazon SES を利用していると、ヘッダ From のドメインに MX レコードを設定していないケースがあります。認証を PASS するために、MX レコードを設定するか、ヘッダ From のドメインをエンベロープ From のドメインと一致させる（非推奨）など対応が必要となります。

# まとめ
キャリアメールにも配信するのであれば、`SPF`, `DKIM`, `DMARC`, `Sender ID`, `MXレコードチェック` の全てに対応するのが無難です。ガチガチなメールフィルターが設定されていなければある程度届くようになると思います。