[ Deliverability & sender rules ]

One-click unsubscribe: implement the required message and HTTP behaviour

Implement RFC 8058 as an authenticated message signal and a state-changing HTTPS POST, not merely a link that opens a preferences page.

By the EmailAuth research team · 3 min read

[ Key points ]

  • Implement RFC 8058 as an authenticated message signal and a state-changing HTTPS POST, not merely a link that opens a preferences page.
  • Bind the URI to the intended recipient and list, handle the specified POST directly, and verify durable suppression beyond the HTTP response.
On this page

One-click unsubscribe connects two systems: the message that advertises the action and the service that processes it. A correct-looking header is only half the implementation. The endpoint must identify the intended subscription, accept the specified request without a login, and make the opt-out effective.

Construct the message before signing it

RFC 8058 calls for one List-Unsubscribe field containing an HTTPS URI and one List-Unsubscribe-Post field containing List-Unsubscribe=One-Click. A valid DKIM signature must cover both fields. Other non-HTTP/S unsubscribe URIs, such as mailto, may also appear in List-Unsubscribe. RFC 8058 sections 3 and 4.

A minimal illustrative header pair is:

List-Unsubscribe: <https://unsubscribe.example.test/u/opaque-token>

List-Unsubscribe-Post: List-Unsubscribe=One-Click

The reserved hostname and token are teaching placeholders, not an operational endpoint. Add these fields before the final relevant signing step. Inspect the emitted message to ensure the signature's h= list includes them and cryptographic verification succeeds after all transformations.

Make the URI identify the exact action

The URI must carry enough information to identify the recipient and list. The receiver cannot supply an extra recipient field or answer a preferences questionnaire. Use an opaque, hard-to-forge component and validate it at the endpoint. Avoid exposing addresses unnecessarily in URLs, logs or analytics.

Treat the token as authority to perform a narrowly scoped unsubscribe, not as a general account credential. Someone with access to the message may be able to use it. Do not let it change account ownership, sign in as the user or alter unrelated subscriptions. Choose retention and expiry behavior deliberately so old messages do not become useless opt-out paths without a considered policy.

Process the specified POST directly

The receiver sends an HTTPS POST with the advertised key/value pair in its body. RFC 8058 allows application/x-www-form-urlencoded and recommends multipart/form-data. The request must not rely on cookies, HTTP authorization or prior browser context. The sender must not return an HTTPS redirect. The receiver must obtain user consent before performing the action.

A body link can still offer a human-readable preference page, but the POST action must complete without further interaction. As an implementation safeguard, keep GET requests non-destructive so automatic link fetching does not itself remove a subscriber. That safeguard is an operational design recommendation motivated by the problem the RFC addresses.

Verify application state, not just a status code

Suppose a hypothetical endpoint returns success for a valid newsletter token, but the next campaign export still includes that same recipient/list pair. The protocol request may have reached the service, but the operational suppression is not established. Inspect the durable decision, propagation acknowledgement and audience-selection input rather than treating the status code as completion.

For an authorized test, define expected outcomes first: a GET and an invalid token should not remove subscriptions; a valid POST should affect only its intended pair; repeating it should preserve that same final state. These are design expectations, not executed local or production tests.

For deployment, separately verify TLS certificate validity, hostname, public reachability, both supported form encodings, proxy behavior and rate limits. Check that the response does not redirect to a login or tracking service. Ensure the next campaign selection honors the suppression, including any caches or third-party exports.

Operate the endpoint as a durable service

Make repeated valid requests safe, record a minimal audit event and monitor failures without exposing tokens. Alert on processing errors and suppression backlogs. A response that claims success before a durable update needs a reliable processing design and bounded completion time.

Close the implementation with message verification, endpoint tests and an observed next-send exclusion for a controlled recipient. None of these alone proves that every mailbox interface will display an unsubscribe button.

Choose the repair from the failed checkpoint

A redirect or login requirement calls for endpoint repair. A wrong recipient/list mapping calls for authorization-scope repair. A correct endpoint with a stale campaign export calls for propagation repair. Do not close all three because one POST returned success.

[ Takeaway ]

Implement RFC 8058 as an authenticated message signal and a state-changing HTTPS POST, not merely a link that opens a preferences page.

[ By role ]

What this means for you

Choose your role for practical next steps.

IT / Mail Admin

Verify both protocol halves

The signed message and endpoint must agree.

Next steps

  1. Sign required headers.
  2. Test request encodings.
  3. Confirm next-send exclusion.

CISO / SecOps

Scope token authority narrowly

Message access may permit unsubscribe.

Next steps

  1. Use opaque validated tokens.
  2. Protect URLs in logs.
  3. Prevent unrelated account actions.

Founder / Non-technical

Make opting out reliable

A decorative link does not complete the user’s request.

Next steps

  1. Assign endpoint ownership.
  2. Fund durable suppression.
  3. Monitor failures and backlogs.

[ FAQs ]

Frequently asked questions

Is a body unsubscribe link enough for RFC 8058?

No. The protocol uses the message header pair and an HTTPS POST.

Must the URI identify both list and recipient?

Yes. The request cannot depend on a follow-up questionnaire.

Can the POST require a logged-in browser?

No. It must not rely on cookies, authorization or prior browser context.

Can the endpoint redirect to a preference page?

The sender must not return an HTTPS redirect for this operation.

What should a GET request do?

A safe implementation keeps it non-destructive to avoid accidental removal by fetchers.

Does the example validate production TLS?

No. It is a hypothetical propagation failure and test plan. HTTPS, request parsing and real suppression still need authorized verification.

Why test duplicate requests?

Retries should not expand the unsubscribe scope or corrupt state.

Does correct implementation guarantee a provider button?

No. Interface eligibility and display remain separate receiver decisions.

[ Sources ]

Sources

  1. RFC 8058 One-Click Unsubscribe

    Sections §3.1 · §3.2 · §4 · §5 · §6

  2. RFC 6376 DKIM

    Sections §3.5 · §5.4 · §6.1

  3. RFC 2369 List headers

    Sections §3.2

[ Glossary ]

Glossary

One-click POST
The HTTPS request that performs the RFC 8058 unsubscribe action.
Opaque token
A value that identifies an authorized action without exposing its underlying data directly.
Idempotent handling
Repeated equivalent requests leave the same intended final state.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard,, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base