Mailman should work pretty much out of the box with a standard Postfix installation. It has been tested with various Postfix versions up to and including Postfix 2.11.3 (as of April 2016).
In order to support Mailman's optional VERP delivery, you will want to disable
luser_relay
(the default) and you will want to set
recipient_delimiter
for extended address semantics. You should comment
out any luser_relay
value in your main.cf and just go with the
defaults. Also, add this to your main.cf file:
recipient_delimiter = +
Using "+" as the delimiter works well with the default values for VERP_FORMAT and VERP_REGEXP in Defaults.py.
When attempting to deliver a message to a non-existent local address, Postfix may return a 450 error code. Since this is a transient error code, Mailman will continue to attempt to deliver the message for DELIVERY_RETRY_PERIOD - 5 days by default. You might want to set Postfix up so that it returns permanent error codes for non-existent local users by adding the following to your main.cf file:
unknown_local_recipient_reject_code = 550
Finally, if you are using Postfix-style virtual domains, read the section on virtual domain support below.