cyrus + postfix + lmtpd questions [massively OT]

Nic Bernstein nic at
Thu Mar 18 11:11:26 EDT 2010

On 03/18/2010 01:41 AM, Simon Matter wrote:
>> I just want to get this straight. Please, someone clarify his to me.
>> Consider Cyrus and Postifx runing on different servers and having to
>> communicate with each other through lmtp.
>> 1)
>> Here´s the line we all know from cyrus.conf that is gonna bring lmtp
>> listening on tcp:
>> lmtp          cmd="/usr/local/cyrus/bin/lmtpd" listen="lmtp" prefork=1
>> maxchild=100
>> Is that enough on the cyrus side ?
> That look okay, but see below...
>> 2)
>> posfix's :
>> mailbox_transport = inet:[]:24
> Looks also okay.

In postfix, I would suggest using local_transport instead of 
mailbox_transport.  The reason I make this suggestion has to do with 
getting the most out of the postfix processing and delivery options.  
One critical change, however, is that instead of alias_maps you must use 
virtual_alias_maps.  Those are handled a little bit differently, so 
check the README files.

Here I would use:

    local_transport = <-- or whatever
    port you're using

If you wish to stick with mailbox_transport, you should still use 
"lmtp:inet..." so postfix knows to talk LMTP and not SMTP for delivery.  
From the postfix documentation:

    # Specify a string of the form transport:nexthop, where transport is
    # the name of a mail delivery transport defined in  The
    # :nexthop part is optional. For more details see the sample transports
    # file.

You can always define a more specific transport in, and then 
cite that in your {mailbox|local}_transport line.  For example, we often 
pair postfix with amavisd-new, and don't want postfix to overrun the 
number of amavis processes, so we add this to

    # A special lmtp instance to feed amavisd.  Keep the maxproc field
    # below the max_servers value in amavisd.conf
    slmtp     unix  -       -       n       -       14       lmtp

And then have this for our content_filter line:

    content_filter = slmtp:

I would also recommend investigating whether you would benefit from 
concurrency limits (in, such as:

    local_destination_concurrency_limit = 300
    local_destination_recipient_limit = 300

These may help prevent bottlenecks when you receive messages destined 
for large distribution lists.

>> 3)
>> On some previous reply someone wrote about adding the following to
>> relay_domains :
>>     lmtp:unix:public/lmtp    # for a local LMTP socket
>>     inet:[]:24        # for a remote LMTP socket
>> and then to extend transport_maps:
>> transport_maps=hash:/etc/postfix/transports,hash:/etc/postfix/relay_domains.
>> Cant figure out why this is necesary.
> Well, using a simple mailbox_transport like shown in 2) is the easiest
> configuration. Of course you can have very complex postfix configs for
> example with complicated transport maps but you don't have to make it
> complex if your environment doesn't enforce it.

Adding entries like this to relay_domains is necessary only if the 
domains in question are not in your mydestinations setting.  Having more 
than one entry for the same left-hand value ( in this case) 
is redundant, as the first match wins in postfix map lookups.

>> 4)
>> And last but not least. How postfix authenticates in anyway so Cyrus ????
> The question is how you want to communicate. In my case I was using a
> local trusted network between postfix and cyrus server so I did the
> easiest thing which is running lmtpd without authentication and configure
> TCP wrapper to accept only connections from the postfix host. Like so:
> In /etc/cyrus.conf I had lmtpd listening preauthenticated:
>    lmtp          cmd="lmtpd -a" listen="lmtp" prefork=1
> In /etc/hosts.deny on the cyrus host I had:
> # Allow only specific hosts to send mail via LMTP
> lmtp: ALL EXCEPT mailhub.domain.tld

To set the postfix credentials for lmtp, use the lmtp_sasl_* 
configuration settings.  Check the postfix documentation for exhaustive 
discourse on this:

Note: you will be dealing with the lmtp client for postfix and the lmtpd 
server for cyrus.


Nic Bernstein                             nic at
Onlight llc.                    
219 N. Milwaukee St., Suite 2a		  v. 414.272.4477
Milwaukee, Wisconsin  53202

-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Info-cyrus mailing list