The suggested integration method for procmail into postfix recommends the following:

mailbox_command = /some/where/procmail -a "$EXTENSION"

All it says about $EXTENSION is


The optional address extension.

What is passing this to procmail doing?

2 Answers 2


If your mailbox is you@example.net, Postfix will deliver you+stackexchange@example.net, you+4chan@example.net, etc to this mailbox with the part after the + as the extension.

As far as the MTA is concerned, the extension is simply ignored. You can basically invent new unique mail addresses on the fly by creating new extension parts on a whim whenever you need to share your email address.

In Postfix, the extension separator is configurable. Out of the box, it is unset, though Debian ships a canned Postfix configuration where it is set to a plus character, which is also the character used e.g. by Sendmail; Qmail uses a dash.

Eli the Bearded used to publish an email addressing FAQ about this; it's long abandoned, and obsolescent in some parts, but you can still find it archived on faqs.org.


$EXTENSION ends up being the latter half of a email address that contains an extension that is (mostly) ignored by the mailer:


This macro expands to the extension part of a recipient address. For example, with an address user+foo@domain the extension is foo.

When passed to procmail using the -a parameter, the assigns the variable $1 to the extension ("foo" in the example above) within procmail.

This allows simpler filtering rules within procmail based on the recipient's email address if the recipient is using address extensions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.