見出し画像

RFC8058を読み解く(List-Unsubscribeってなんだろう)

みなさん、こんにちは
SOMPOシステムズのアプリケーションエンジニアです。
今回は、普段よく目にする割に、意外と読まないRFCのお話です。


Gmailのメール送信者のガイドライン

2023年10月に米Google(グーグル)が「メール送信者のガイドライン(Email sender guidelines)」を発表しました。
これは2024年2月以降に適用されるガイドラインで、本ブログ執筆時点ではすでに半年以上が経過しています。

この間、多くのエンジニアが対応に追われましたが、当社も例外ではありません。特に、「1 日あたり 5,000 件以上のメールを送信する場合の要件」に該当するシステムを担当するエンジニアは、短期間で多くの対応を余儀なくされ、寝る間も惜しんで(笑)ガイドライン遵守に向けた対応を進めました。

今回は、このガイドラインの中から「マーケティング目的のメールや配信登録されたメールを送信する場合は、ワンクリックで登録解除できるようにする必要があります。」という条件についてRFCの観点からなるべく分かりやすく説明し、具体的にどのように対策が施されているのかを紹介したいと思います。

何が困るの?

このガイドラインを読んでピンと来る方は少ないかも知れません。システム担当者であっても、ある程度幅広くメールを送信するシステム(メルマガなど)のご担当者でなければ、そもそも何が困るのかも分かりにくいかも知れません。

困る人

このガイドラインに抵触すると困るのは、「幅広くメールを送る人」(=マーケティングなどの目的で、広く情報を発信する事業者)と、そのシステムを担当している方になります。

起きる事象

このガイドラインに抵触すると、場合によっては迷惑メールとして扱われる可能性があります。
通常、システムからメールを送信する際に、送信側で通信エラーなどを検知することはできますが、迷惑メールとして判断された場合などは検知することができません。そのため、相手方にメールが届いた(受理された)かどうかを正しく判断することはできません。したがって、システム利用者に適切な情報を届けられないという事態を招きかねません。

これらの問題を可能な限り回避するためにも、ガイドラインに準拠したメール配信手法をシステム側で対応することが求められます。

RFCとは

正式名称は「Request for Comments」で、IETFという米国政府による支援を受けたNPOが技術仕様を公開する形式のことです。
JPNICの解説を見ると色々と書いてあるのですが、あくまでも位置付けとしては共有すべき内容であって、絶対的なルールではないという点にご注意ください。インターネットの世界はその利用者の心がけで統治されているものなのです。
堅苦しい文章のようですが、読んでみると意外な発見も多いものです。例えば、RFC1459を読んでみると、pingの応答として「pong」というメッセージが定義されています。「ピンポン」という言葉を連想させるこれらの定義もRFCに明記されているのです。

余談ですが、RFCにはジョークも多く公開されており、エイプリールフールの定番ジョークがWikiPediaに「April Fools' Day Request for Comments」としてリンクされていますので、興味のある方はご覧になってください。

なお、以下の解説は主にRFCの日本語訳サイトからの引用となります。原文のまま読みたいという方はこちらからご参照ください。

RFC8058とは

さて、本題のRFC8058日本語訳はこちら)に入りましょう。
タイトルは「Signaling One-Click Functionality for List Email Headers」(日本語訳:リストの電子メールヘッダーのワンクリック機能のシグナリング)となっています。
日本語訳の要約にも「このRFCの目的は、ユーザーが不要なメーリングリストのメールを簡単に購読解除できるようにすることで、メールの利便性を向上させることにあります」との記載がある通り、簡単にメーリングリストを解除できる仕組みのための共通仕様を定義しています。

List-Unsubscribeの定義

List-UnsubscribeヘッダーはRFC2369(日本語訳はこちら)に定義されたメールヘッダーで、メール受信者がメーリングリストを直接解除することを目的としたコマンドを記述するためのフィールドです。「コマンド」と言ってもコンソールからコマンド入力を求めるようなものではなく、以下の例のようにメールやURLへのリンクの記載を想定しています。

List-Unsubscribe: <mailto:list@host.com?subject=unsubscribe> List-Unsubscribe: (Use this command to get off the list) <mailto:list-manager@host.com?body=unsubscribe%20list> List-Unsubscribe: <mailto:list-off@host.com> List-Unsubscribe: <http://www.host.com/list.cgi?cmd=unsub&lst=list>, <mailto:list-request@host.com?subject=unsubscribe>

出典:https://datatracker.ietf.org/doc/html/rfc2369

List-Unsubscribeの実装

RFC8058の記載を読み進めると、中段に以下のような記述があります。

The mail sender needs to provide the infrastructure to handle POST requests to the specified URI in the List-Unsubscribe header, and to handle the unsubscribe requests that its mail will provoke.

出典:https://datatracker.ietf.org/doc/html/rfc8058

メール送信者は、List-Unsubscribeヘッダーで指定されたURIへのPOSTリクエストを処理し、メールが引き起こす配信停止リクエストを処理するインフラストラクチャを提供する必要があります。

出典:https://tex2e.github.io/rfc-translater/html/rfc8058.html

この内容は、メールのList-Unsubscribeヘッダーに記載されたURIの実装は、メール配信者が用意する必要があるとされています。システムイメージを図式化すると以下のようになるかと思います。

システムイメージ

ポイントとしては、List-Unsubscribeヘッダーに記載するURIは、当該購読者の購読情報を直接解除できるURLであることです。リンククリックの際にユーザー認証などの他の操作を必要とする仕組みは適切ではありません。

また、List-Unsubscribeヘッダーによるリンク表示の実装は、各種メールソフトの実装に委ねられています。Gmailの場合は以下のように表示されます。(画像上部の赤枠のリンク)

GmailでのList-Unsubscribeヘッダーによるリンク表示

このメールのソースは以下の通りです。(赤枠内がList-Unsubscribeの記述)

メールソースのList-Unsubscribeヘッダー

Gmailのガイドラインとの整合性

Googleが示しているガイドラインには、以下のような記述があります。

Gmail メールでワンクリックでの登録解除を設定するには、送信メールに次の両方のヘッダーを含めます。List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Unsubscribe: <https://solarmora.com/unsubscribe/example>

受信者がワンクリックで登録解除すると、次の POST リクエストが届きます。

"POST /unsubscribe/example HTTP/1.1
Host: solarmora.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
List-Unsubscribe=One-Click"

Gmailへのメール送信者のガイドライン
出典:https://support.google.com/a/answer/81126?hl=ja

上記に従ってメールヘッダーを構成することで、

  • ワンクリック解除用のリンク表示

  • リンククリック時のPOST送信

を実現してくれます。
また、以下の記述にも注意が必要です。

以下の登録解除オプションも使用できますが、ワンクリックでの登録解除に代わるものではありません。

・受信者が、登録しているメーリング リストを自分で確認してリストごとに登録解除するか、すべてのリストの登録をまとめて解除できるようにする。
・何回もメールが返送された受信者を自動的に登録解除する。

Gmailへのメール送信者のガイドライン
出典:https://support.google.com/a/answer/81126?hl=ja

これは、メーリングリストの解除にあたって、他の手法を否定するものではありませんが、ワンクリック解除とは認めないという趣旨と理解しました。ですので、あくまでも「ワンクリックで解除できる」ということが必要なのだと考えられます。※メール本文に直接リンクを埋め込む方法がNGになるかどうかは読み取れませんでした。

SOMPOの対応は?

損保ジャパンが誇るオウンドメディア「SOMPO Park」は、600万人近い会員数となっており、メールマガジンの配信などを行っております。
当然今回のメール送信者のガイドラインについては早期に対応に取り掛かっており、ワンクリック解除以外の対応も完了しており、現時点では制限に引っ掛からないようになっています。

会員登録されている方は、メルマガ購読していただければメールソースも確認できますので、是非とも参考にしてください。