郵便局長
認証を通ったメールがそれでもスパムに入る理由
SPF、DKIM、DMARCがすべて合格しても、メールがスパムフォルダに入ることがある。メール転送サービスのアナウンス配信でまさにこの問題に遭遇したので、ヘッダーを掘り下げ、認証だけでは足りない根本的な理由を調べた。分かったことと、スパム判定を回避するための実際のメールハイジーン実践をまとめる。
まず告白がある。このブログに筆を執るのはしばらくぶりだ。正直に言って嬉しい。The Postmasterは以前もう少し頻繁にここで書いていたが、インフラの作業が山積みになり、気づけば間が空いてしまった。だが最近起きた一件が、私をキーボードの前に引き戻した。このブログが解説するために存在するまさにその種の問題だったからだ。
サービスの購読者にアナウンスを送った。新機能、メーリングリスト、いつものやつだ。SPFは合格。DKIMは合格。DMARCも合格。ヘッダーは綺麗だった。それでも購読者の何人かが、メールはスパムフォルダに入っていたと教えてくれた。
これは苛立たしいが、同時に教訓でもある。認証は「自分が誰であるか」を証明する。送っているものが「望まれているか」は証明しない。Gmailをはじめとするメールボックスプロバイダーは、技術的なハンドシェイクのずっと先までチェックしてから、メッセージをどこに分類するか決める。だから私は元のメールヘッダーを掘り下げ、分析を実行し、認証が完璧でもフラグが立つ他の一般的な理由をすべて探しに行った。以下がその全貌である。
ヘッダーが語っていたこと
生のメッセージを取り出して分析にかけた。技術的な部分は正しかった。
- SPF: PASS、IP 203.0.113.42
- DKIM: PASS、ドメイン example.com、セレクタ
default - DMARC: PASS、ポリシー
p=REJECT
ここで認証レイヤーで読むのをやめれば、すべて問題なかった。だがメッセージ本文を開いた瞬間、問題が明らかになる。
メールそのものにあった理由
ベイズフィルタリングが初めてメールに使われたとき、それは画期的だった。スパマーが回避できなかった唯一のものが、メール本文そのものだったからだ。無論、無害な言葉を詰め込んでベイズ統計を狂わせるといった悪手もあったが、最近はもう見かけない。SPFやDKIMのような送信レピュテーションを管理するより良い方法が出てきたからだ。とはいえ、メールのアキレスの踵は常に本文そのものにある。
1. トラッキングリンクが多すぎる
メールの効果を測るために、トラッキングは使っている。メール本文のリンクはすべてクリックトラッキングのリダイレクトで書き換えられていた。綺麗なURLは track.example.com/l/... に置き換わり、HTMLの末尾には0x0の非表示トラッキングピクセルが埋め込まれていた。
スパムフィルターは、会話形式のテキストに重厚なマーケティングトラッキング基盤が混ざったメールを怪しむ。複数の深くネストしたトラッキングリダイレクトと不可視のトラッキングピクセルが組み合わさると、メッセージはプロモーションタブ、あるいはスパムそのものへと押しやられる。Inbox Monsterのトラッキングピクセルガイドが述べるように、複数のトラッキングピクセルを詰め込むことはSpamAssassinにフラグされる行為だ。ピクセルはメールが開かれた時にサーバーにpingを送る1x1の透明画像だが、乱暴な、あるいは過度な実装は赤信号となる。
2. unsubscribeリンクがない
今にして思えば、送ったメールは明らかにプロモーション配信(「メーリングリストを紹介」「メーリングリストは有料プランの一部」)だった。「質問があればこのメールに返信してください」と書いたが、受信者に直接オプトアウトできるリンクは与えなかった。
これはベストプラクティスというだけではない。厳しい要件と言えるだろう。2024年2月以降、Googleの送信者ガイドラインは、Gmailアカウント宛に1日5,000通を超えて送るバルク送信者に対し、RFC 8058で定義された List-Unsubscribe ヘッダー経由のワンクリックunsubscribeを要求している。Yahooも同じルールを施行した。Postmarkのリストunsubscribeヘッダーの解説がその理屈をうまく説明している。受信者がunsubscribeの方法を見つけられなければ、「スパムとして報告」を押す。それがクリーンなオプトアウトよりもはるかに送信者のレピュテーションを傷つける。
3. トリガーになりうる表現が密集している
メールには「paid plans」「Free Upgrade Program」「Sign up for」、そして機能の階層を並べた箇条書きが、ほんの数段落の間に詰め込まれていた。これらの言葉は単独ではスパムではないが、新しい送信ドメインがマーケティング語彙、トラッキングリンク、unsubscribe経路なしだという組み合わせは、実際のスパムキャンペーンと同じ行動パターンのチェックボックスにすべて入ってしまう。フィルターは構文だけでなく意味を読む。
4. 若いドメイン、薄いレピュテーション
あと一つ。ドメインがボリュームのある送信履歴を持っておらず、Googleのようなプロバイダーに対して堅牢な送信者レピュテーションを築いていない場合、自動フィルターは配信メールに対して「有罪が証明されるまで有罪」の姿勢をとる。SPF、DKIM、DMARCに合格することはベースラインで、扉に足を踏み入れることはできるが、完璧なレピュテーションスコアを渡されることではない。
元の分析になかった理由
4つの理由で止めてもよかったかもしれないけど、掘り続けた。元の分析が見落としていた、特定のメールに関わらずすべての送信者に影響する一般的な原因がいくつかもあったからだ。
5. 逆引きDNS(PTRレコード)の欠如または不一致
すべての送信IPアドレスには、ホスト名に逆引きされるPTRレコードが必要で、そのホスト名は同じIPに正引きされなければならない。Googleの送信者ガイドラインはすべての送信者に有効な正引きおよび逆引きDNSを要求している。ValimailのPTRレコードの解説は率直だ。主要なメールサーバーのほとんどは、PTRレコードの欠如を信頼シグナルの失敗として扱う。コンテンツチェックをすべて通過しても、IPに逆引きDNSがなければ接続レベルでブロックされる。
KaiMailではPTRレコードは正しく設定しており、初期から解決済みだが、自分のメール送信環境を確認してみる価値はあるだろう。
6. エンゲージメントシグナルが弱い
メールボックスプロバイダーは今やユーザーエンゲージメントも重く見てフィルタリングする。受信者が開封もクリックも返信もしなければ、認証がどれほど完璧であろうと、それはメールが望まれていないというシグナルになる。Twilio SendGridのデリバラビリティのヒントはエンゲージメント指標の継続的な監視を強調する。エンゲージメントの低下はスパムフォルダ配置の主要なトリガーの1つだからだ。Googleはエンゲージメントをメールボックス配置の主要な指標として使っている。
7. プレーンテキスト代替パートがない、または壊れている
このメールは multipart/alternative であり、これは正しい。だが多くのマーケティングツールはHTMLのみでプレーンテキストパートのないメッセージを送る。スパムフィルターはHTMLとテキストのバージョンを比較する。プレーンテキストパートの欠如や不一致は、正当なメッセージではなく、急ごしらえのマーケティング配信のシグナルだ。SendGridのテストガイドは、送信前にプレーンテキストパートの欠如をチェックすることを明示的に推奨している。
8. 共有IPのレピュテーション汚染
もしメール送信者が共有IPプールを使っているなら、レピュテーションはそのIP上の他のすべての送信者と結びついている。スパムを送る悪い隣人が1人いれば、完璧に認証されたメールが彼らのと一緒にスパムフォルダに引きずり込まれる。Googleの送信者ガイドラインは、共有IPがインターネットブロックリストに載っていないか確認し、Postmaster Toolsでレピュテーションを監視することを推奨している。
では実際にどうするのか
問題の特定は仕事の半分に過ぎない。以下は、スパム判定の可能性を本当に下げる標準的なメールハイジーンの実践だ。上記の情報源とメールインフラを運営する自らの経験からまとめた。
-
すべてを認証し、アラインメントを揃える。 SPF、DKIM、DMARCがベースライン。
From:ヘッダーのドメインがSPFまたはDKIMのドメインと整合すること(DMARCアラインメント)を確認する。2024年時点で交渉の余地はない。 -
ワンクリックunsubscribeヘッダーを追加する。
List-UnsubscribeとList-Unsubscribe-Post: List-Unsubscribe=One-Clickヘッダーを含め、メールフッターに目に見えるunsubscribeリンクを置く。GoogleとYahoo双方がバルク送信者にこれを要求している。 -
トラッキングを抑える。 メールを個人的なメモとして読ませたいなら、クリックトラッキングのリダイレクトとトラッキングピクセルを無効にする。どうしてもトラッキングが必要なら専用のサブドメインを使い、リダイレクトがサードパーティのトラッキングサービスではなく自分のドメインに置く。ピクセルは最小限に。
-
ドメインをウォームアップする。 Mailgunのドメインウォームアップガイドは、少量から始めて数日から数週間かけて徐々に量を増やし、最もエンゲージメントの高い受信者に最初に送ることを推奨している。新しいドメインが初日からフルボリュームで送るのはレピュテーションペナルティを自ら招く行為だ。
-
リストをオーガニックに、ダブルオプトインで構築する。 リストの購入、レンタル、スクレイピングは絶対にしない。購読前にアクションを要求する確認メールを送る。これが本物の関心を確認し、スパムトラップを避ける。
-
リストを定期的にクリーンアップする。 バウンスしたアドレスを削除し、スパムトラップを抑制し、数か月エンゲージメントのない購読者にはサンセットポリシーを導入する。小さくても反応するリストは、大きくても死んだリストに常に勝る。
-
送信IPに逆引きDNSを設定する。 PTRレコードがホスト名に解決し、そのホスト名が同じIPに戻ることを確認する。これはコンテンツではなく接続レベルの要件だ。
-
エンゲージメントと苦情率を監視する。 スパム苦情率を0.3%未満(理想は0.10%未満、Googleによる)に保つ。Google Postmaster Toolsでプロバイダーが見る通りのドメインとIPのレピュテーションを監視する。
-
購読者にallowlistを案内する。 ウェルカムメールに、送信元アドレスをGmail、Outlook、Yahooの連絡先やセーフセンダーリストに追加する明確な手順を含める。
-
コンテンツを正直に保つ。 トリガー表現を密集させず、欺瞞的な件名を使わず、
From:ヘッダーの表示名でピッチではなく送信者を名乗る。Googleは表示名で緊急性を暗示したり存在しないスレッドを装うことを明示的に禁じている。
結論
認証は床であり、天井ではない。SPF、DKIM、DMARCは扉を通す。インボックスに留まるのは送信者レピュテーション、エンゲージメント、そして地味なメールハイジーンの規律だ。クリーンなリスト、本物の同意、適切なunsubscribeの仕組み、そしてマーケティングマシーンが人間を装わない送信インフラ。
1通のアナウンスメールでこれを痛いほど学んだ。修正はDNSレコードの追加ではなかった。修正は、人々が本当に受け取りたがるメールとして振る舞うメールを送ることだった。
The Postmasterが戻ってきた。このテーマについて書き続けるつもりだ。「SPFを設定した」から「インボックスに届く」までの距離は、多くの人が考えるより広く、狭くなってもいないからだ。自身のデリバラビリティについて質問があれば、サイトフッターのアドレスまで書いてほしい。すべて読んでいる。
参考資料
- Google: Email Sender Guidelines - Gmail宛送信者向けの権威ある要件。5,000通の閾値、ワンクリックunsubscribeの義務化、スパム苦情率0.3%の上限を含む。
- Postmark: List-Unsubscribe Headers -
List-UnsubscribeとList-Unsubscribe-Postヘッダーの仕組みと、GoogleとYahooがこれを要求する理由の明快な解説。 - RFC 8058: One-Click Unsubscribe - メールボックスプロバイダーが要求するワンクリックunsubscribeの仕組みを定義する標準。
- Mailgun: Domain Warm-Up and Reputation - 新しいIPとドメインのウォームアップに関する実践的ガイダンス。IPレピュテーションとドメインレピュテーションの区別を含む。
- Twilio SendGrid: Tips to Keep Email Out of the Spam Folder - リスト構築、認証、エンゲージメント、インフラを網羅する19の実践的ヒント。
- Inbox Monster: Email Tracking Pixels Guide - トラッキングピクセルの仕組み、どこで機能しなくなるか、そして過度な使用がスパムフィルターをトリガーする理由。
- Valimail: DNS PTR Records - PTRレコードの欠如が主要なメールサーバーで信頼の失敗として扱われる理由。
- CISA: Reducing Spam - メールアドレスの共有先への注意を含む、スパム削減に関する米国政府のガイダンス。