[Dovecot] SUMMARY: LDA vs LMTP, Cyrus SASL, verbose_proctitle

Joseph Tam jtam.home at gmail.com
Tue Apr 12 04:19:36 EEST 2011

A summary of answers I got to the questiosn I posed.

> Is there a reason I should prefer LMTP over LDA for local delivery?

Thanks for the responses I received.  The benefits reported were
more/better information logging, and service isolation.

Also, one significant advantage not mentioned for LMTP was that one
delivery failure to multiple recipients can be disambiguated; LDA can only
return an exit code to be tested by the MTA, but the MTA cannot know
which recipient(s) generated the error.

This problem present can itself, for example, when one user has a
full mailbox.  An LDA will return EX_TEMPFAIL, and the message will be
requeued, and delivery will be retried for all recipients (even those
that were successfully delivered to).

> The Wiki doesn't differentiates LMTP vs LDA with respect to sendmail
> configuration, so am I correct that I just need to replace mail.local
> with dovecot-lda, which will choose LDA/LMTP based on dovecot.conf?

Not that simple, but I finally did find my answer in the Dovecot archives.
It's too bad I had to spend hours tearing apart the sendmail docs before
finding it


The .mc version of the configuration:

 	# Use LMTP for local delivery over IPC channel

 	# Location of LMTP socket
 	define(`LOCAL_MAILER_ARGS', `FILE /path/to/dovecot/lmtp')

 	# Replace default sendmail LMTP options: the same options
 	# with the 'P' flag removed so that the Return-Path is not
 	# added (again?)
 	define(`LOCAL_MAILER_FLAGS', `SXmnz9')


I haven't tried this yet, but this is pretty close.

> Also, can I consolidate authentication by configuring dovecot to use
> what sendmail uses (Cyrus SASL) or vice versa?  The Wiki hints this is
> in the works.

No response, so I guess the answer is no.

> Lastly, toggling verbose_proctitle seems to have no effect on the output
> of ps.  Is verbose_proctitle broken for Solaris?

The answer to is verbose_proctitle is broken for Solaris.  There is
no setproctitle(), and ps does not report changes to a process's argv[]:

 	echo "main(int c,char**v){**v='x';sleep(9);}" | \
 		gcc -xc -o y -; ./y; rm y &
 	ps -f

You'll have to use "lsof", "pfiles" or "doveadm who" to get the information.

Joseph Tam <jtam.home at gmail.com>

More information about the dovecot mailing list