Hi there,
I'm using Dovecot together with Postfix; as I understand it, there are two ways to transfer the mail from Postfix to Dovecot. 1.) by using LDA with mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT" 2.) by using LMTP with mailbox_transport = lmtp:unix:private/dovecot-lmtp
(currently using number 1) I'm interessted in the differences and the advantages/disadvantages of each of those solutions.
According to http://wiki2.dovecot.org/LDA the recommended way is to use LMTP, since it's supposed to have a better performance. On the other hand, http://wiki2.dovecot.org/LMTP says, that LMTP is a backgound process, while LDA is only called when needed. I've also read, that LDA only uses the users privileges, which both means, that LDA should be better. I've also noticed, that LMTP adds an additional Recieved:-Header to the mail. Are there any other differences?
Thank you M.
Am 26.07.2013 17:45, schrieb Martin Burgraf:
I'm using Dovecot together with Postfix; as I understand it, there are two ways to transfer the mail from Postfix to Dovecot. 1.) by using LDA with mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT" 2.) by using LMTP with mailbox_transport = lmtp:unix:private/dovecot-lmtp
(currently using number 1) I'm interessted in the differences and the advantages/disadvantages of each of those solutions According to http://wiki2.dovecot.org/LDA the recommended way is to use LMTP, since it's supposed to have a better performance On the other hand, http://wiki2.dovecot.org/LMTP says, that LMTP is a backgound process, while LDA is only called when needed
and that is why LMTP is preferred
instead fire up a new process for each message with all the costs you have *one* process running all the time waiting for a message to deliver
you would no run SMTPD via xinetd and start the smtpd service each time someone delivers a message to your server...
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Fri, 26 Jul 2013, Martin Burgraf wrote:
I'm using Dovecot together with Postfix; as I understand it, there are two ways to transfer the mail from Postfix to Dovecot. 1.) by using LDA with mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT" 2.) by using LMTP with mailbox_transport = lmtp:unix:private/dovecot-lmtp
(currently using number 1) I'm interessted in the differences and the advantages/disadvantages of each of those solutions.
According to http://wiki2.dovecot.org/LDA the recommended way is to use LMTP, since it's supposed to have a better performance. On the other hand, http://wiki2.dovecot.org/LMTP says, that LMTP is a backgound process, while LDA is only called when needed. I've also read, that LDA only uses the users privileges, which both means, that LDA should be better. I've also noticed, that LMTP adds an additional Recieved:-Header to the mail. Are there any other differences?
LMTP also adds "Delivered-To", unless I'm mistaken.
There is one difference, that pops up on failure: The LDA has the exit code only to return success/failure back to the MTA. LMTP uses the same mechanisms as SMTP to return success / failure incl. descriptive information.
There is another difference, if you need additional hacking: With the LDA-method you can put a wrapper script between MTA and MDA, in order to alter the message, recipient, just log something, ... . Actually that self-made wrapper script [and I really mean script in the sense of bash, perl, python, C, ruby, ...] can control the delivery fully. That would be more sophisticated to do with LMTP.
Steffen Kaiser -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux)
iQEVAwUBUfYVuF3r2wJMiz2NAQLWwgf8CNZ+J9UmFco1dftatU95/MKN1T+70PuL w3+PpCbhCfJ3SHlnlTjRydaAYue4tL0Mu6lJ2ajm3n0SJSHukdxaWmPy6/P0dufV EQePTE3W0UD2j+zNYn57LCfF81No9c86A3Uz7DQcPhmsvCSZTo3PyEaPz0PkflTR BNQ14juGmJAQxSJDvudgCgzx7TnnGoqEx8EsKMTjSA0W3gCCng6N7MRCHuoCEZBJ AEfnwNgnw7bpeiPedI4l8gnvYEYK99Xa0ZmzjEYmbitzulTPRu8jPny7dfAHp5Bd xzEN3qWq/QZZ62wQgYSqYPT8mL8aRcwbS7ur9WbsBZHEmr0lLxnhlQ== =5twi -----END PGP SIGNATURE-----
On 07/26/2013 05:45 PM, Martin Burgraf wrote:
Hi there,
I'm using Dovecot together with Postfix; as I understand it, there are two ways to transfer the mail from Postfix to Dovecot. 1.) by using LDA with mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT" 2.) by using LMTP with mailbox_transport = lmtp:unix:private/dovecot-lmtp
(currently using number 1) I'm interessted in the differences and the advantages/disadvantages of each of those solutions.
You cannot use the LDA method if SMTP and IMAP services reside on different machines, which would be the case in larger scale mail system setups.
My advice is to go with LMTP anyway!
Cheers Jan
-- MAX-PLANCK-INSTITUT fuer Radioastronomie Jan Behrend - Rechenzentrum
Auf dem Huegel 69, D-53121 Bonn Tel: +49 (228) 525 359, Fax: +49 (228) 525 229 jbehrend@mpifr-bonn.mpg.de http://www.mpifr-bonn.mpg.de
Die digitale Unterschrift dieser Mail kann durch das Zertifikat der DFN Global Hierarchie überprüft werden: https://ca.mpg.de/certs/root-DGP/deutsche-telekom-ca2-root-cert.der Weitere Informationen zur CA der MPG finden Sie unter: https://ca.mpg.de
On Mon, 2013-07-29 at 09:30 +0200, Jan Behrend wrote:
You cannot use the LDA method if SMTP and IMAP services reside on different machines, which would be the case in larger scale mail system setups.
Sorry, that is incorrect.
Granted, it does mean putting dovecot on the SMTP servers as well, but you certainly do not need to allow pop3/imap access.
On 7/29/2013 2:30 AM, Jan Behrend wrote:
You cannot use the LDA method if SMTP and IMAP services reside on different machines, which would be the case in larger scale mail system setups.
Which brings up an interesting point. With a single LMTP daemon on the Dovecot server communicating via a single socket with the upstream MTA over the wire, it would stand to reason that message throughput rate may be limited by serialization in the LMTP request/reply chain. There is no parallelism, and thus there is relatively high latency.
In the case of LDA with an SMTP MTA on the local box, the potential exists for very high parallelism, and thus elimination of the latency in serial delivery over a single socket with LMTP.
So in theory, while LDA in this scenario would consume far more resources with a very high message load, one should be able to attain much higher message throughput. I say in theory because I've not tested this head to head.
-- Stan
At 4PM -0500 on 29/07/13 you (Stan Hoeppner) wrote:
On 7/29/2013 2:30 AM, Jan Behrend wrote:
You cannot use the LDA method if SMTP and IMAP services reside on different machines, which would be the case in larger scale mail system setups.
Which brings up an interesting point. With a single LMTP daemon on the Dovecot server communicating via a single socket with the upstream MTA over the wire, it would stand to reason that message throughput rate may be limited by serialization in the LMTP request/reply chain. There is no parallelism, and thus there is relatively high latency.
What makes you think an SMTP server delivering over LMTP only makes a single connection to the LMTP server? I believe Postfix by default makes a fresh connection for each delivery.
Ben
On 7/29/2013 6:05 PM, Ben Morrow wrote:
At 4PM -0500 on 29/07/13 you (Stan Hoeppner) wrote:
On 7/29/2013 2:30 AM, Jan Behrend wrote:
You cannot use the LDA method if SMTP and IMAP services reside on different machines, which would be the case in larger scale mail system setups.
Which brings up an interesting point. With a single LMTP daemon on the Dovecot server communicating via a single socket with the upstream MTA over the wire, it would stand to reason that message throughput rate may be limited by serialization in the LMTP request/reply chain. There is no parallelism, and thus there is relatively high latency.
You snipped the text where I stated this is a theoretical discussion, due to the high msg volume required to prove one over the other. That said, I'll gladly continue to postulate on the theoretical.
What makes you think an SMTP server delivering over LMTP only makes a single connection to the LMTP server? I believe Postfix by default makes a fresh connection for each delivery.
No, Postfix by default uses connection caching w/both SMTP and LMTP: http://www.postfix.org/postconf.5.html#lmtp_cache_connection
If the load is sufficiently high it will open additional connections, but it attempts to reuse existing connections as much as possible to eliminate additional connection setup delays, which can be considerable with SMTP servers. For instance some OPs insert 2 minute or longer greet delays as a (very crude) anti spam bot measure. Connection caching is an SMTP optimization, and not nearly as beneficial to LMTP. The Postfix SMTP/LMTP clients are literally the same code.
-- Stan
participants (7)
-
Ben Morrow
-
Jan Behrend
-
Martin Burgraf
-
Noel Butler
-
Reindl Harald
-
Stan Hoeppner
-
Steffen Kaiser