rfc-8058

Signaling One-Click Functionality for List Email Headers

J. Levine, T. Herkula
date2017-01 streamIETF wgnon working group statusPROPOSED STANDARD pages9 canonicalhttps://www.rfc-editor.org/rfc/rfc8058 doi10.17487/RFC8058 errataview
This document describes a method for signaling a one-click function for the List-Unsubscribe email header field. The need for this arises out of the actuality that mail software sometimes fetches URLs in mail header fields, and thereby accidentally triggers unsubscriptions in the case of the List-Unsubscribe header field.

Extracted elements (20)

design-rationale §1

Anti-spam software automatically fetches URLs in mail header fields, causing accidental unsubscriptions when GET-based List-Unsubscribe URIs are used. The RFC introduces a POST-based mechanism so senders can distinguish intentional user actions from automated fetches.

email

design-rationale §3.1

HTTPS redirects are explicitly prohibited in response to the POST because redirected POSTs have historically been unreliable and browsers have often silently converted them to GETs, which would undermine the one-click mechanism.

email, http

design-rationale §1

Mailers currently require a confirmation landing page to guard against accidental GET-triggered unsubscriptions, making the process require more than one click. This specification enables automated unsubscription (e.g., combined with junk reporting or for closed mailboxes) without manual intervention.

email

interoperability-note §3.2

The target of the POST action is the same URI used for a manual GET-based unsubscription, so the same server-side code can handle both one-click automated unsubscriptions and user-initiated browser-based unsubscriptions.

email, http

interoperability-note §3.1

This document does not update RFC 2369; usage of List-Unsubscribe URIs other than for one-click unsubscription remains unchanged, and the List-Unsubscribe header MAY still contain non-HTTP/S URIs such as MAILTO: alongside the HTTPS URI.

email

normative-requirement §3.1 MUST

A mail sender enabling one-click unsubscription MUST place one List-Unsubscribe header field containing one HTTPS URI and one List-Unsubscribe-Post header field containing the single key/value pair 'List-Unsubscribe=One-Click'.

email

normative-requirement §4 MUST

Senders MUST apply at least one valid DKIM signature to the message; if the message lacks the required DKIM signature, the mail receiver SHOULD NOT offer a one-click unsubscribe for that message.

email, security

normative-requirement §3.2 MUST NOT

The mail receiver MUST NOT perform a POST on the HTTPS URI without user consent; when and how user consent is obtained is outside the scope of this specification.

email, privacy

normative-requirement §3.1 MUST NOT

The mail sender MUST NOT return an HTTPS redirect in response to the POST request, since redirected POST actions have historically not worked reliably and many browsers convert redirected HTTP POSTs into GETs.

email, http

normative-requirement §3.1 MUST

The message MUST have a valid DKIM signature that covers at least the List-Unsubscribe and List-Unsubscribe-Post headers, and both headers MUST be included in the 'h=' tag of a valid DKIM-Signature header field.

email, security

normative-requirement §3.2 SHOULD

The POST content SHOULD be sent as 'multipart/form-data' (RFC 7578) or MAY be sent as 'application/x-www-form-urlencoded', matching the encodings used by web browsers when sending forms.

email, http

normative-requirement §3.1 MUST NOT

The POST request to the unsubscription URI MUST NOT include cookies, HTTP authorization, or any other context information, to prevent inappropriately linking the unsubscribe to previous web activity.

email, http, privacy

normative-requirement §3.1 MUST

The URI in the List-Unsubscribe header MUST contain enough information to identify the mail recipient and the list from which the recipient is to be removed, so that unsubscription can complete automatically without extra POST arguments.

email

normative-requirement §3.1 SHOULD

The URI SHOULD include an opaque identifier or another hard-to-forge component in addition to or instead of plaintext names of the list and subscriber, and the server SHOULD verify that this component is valid.

email, security

protocol-element §3.1

The List-Unsubscribe-Post header field is a new email header whose value is fixed to the single key/value pair 'List-Unsubscribe=One-Click', signaling that the corresponding List-Unsubscribe HTTPS URI supports one-click POST-based unsubscription.

email

registry §7

IANA added a new entry 'List-Unsubscribe-Post' to the 'Permanent Message Header Field Names' registry with applicable protocol 'mail' and status 'standard', as specified by RFC 8058.

email, registry

security-consideration §6

A malicious mailer could craft spam with List-Unsubscribe headers to trigger POST requests to arbitrary servers. The fixed 'List-Unsubscribe=One-Click' postarg value limits harm by preventing simulation of arbitrary form submissions on victim websites.

email, security

security-consideration §6

The List-Unsubscribe URI SHOULD contain an opaque or hard-to-forge component to verify that POST requests originated from a message the mailer sent, deterring attacks where spam triggers unsubscriptions from victim lists.

email, security

security-consideration §6

The unsubscription operation confirms to the mailer that the recipient address is valid, providing an address-validation oracle. However, simpler methods (e.g., embedded image links) already exist for this purpose, so the incremental risk is low.

email, security, privacy

wire-format §5

The List-Unsubscribe-Post header is defined by the ABNF: 'list-unsubscribe-post = "List-Unsubscribe-Post:" 0*1WSP postarg CRLF' where 'postarg = "List-Unsubscribe=One-Click"'. The fixed postarg value prevents injection of arbitrary form fields.

email