← RFC Reference

RFC 8058: メールのワンクリック購読解除

Required by Gmail/Yahoo Mailing Lists & Header Fields Published March 2026
ELI5: RFC 2369 は、メールに購読解除 URL を提供しましたが、それをクリックすると、確認、ログイン、あるいはフィッシング詐欺さえも要求するウェブページが開く可能性がありました。RFC 8058 は、メールクライアントに「この URL へ単一の HTTP POST を送信することで購読解除できます — ブラウザは不要、確認ページはなし、完了」と伝える新しいヘッダーを追加します。

これが存在する理由

RFC 2369List-Unsubscribeヘッダーには根本的な問題がありました。メールクライアントはURLに安全に自動的に作用することができませんでした。HTTPSのURLはCAPTCHA、ログインフォーム、確認ステップ、または悪質なサイトにつながる可能性がありました。クライアントはブラウザを開いてユーザーに処理させる必要がありました。これは使用を阻止する摩擦を加えました。

RFC 8058はList-Unsubscribe-Postヘッダーを導入することでこれを解決します。HTTPS List-Unsubscribe URLと一緒に存在する場合、メールクライアントがHTTP POSTリクエストを直接送信してユーザーの登録を解除できることを示します。ブラウザなし、確認なし、ワンクリック。

2024年2月以降、GmailとYahooは大量送信者(1日5,000件以上のメッセージをユーザーに送信する者)にRFC 8058準拠を要求しています。これはもはやコマーシャルメールではオプションではありません。

仕組み

このメカニズムには一緒に機能する2つのヘッダーが必要です。

必須ヘッダー

List-Unsubscribe: <https://example.com/unsub?id=abc123>,
    <mailto:unsub-abc123@example.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

メールクライアントが両方のヘッダーを認識すると:

  1. UIに目立つ「登録解除」ボタンを表示します。
  2. ユーザーがそれをクリックすると、クライアントはList-UnsubscribeからのHTTPS URLにHTTP POSTを送信します。
  3. POSTボディはちょうど: List-Unsubscribe=One-Click
  4. 送信者のサーバーはPOSTを処理し、ユーザーの登録を解除します。

HTTP POSTリクエスト

POST /unsub?id=abc123 HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26

List-Unsubscribe=One-Click

サーバーレスポンス

サーバーは200 OKステータスを返して、登録解除が成功したことを確認する必要があります。すべての2xxレスポンスは成功を示します。レスポンスボディはユーザーに表示されないため、空またはシンプルな確認を含むことができます。

重要な技術的詳細

ヘッダー要件

DKIM要件

メッセージはDKIM認証を通過する必要があり、DKIM署名はList-UnsubscribeList-Unsubscribe-Postヘッダーの両方をカバーする必要があります。これは攻撃者がトランジット中に登録解除URLを注入または変更することを防止します。Gmailはこれを明示的にチェックします。

エンドポイント実装

; 最小限のサーバー側ハンドラ(疑似コード)
function handleUnsubscribe(request):
    if request.method != "POST":
        return 405 Method Not Allowed

    if request.body != "List-Unsubscribe=One-Click":
        return 400 Bad Request

    subscriberId = request.queryParams["id"]
    suppressRecipient(subscriberId)
    return 200 OK

完全なメッセージヘッダー例

From: newsletter@example.com
To: user@gmail.com
Subject: Your Weekly Update
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=sel1;
    h=from:to:subject:list-unsubscribe:list-unsubscribe-post;
    b=...
List-Unsubscribe: <https://example.com/unsub?id=abc123>,
    <mailto:unsub-abc123@example.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Content-Type: text/html; charset=utf-8

一般的な間違い

配信可能性への影響

Related RFCs