Cyrus Postfix LMTP tuning
ktm at rice.edu
ktm at rice.edu
Fri Oct 14 14:13:06 EDT 2011
On Fri, Oct 14, 2011 at 11:01:13AM -0700, Andrew Morgan wrote:
> On Fri, 14 Oct 2011, Henrique de Moraes Holschuh wrote:
> > On Thu, 13 Oct 2011, John Madden wrote:
> >>> Our Postfix relays (there are 3) seem to make one lmtp connection per
> >>> message, rather than sending multiple messages down a single connection.
> >>> Do any Cyrus+Postfix users out there have tuning recommendations? I see a
> >>> lot of postfix lmtp_* config options, but I know little about Postfix.
> >> I make no guarantees about these, but try this out:
> >> lmtp_destination_concurrency_limit = 50
> >> lmtp_destination_recipient_limit = 5000
> >> lmtp_connection_cache_on_demand = no
> >> lmtp_data_done_timeout = 3600s
> >> It's been a couple years, but I definitely had oddball issues with LMTP
> >> under load and somewhere along the line these options fixed them. YMMV.
> >> The usual RTFineM about these applies too:
> >> http://www.postfix.org/postconf.5.html
> > You should name an specific LMTP transport for cyrus deliveries in postfix'
> > master.cf. That way, you can use <transport_name>_<parameter_name> to
> > configure it, without affecting other potential users of the same transport
> > binary.
> > E.g. if you created a cyruslmtp transport (which uses the lmtp binary), you
> > could have:
> > cyruslmtp_destination_concurrency_limit = 50
> > cyruslmtp_destination_recipient_limit = 5000
> > cyruslmtp_connection_cache_on_demand = no
> > cyruslmtp_data_done_timeout = 3600s
> > Obviously you must not do something that would make it impossible to batch
> > the deliveries into a single ESMTP/LMTP transaction. If you use a mailing
> > list, that means you must not enable VERP.
> > You also want to let cyrus hardlink multi-recipient deliveries when possible
> > (but watch out for your backups if they duplicate hardlink files, backup
> > space will be much larger than spool space):
> > in imapd.conf, add:
> > singleinstancestore: 1
> Thanks for the tips John and Henrique. Our Postfix admin is going to take
> a look. Do you have any guidelines for setting the number of lmtp
> children allowed on the Cyrus side? We have 3 frontends set to
> maxchild=25 each. Is it better to keep maxchild low, or would throughput
> improve with a higher limit?
Also, if you are using an aliases table for delivery in postfix you
will not take advantage of the single instance store because the aliases
table is handle by the local delivery agent which delivers everything
one addess at a time. You will need to use virtual aliases to take
advantage of the single instance store. We are still in the process
of moving to virtual aliases from the regular aliases table for that
More information about the Info-cyrus