list-unsubscribe

list-unsubscribe

list-unsubscribe is a Rust crate for parsing List-Unsubscribe and List-Unsubscribe-Post headers into typed unsubscribe actions.

Project: https://github.com/planetaryescape/list-unsubscribe
Crate: https://crates.io/crates/list-unsubscribe
Docs: https://docs.rs/list-unsubscribe

Why it exists

The header looks simple until product behavior depends on it.

An email client needs to know whether a sender offers a mailto unsubscribe, an HTTPS unsubscribe, and whether RFC 8058 one-click semantics are present. Getting that wrong either hides a useful unsubscribe action or fires a network action the user did not intend.

The crate owns the standards-shaped parsing. Mxr owns the product policy around when to show, preview, and execute unsubscribe actions.

Current mxr use

Validated 2026-06-04: mxr consumes list-unsubscribe = "0.1.0" from
crates.io through mxr-mail-parse. The latest crates.io release is 0.1.2.

The package owns standards-shaped parsing. mxr still owns the product behavior:
previewing, executing, and cleaning up unsubscribe actions.

Validate the local dependency:

cargo tree -p mxr-mail-parse -i list-unsubscribe

Durable lesson

Parsing and acting are separate contracts. A parser can safely expose every valid unsubscribe method; the application still decides which methods are safe to offer and which mutations need preview.

See also