はじめに
皆さんはGmailのメール送信者ガイドラインが更新されることをご存知でしょうか?
ざっくり説明すると、1日5000通以上のメール送信を行う送信者に対してメール認証に関する要件が厳しくなって要件を満たしていないメールはGmail側で迷惑メール扱いしますよという感じです。
その中に「簡単に登録解除できるようにする」という要件があります。これが何しないといけないかというと、メールに対して「List-Unsubscribe-Post」と「List-Unsubscribe」というヘッダーを付与してワンクリックで購読解除できるようにしましょうねというお話です。
より詳しい情報については、Googleが提供する以下のガイドラインを参照してください。
メール送信者のガイドライン
で、これの厄介なのが指定のヘッダーを付与したところで解除のリンクが表示されないことがあるということです。。
(List-Unsubscribeにmailtoを設定する場合は表示されるのですがhttpだけだとどうも機能しない)
https://support.google.com/mail/thread/49653586/list-unsubscribe-header-not-providing-the-option-to-unsubscribe?hl=en
色々調べて見るとGoogle独自のロジックでリンクを表示するかしないか判断しているっぽいですが、詳しいことは私の調べる限りではわかりませんでした、、
表示されない場合どうすればいいか
なんとか他のメーラーでこの仕組み動かないか見てみましたが、Macの標準のメールアプリがそれっぽく動きましたが1回解除するとそれ以降解除のボタンが表示されなくなってしまい確認がとてもめんどくさいです...(~/Library/Mail/
内をいじくり回すとリセットできなくもなかったですが)
その他のメーラーに関してはそもそもhttpに対応してないのがほとんどぽい...
https://www.brevo.com/blog/list-unsubscribe-header/
なので無理やり表示させてみる
表示してくれないなら無理やり表示させればいいのでは?ということでそれ用のChrome拡張を作りました。
https://chromewebstore.google.com/detail/gmail-easy-unsubscriber/depjbonmcghgahaiokfpgphfhmjiakbf?hl=ja
この拡張機能使うと「List-Unsubscribe」ヘッダーにhttpがついている場合に購読解除のリンクを表示させて購読解除を行うことができます。
(一応RFCとGmailのドキュメントに記載があるように内部的に実装してますが、実際にその通りになってるのかはちょっと保証できないです...すみません...)
この拡張機能入れると以下のような感じでリンクとおまけで今回のGmail側の要件にある3種類の認証結果の情報も表示してくれます。
内部的に何をしているか
超簡単に仕組みを説明するとGmailのページを開いたときにスクリプトが起動してhtml解析して中にあるメッセージID拾って、Gmail APIで対象のメールの詳細を見てるだけです。で、ヘッダーの中に「List-Unsubscribe」があったらリンクを表示する。なければしない。spfとかdkimも同じ感じです。
まとめ
そんな凝ったことはしてないですが、私のように「List-Unsubscribe」の対応したけど購読解除のリンクが表示されなくて困っているような方の助けになればと思ってます😞