仕組みから学ぶ Web
応用読了目安 15 分#メール#SPF#DKIM#DMARC#DNS#到達率

メールが届かない — 「送れた」と「届いた」は別の話

送信サービスはすべて「成功」を返していた。それでも会員登録の確認メールの 3 割が、迷惑メールのフォルダに入るか、どこにも届いていなかった。受け取る側は、差出人が本物かどうかを DNS で確かめている。

この記事の進み方

What — 受け取る側は、差出人を確かめている

メールの仕組みは、もともと差出人を誰でも名乗れるように作られています。From: support@bank.example と書くだけなら、誰にでもできます。これを使った偽のメールが大量に出回ったため、受け取る側のメールサービス(Gmail など)は、差出人のドメインの DNS を見て、本物かどうかを確かめるようになりました。

確かめる仕組みは 3 つあり、どれも差出人のドメインの DNS に書く設定です。

Compare3 つの確かめ方

このドメインのメールを送ってよいサーバーの一覧を、DNS に公開する。

example.com の DNS:
v=spf1
  include:送信サービス
  include:社内メールサーバー
  -all

受け取る側:
送ってきたサーバーは
一覧に入っているか?
確かめるもの
送ったサーバー
転送されると
失敗しやすい
見ているドメイン
封筒の差出人
改ざんの検出
—
From の詐称
—
レポート
—
  • –見ているのは、画面に出る From ではなく、配送に使う封筒の差出人(Return-Path)。From の詐称は、SPF だけでは止まらない。
  • –一覧を広げるための問い合わせは 10 回まで。送信サービスを足し続けると上限を超えて、SPF そのものが失敗する。

SPF と DKIM は「本物か」を確かめる手段。DMARC は、それが画面に出る差出人と一致しているかを確かめ、通らなかったときの扱いを決める。

3 つの関係

  • SPF: 送ってきたサーバーが、許可された一覧にあるか
  • DKIM: 署名が正しく、改ざんされていないか
  • DMARC: そのどちらかが、画面に出る From のドメインで通っているか。通らないとき、受け取る側にどうしてほしいか(そのまま・迷惑メールへ・受け取り拒否)

SPF と DKIM だけでは、「どこかのドメインとしては本物」までしか分かりません。利用者が目にする From のドメインと結び付けるのが DMARC です。

確認 — ここまで読めたか

SPF を正しく設定しました。これで、自社のドメインを From に書いた偽のメールは止まりますか?

まず選ぶ(解答例は a〜d の記号で説明します)

届くかどうかは、評判でも決まる

3 つの設定が正しくても、届くとは限りません。受け取る側は、そのドメインや送信元から、これまでどんなメールが来たかも見ています。

  • 受け取った人が「迷惑メール」を押した割合
  • 存在しないアドレスへの送信の多さ(名簿の質の悪さの印)
  • 送る量の急な変化

冒頭のサービスは、確認メールと、購入した名簿への一斉メールを、同じドメインから送っていました。一斉メールで評判が下がり、同じドメインの確認メールも巻き込まれました。

Why — なぜ「送信成功」なのに届かないのか

送信サービスが知っているのは、渡したところまで

送信サービスの「成功」は、受け取る側のメールサーバーに渡せたという意味です。その先で、迷惑メールのフォルダに入れたか、黙って捨てたかは、送信サービスには分かりません。

届いたかどうかを知る手がかりは、限られています。

  • 受け取り拒否(バウンス): 受け取る側が拒否したら、その旨が返ってくる
  • 苦情: 大手のメールサービスの一部は、「迷惑メール」が押されたことを知らせる仕組みを持つ
  • DMARC の集計レポート: 自分のドメインのメールが、どこで SPF・DKIM・DMARC を通ったか・通らなかったか
  • 利用者の行動: 確認メールのリンクが押された割合

冒頭のサービスで最も早く気づけたのは、確認メールのリンクが押された割合でした。送信の成功率ではなく、その先の行動を見ます。

大量に送る送り主には、設定が求められる

大手のメールサービスは、偽のメールと迷惑メールを減らすため、大量に送る送り主に、SPF・DKIM・DMARC の設定や、ワンクリックで配信を止められる仕組みを求めるようになっています(2024 年から)。設定が無いと、迷惑メールのフォルダに入るか、受け取りを拒否されます。

求められる内容や数字は変わっていくので、使っている送信サービスと、主な受け取る側の最新の案内を確かめます。ただ、「3 つを正しく設定し、迷惑メールと思われる送り方をしない」という方向は変わりません。

確認 — ここまで読めたか

確認メールが届いているかを知るために、最も早く、確かな手がかりはどれですか?

まず選ぶ(解答例は a〜d の記号で説明します)

演習 — まず自分で判断する

解説を読む前に、まず自分で判断してみてください。ここで一度詰まっておくと、 次の節の判断軸が「なるほど」ではなく「そう来たか」に変わります。

演習 — 設計判断を問う

冒頭のサービスのメールを、どう直しますか?

与えられた条件
  • 確認メールは noreply@example.com から、新しく契約した送信サービスで送っている
  • example.com の SPF には、社内の古いメールサーバーしか書かれていない。DKIM と DMARC は未設定
  • マーケティング部門が、同じ example.com から購入した名簿あてに一斉メールを送っている
  • 社内の人事システムや請求システムも、example.com を名乗ってメールを送っているらしいが、全部は把握できていない
この軸で考える
  • · 確認メールを本物だと示すために、DNS に何を書くか
  • · 評判の悪い送り方から、確認メールをどう切り離すか
  • · 把握できていない送り主を壊さずに、DMARC をどう強めていくか
まず選ぶ(解答例は a〜d の記号で説明します)

演習 — 説明できるか

「送信サービスは全部成功と言っているので、届かないのは利用者側の問題では」と言うプロダクトマネージャーに、そうではない理由を説明してください

与えられた条件
  • 相手は、送信サービスの管理画面で成功率 100% を確認している
  • 登録の完了率が 6 割に落ちていて、相手はその原因を知りたい
  • 何を直し、何を見ればよいかまで示したい

読み終わりましたか?

読了にすると、これを前提とする記事がロードマップで開放されます。