メッセージ本文の購読解除リンク、 List-Unsubscribe ヘッダーとワンクリック メカニズムは関連していますが、異なる機能です。診断では、送信者が実際に送信したメカニズムと、必要な署名付きヘッダーが存在するかどうかを特定する必要があります。ソース内に unsubscribe という単語があるだけでは、機能するワンクリック実装は確立されません。
2 つのフィールドを一緒に読んでください
RFC 2369では、 List-Unsubscribeリストから離脱するための URL を含むリスト コマンド フィールドとして定義しています。 mailto や HTTPS などのメソッドを記述できます。 RFC 8058では、ワンクリック メカニズムにList-Unsubscribe-Postが追加されています。後者では、値List-Unsubscribe =One-Click を使用し、 List-Unsubscribeに HTTPS URI を指定します。 mailto オプションだけでは、 RFC 8058 HTTPS メカニズムではありません。 RFC 2369セクション 3.2, RFC 8058セクション 3.
ワンクリック受信者は、指定された購読解除値を含む HTTPS POST を送信します。 URL を検査するルーチン GET 自体は、 RFC 8058購読解除アクションを実行してはなりません。リンク スキャナは、ユーザーがリストから離れるつもりがなくても URL を取得する可能性があるため、この区別は重要です。診断検査を無許可のサブスクリプション変更に変えないでください。
署名要件を確認する
RFC 8058では、有効な DKIM署名 List-UnsubscribeとList-Unsubscribe-Post両方をカバーします。署名の h= リストで 2 つのフィールド名を見つけることは、構造チェックには役立ちますが、署名が検証されていることを証明するものではありません。
実際の検証のために、元の署名付きメッセージを保存してください。複数の署名や繰り返しヘッダー フィールドがある場合は、慎重に選択する必要があります。単純な部分文字列検索では、無関係な署名を要件を満たす署名と誤認する可能性があります。署名カバレッジ、暗号検証、エンドポイントの動作を個別のチェックとして保持します。
制御された例を使用する
正しい 2 つのヘッダー値を持つ仮説的なメッセージを考えてみましょう。有効な署名は From と Subject のみをカバーしますが、購読解除フィールドはカバーしません。 2 番目の署名には両方のフィールドがリストされていますが、検証に失敗します。このメッセージには両方の内容が含まれています DKIM パスし、ソースのどこかで明らかにカバレッジをカバーしていますが、どちらの署名も結合されたRFC 8058要件を満たしていません。
次のステップは、承認された送信者の変更を通じて、2 つのフィールドを検証しカバーする署名を特定または作成することです。この教育例では署名が検証されず、サブスクリプションも変更されませんでした。その後検証されたカバー署名であっても、HTTPS エンドポイントの動作と次回送信抑制はテストされないままになります。
承認されたエンドツーエンド テストの場合は、専用のテスト サブスクリプションと送信者がサポートするテスト環境を使用します。有効な署名を検証し、意図した POST を送信し、サービス独自の証拠を通じてテスト サブスクリプションの状態を確認します。 RFC 8058 HTTPS リダイレクトを禁止し、Cookie、HTTP 認証、およびその他のリクエスト コンテキストを POST から除外します。受信者は投稿する前にユーザーの同意を得る必要があります。クリックスルーする代わりに、リダイレクトまたはログイン要件を欠陥として記録します。エンドポイントは追加の対話なしでサブスクライブ解除を完了する必要があります。
加入者識別子の保護
購読解除 URL には、受信者固有のトークンが含まれることがよくあります。完全な URL は、その人のサブスクリプションを変更できる可能性があるものとして扱います。一般的な診断コピー内のトークンを編集または置換し、変更されていないメッセージを非公開で保存し、パブリック チケットや自動フェッチャーにライブ URL を貼り付けないでください。
明示的なチェックリストで締めくくります。フィールドの存在、正しい構文、署名の検証、および承認されたエンドポイント テストの完了または未実行をカバーします。プロバイダーの一括送信者の適格性と購読解除インターフェイスの表示は、製品に関する別の質問です。標準レベルのヘッダー チェックでは、メールボックス プロバイダーが特定のボタンを表示することは保証されません。
各レイヤーを個別にレポートします
ヘッダーは存在するが、署名の検証が利用できない場合は、構造的な発見のみを報告してください。検証に合格したが、承認されたエンドポイント テストが行われていない場合は、動作をテストしないままにしておきます。正確な最終サンプルと次のレイヤーに必要な証拠を記録します。