Cyrus Postfix LMTP tuning

Andrew Morgan morgan at
Fri Oct 14 14:01:13 EDT 2011

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:
> You should name an specific LMTP transport for cyrus deliveries in postfix'
>  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?


More information about the Info-cyrus mailing list