ワンクリックで購読解除 アクションを通知するメッセージとそれを処理するサービスの 2 つのシステムを接続します。正しく見えるヘッダーは実装の半分にすぎません。エンドポイントは、対象のサブスクリプションを識別し、ログインせずに指定されたリクエストを受け入れ、オプトアウトを有効にする必要があります。
署名する前にメッセージを作成する
RFC 8058では、HTTPS URI を含む 1 つのList-Unsubscribeフィールドと、 List-Unsubscribe =One-Click を含む 1 つのList-Unsubscribe-Postフィールドが必要です。有効な DKIM署名 両方のフィールドをカバーする必要があります。 mailto などの他の非 HTTP/S 購読解除 URI もList-Unsubscribeに表示される場合があります。 RFC 8058セクション 3 および 4.
最小限のヘッダー ペアの例は次のとおりです。
List-Unsubscribe: <https://unsubscribe.example.test/u/opaque-token>
List-Unsubscribe-Post : List-Unsubscribe = ワンクリック
予約されたホスト名とトークンは、操作上のエンドポイントではなく、教育用のプレースホルダーです。これらのフィールドは、関連する最後の署名ステップの前に追加します。発行されたメッセージを検査して、署名の h= リストにそれらが含まれていること、およびすべての変換後に暗号検証が成功したことを確認します。
URI で正確なアクションを識別するようにする
URI には、受信者とリストを識別するのに十分な情報が含まれている必要があります。受信者は追加の受信者フィールドを入力したり、好みのアンケートに回答したりすることはできません。不透明で偽造が難しいコンポーネントを使用し、エンドポイントで検証します。 URL、ログ、または分析でアドレスを不必要に公開しないようにします。
トークンを、一般的なアカウントの資格情報としてではなく、狭い範囲の購読解除を実行する権限として扱います。メッセージにアクセスできる誰かがそれを使用できる可能性があります。アカウントの所有権を変更したり、ユーザーとしてサインインしたり、無関係なサブスクリプションを変更したりしないでください。ポリシーを考慮せずに古いメッセージが役に立たないオプトアウト パスにならないように、保存と有効期限の動作を慎重に選択してください。
指定されたPOSTを直接処理します
受信者は、本体にアドバタイズされたキーと値のペアを含む HTTPS POST を送信します。 RFC 8058では application/x-www-form-urlencoded を許可し、multipart/form-data を推奨しています。リクエストは、Cookie、HTTP 認証、または以前のブラウザー コンテキストに依存してはなりません。送信者は HTTPS リダイレクトを返してはなりません。受信者はアクションを実行する前にユーザーの同意を得る必要があります。
本文リンクは人間が判読できる設定ページを提供できますが、POST アクションはそれ以上の操作なしで完了する必要があります。実装上の安全策として、自動リンク取得自体がサブスクライバを削除しないように、GET リクエストを非破壊的なものにしてください。その安全策は、RFC が対処する問題を動機とした運用設計の推奨事項です。
ステータスコードだけでなくアプリケーションの状態を確認する
仮想のエンドポイントが有効なニュースレター トークンに対して成功を返したものの、次のキャンペーンのエクスポートには依然として同じ受信者/リストのペアが含まれているとします。プロトコル要求はサービスに到達している可能性がありますが、動作抑止は確立されていません。ステータス コードを完了として扱うのではなく、永続的な決定、伝播確認、および視聴者選択の入力を検査します。
承認されたテストの場合、最初に期待される結果を定義します。GET および無効なトークンによってサブスクリプションが削除されるべきではありません。有効な POST は、意図したペアのみに影響を与える必要があります。それを繰り返すと、同じ最終状態が保存されるはずです。これらは設計上の予想であり、実行されたローカル テストや運用テストではありません。
導入の場合は、 TLS証明書の有効性、ホスト名、パブリック到達可能性、サポートされている両方のフォーム エンコーディング、プロキシの動作、およびレート制限を個別に検証します。応答がログイン サービスや追跡サービスにリダイレクトされないことを確認します。次のキャンペーンの選択で、キャッシュやサードパーティのエクスポートを含む抑制が適用されるようにします。
エンドポイントを永続的なサービスとして運用する
繰り返される有効なリクエストを安全にし、最小限の監査イベントを記録し、トークンを公開することなく障害を監視します。処理エラーと抑制バックログに関するアラート。永続的な更新の前に成功を主張する応答には、信頼性の高い処理設計と制限された完了時間が必要です。
メッセージ検証、エンドポイント テスト、および制御された受信者に対する監視された次回送信の除外を使用して実装を終了します。これらだけでは、すべてのメールボックス インターフェイスに購読解除ボタンが表示されることを証明するものはありません。
失敗したチェックポイントから修復を選択します
リダイレクトまたはログイン要件により、エンドポイントの修復が必要になります。受信者/リストのマッピングが間違っている場合は、承認スコープの修復が必要になります。古いキャンペーンエクスポートを含む正しいエンドポイントには、伝播の修復が必要です。 1 つの POST が成功を返したため、3 つすべてを閉じないでください。