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.