RFC 5233: Sieve Email Filtering: Subaddress Extension

2026-07-17

RFC: RFC 5233

Published: 2008

Authors: Kenneth Murchison

Every time you hand out [email protected] to a website so you can filter (or later identify) who sold your address, you are using a convention that RFC 5233 formalized. It is a small, three-page standards-track document that quietly shaped how millions of people manage their inboxes.

The problem. An email address is traditionally a single opaque token: local@domain. If you wanted per-purpose addresses, you either registered dozens of aliases with your mail provider or ran your own server with wildcard rules. There was no interoperable way to say "the part after the + is a user-controlled tag, and my Sieve filter should be able to match on it."

What Sieve is. Sieve (RFC 5228) is a domain-specific language for server-side mail filtering. Unlike procmail, it is deliberately not Turing complete — no loops, no shell execution — so untrusted users can safely upload filter scripts to a shared IMAP server. Sieve is extended through named capabilities, and RFC 5233 registers one called subaddress.

What the extension actually does. It adds two match-part qualifiers, :user and :detail, that any address test can apply. Given a header like To: [email protected]:

So a filter can now say "if the detail portion is netflix, file into the Streaming folder" without hand-parsing the local-part.

Key design decisions. The RFC is careful about several things that seem obvious in retrospect:

Why it matters today. Gmail popularized +-addressing for consumers, but the server-side story is Sieve. Fastmail, Cyrus, Dovecot's Pigeonhole, and most modern IMAP stacks implement RFC 5233 verbatim. If you have ever written a filter rule that keys off the tag portion of an address, or built a signup tracker that gives every service a unique subaddress, this three-page RFC is why the plumbing exists. It is also a nice case study in minimum viable standardization: it does not invent the convention, it does not force a delimiter, it just gives filter authors two extra verbs and gets out of the way.

Historical note. Murchison was deep in the Cyrus IMAP world at CMU, and the extension formalizes what Cyrus already did in the wild for years. Much of Sieve's ecosystem — Sieve itself (RFC 3028, then 5228), ManageSieve (RFC 5804), and this extension — traces back to that Cyrus lineage, which is why so many mail servers speak it identically.

Why it matters: RFC 5233 is the reason you+tag@domain addresses are a usable, portable filtering primitive instead of a per-provider hack.

All newsletters