#121 大量メール送信時のガイドライン要件の確認方法 ~Gmailに送ったメールのヘッダーに登録解除が表示されなかった時
はじめに
最近、大量メールの送信について調べる機会があったため、その調査結果の概要を備忘録としてまとめていきたいと思います。
経緯
新しく作成したドメインを使用してSendGrid経由でメールを送信した時、メールヘッダ―にメーリングリストの登録解除ボタン(※)が表示されず、Gmailの送信者ガイドラインの要件を満たしているのか確認ができなくて困った、ということがあり、解決方法を調べました。
※以降は「登録解除ボタン」と略させていただきます
ここまでに至る前提として、
- SendGridのv3 Mail Send APIを使用してメールを送信したい
- SendGridのサポートに問い合わせ、ワンクリック登録解除に必要な設定内容について確認して「問題ない」との回答をもらっている
- 登録解除ボタン押下時は、作成した専用のAPIに対してリクエストしたい
- 新規に作成したドメインについて、AWS SES経由のメール送信時には登録解除ボタンが表示されることを確認
があります。
Gmailを含めた大量メール送信に関する全体のざっくりした動きは以下通りです。
- SES以外のメール配信サービスを調査
- SendGridのv3 Mail Send APIを使用したい
- ⇒ v3 Mail Send APIで大量メールを送信する方法について調査
- Gmailの送信者ガイドラインを確認
- List-Unsubscribeの概要とRFC8058について確認
- SendGrid経由でメールを送信した時、Gmailのメールヘッダ―に「メーリングリストの登録解除」が表示されなかった
- 原因を調査
結論
経緯を順に追って説明していくと長くなってしまうので結論から言うと、Googleのメール送信者のガイドラインの要件を満たしているかはPostmaster Toolsで確認しました。
Gmailへ大量メール送信をする場合にポイントとなる箇所について、以下で概要を確認していきましょう。
Gmailの要件
Googleのメール送信者のガイドラインが更新され、2024年2月1日以降にGmailにメールを送信する場合、こちらのガイドラインの送信者要件が適用されることとなりました。
要件を満たさないメールについては、拒否されたり迷惑メールとして配信されたりする可能性があるとのことです。
参考:メール送信者のガイドライン
以下では、大量メール送信時の要件を中心にまとめていきます。
List-Unsubscribe
前述の「メール送信者のガイドライン」の中で、マーケティングメールのように大量のメールを送信する場合の必須要件として「ワンクリックで登録解除できるようにすること」が追加されました。
(2024年12月現在)
上記の対応ではRFC8058に従って、メールヘッダ―にList-Unsubscribeを設定する必要があります。
以下、設定値の例です。
// 共通の値
List-Unsubscribe-Post: List-Unsubscribe=One-Click
// mailto: 配信停止依頼を送るメールアドレスを指定
// https: リクエスト受付先を指定
List-Unsubscribe: <mailto:request@testxxx.com?subject=unsubscribe>,<https://xxx.test.com/unsubscribe?id=aabb01-cc>
ただし、Googleのガイドラインではhttpsの設定が必須となっており、mailtoのみの設定だと要件を満たすことができないため注意が必要です。
こちらを設定することでGmail上ではメールヘッダーに「登録解除」ボタンが表示され、ワンクリックでの配信停止が可能となります。
メール詳細の「その他」から「メッセージのソースを表示」を押下すると、そのメールに設定されている内容が表示され、ヘッダーの設定値などを確認することが可能です。
メールヘッダーからのメーリングリストの登録解除
※以下ではList-Unsubscribeにhttpsを設定した場合について記載していきます
「メーリングリストの登録解除」の挙動としては、以下の2パターンが存在します。
- ボタン押下1回目:設定したURLへPOSTリクエスト
- 期待する動き:ワンクリックでの配信停止
- ボタン押下2回目以降:設定したURLへGETリクエスト
- 期待する動き:送信元で用意された配信停止画面への遷移
そのため、メーリングリストの登録解除ボタン押下時の処理を作成しようとする場合、POST/GETリクエストにそれぞれ対応できるように考慮する必要があります。
Postmaster Tools
メールヘッダにList-Unsubscribeを設定したとして、必ずしも解除登録ボタンが表示されるわけではないようです。
というのも、Gmail側でレピュテーションが高いと判定された場合にこちらのボタンが表示されるようで、最近新しく作成したドメインでメールを送信した場合などでは「ヘッダに登録しているのにボタンが表示されない」ということもありました。
こうした場合、ヘッダの設定が正しい(= 要件を満たしている)のであれば、運用していく中でレピュテーションが高いとGmail側で判定されれば解除ボタンが表示されるようになるはずです。
設定に問題ないかどうかを送信者側で確認するには、Googleが提供しているPostmaster Toolsを利用することで解決できました。
Postmaster Toolsでは対象のドメインを設定することで「コンプライアンスのステータス」から以下の内容を確認することができます。
- 要件
- SPF認証とDKIM認証
- From: ヘッダーの適合
- DMARC認証
- 暗号化
- ユーザーが報告した迷惑メール率
- DNSレコード
- ワンクリックでの登録解除
- 登録解除に対応する
こちらの項目が「遵守」である=送信者ガイドラインの要件を満たしている、となります。
本記事で取り上げている項目については「ワンクリックでの登録解除」のステータスから確認できます。
ここで注意しておきたいのが、1日あたりのメール送信量が送信が極端に少ない場合、データが表示されない可能性があるという点です。
受信したGmailの内容を元に要件が満たせているのかを確認するため、そもそもの検証材料がない(少ない)と正しい結果を得ることができないようです。
そうした場合は、確認したいドメインを使用したメールを数日Gmail宛に送信してから改めて確認すると良いでしょう。
おまけ
Postmaster Toolsを設定するにあたって、メールの認証の方式を確認する良い機会にもなりましたので、こちらについても概要を記載しておこうと思います。
こちらも送信者ガイドラインで変更のあった内容になるのですが、Gmailに1日あたり5,000件を超えるメールを送信する送信者の場合、「ドメインにSPFおよびDKIMメール認証を設定すること」となりました。
SPFとDKIMはメールのなりすまし対策として利用されている認証方法で、Googleの送信者ガイドラインにはSPFとDKIMの他、DMARCやARCという認証方法についても概要が記載されています。
気になった方はぜひ確認してみてください。
SPF
「Sender Policy Framework」の略で、送信元のメールサーバーのIPアドレスを利用する認証方法です。
ドメイン所有者側で送信元のIPアドレスが許可されてたものであることを事前にDNSに「SPFレコード」として登録しておきます。
メールを受信したサーバーは、送信側のSPFレコードを照合してなりすましかどうかを確認します。
DKIM
「DomainKeys Identified Mail」の略で、電子メールに付与したデジタル署名を利用する認証方法です。
ドメイン所有者側で公開鍵を含む「DKIMレコード」をDNSに登録し、送信側はこれに対応する秘密鍵を用いて電子署名を付与します。
受信側ではDNSから公開鍵を取得して、改ざんされていないことを確認します。
おわりに
今回は主にGmailアカウントへ大量にメールを送信する際に注意したい内容について、備忘録としてまとめてみました。
GmailではList-Unsubscribeとしてhttpsの設定が必須でしたが、Outlookではmailtoのみ対応だったり、Yahoo!メールではList-Unsubscribeに対応しているのが米国のYahoo!のみで、Yahoo! Japanは未対応だったりするようです。
マーケテイングメールを送信する場合は、想定するメーラーの対応状況についても確認する必要がありそうですね。
⇒ https://www.excite.co.jp/news/article/Scannetsecurity_50986/
以上です。閲覧いただき、ありがとうございました。
Discussion