Expand description
Leaving a mailing list in one click (docs/client.md, “Unsubscribing”).
A list’s message says how to leave it in List-Unsubscribe (RFC 2369): web
addresses, mail addresses. When it also carries List-Unsubscribe-Post: List-Unsubscribe=One-Click and a valid DKIM signature covers both headers
(RFC 8058 §3.1), an HTTPS POST does it, nothing else asked. Else a message
to the list’s address does it, sent as any message is; else only a web page
can, and it opens in the browser.
Nothing is contacted for mail set aside (forged, spam, a borrowed name, a
blocked sender) or hostile, nor when nothing proves the address it names
is the list’s own: a valid signature of the domain shown in From (the
message verified), or a valid signature covering List-Unsubscribe by the
domain the address belongs to. A forged message could otherwise make Sioul
post to, or write to, anyone. What was done is kept on this device
(Record), so that a list is not asked twice and you can see it.
Structs§
- Left
- One list left, or whose page was opened.
- List
- The list a message comes from.
- Offer
- What a message offers to leave its list.
- Record
- The lists you left, kept on this device (
$XDG_STATE_HOME/sioul/unsubscribed.toml). - Signed 🔒
- A DKIM signature that passed, with the headers it covers (its
h=tag). - Unsubscribe
View - The Reader’s button, as the window shows it.
Enums§
Constants§
- ONE_
CLICK - The value of
List-Unsubscribe-Postthat asks for one click (RFC 8058 §3.1).
Functions§
- by_mail 🔒
- The message a
mailto:address asks for: one recipient (a list’s own address), its subject and text, “unsubscribe” where it says none. Copies it asks for (cc,bcc) are not sent: one click writes to the list alone. - domain_
of_ 🔒address - The domain a
Way::Mailwrites to. - host_of
- The host of a web address, lower case; none when it is not a name on the Internet (an IP address, “localhost”, a local network’s name): one click reaches nothing on your own network.
- list_of
- The list a message comes from: its List-Id (“Type & Pixels <letter.typeandpixels.example>”), else its sender.
- offer
- How to leave the message’s list, or why one click does nothing; none when
it names no way out (
List-Unsubscribe).trust,laneandreasonsare the Porch’s verdict on it (porch::triage);trusted_idsthe authserv-ids of its account (Sioul’s own, then the provider’s). - public_
host 🔒 - A name on the Internet: letters, digits, hyphens and dots, two labels at least, the last of letters; never an IP address nor a local name.
- request
- The message that asks a list to stop, plain text, from your address.
- signatures 🔒
- The signatures that passed, as the trusted results header records them
(
trust::dkim_passes), each with what it covers, read from the DKIM-Signature header it names (domain, selector, start of the signature). When several headers match one result (a copy, altered), a header counts as covered only if all of them cover it: a copy can only take away. - tags 🔒
- A DKIM-Signature header’s tags (RFC 6376 §3.2), names lower case, the
spaces of each value taken out (they fold a long
b=orh=). - uris
- The addresses of
List-Unsubscribe, in order: each between angle brackets, spaces inside taken out (RFC 2369 §2), comments left aside. - view
- The button for a message’s offer.
sends_fromis the address a message goes out from (the account the message came to), none when it cannot send. - way 🔒