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 neededand 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... -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 263 bytes Desc: OpenPGP digital signature URL: <http://dovecot.org/pipermail/dovecot/attachments/20130727/f601a17d/attachment.bin>
"Martin Burgraf" <martin.bg at web.de> writes:> According to http://wiki2.dovecot.org/LDA the recommended way is to use > LMTP, since it's supposed to have a better performance.The performance gains comes mostly from avoiding the overhead of invoking an executable and spawning a new process for each delivery. If your mail system isn't stressed, I don't think it matters much.> 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 don't know why you would consider a background process inferior to a run-on-demand executable.> I've also noticed, that LMTP adds an additional Recieved:-Header to the mail. > Are there any other differences?>From a past discussion on this topic, I think Timo stated that if youuse SIS (single-instance storage or de-duping), it's more efficient using LMTP since it knows all message bodies to multiple recipients will be identical. Joseph Tam <jtam.home at gmail.com>
-----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 at 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 ------------------------------------------------------------------------ -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 4553 bytes Desc: S/MIME Cryptographic Signature URL: <http://dovecot.org/pipermail/dovecot/attachments/20130729/8bdc816d/attachment.bin>
Joseph Tam wrote:> I don't know why you would consider a background process inferior to a > run-on-demand executable.Well, the background process is hogging CPU and RAM while it basically does nothing. And when it's running as root there is always the danger of privilege escalation. LDA only runs when it's needed and since it uses only user rights it shoudbe more harmless. bye Martin
Martin Burgraf writes:> > I don't know why you would consider a background process inferior to a > > run-on-demand executable. > > Well, the background process is hogging CPU and RAM while it basically > does nothing."Hogging" CPU and memory is putting it strongly, as it is basically suspended while blocked on waiting for a connection, and if left for a long time in an idle state, might be swapped out to disk and not consuming (real) memory, or consuming real memory that isn't in use otherwise. As I stated before, the resource usage is small compared with all the other stuff going on, so if you don't have a busy mail server, I don't think you should sweat the difference. The benefits of LMTP should increase with load, as having LMTP resident will save you the overhead of repeatedly loading/unloading LDA, and I'm sure the CPU and memory usage of servicing that overhead will be non-trivial. If you have oodles of memory, then it's no problem keeping a LMTP resident. If you don't have enough memory and are VM disk thrashing, you'll have other problems and LDA/LMTP is the least of your worries.> And when it's running as root there is always the danger > of privilege escalation. LDA only runs when it's needed and since it > uses only user rights it shoudbe more harmless.I didn't contest the privilege separation aspect, as it a necessary design trade-off that one daemon doing things for all user will need overriding access. However, if this is a concern, you can virtualize all your users. LMTP can theoretically be subverted, but at least won't be as root. (I'm assuming LMTP stays as root, and not spawning off user processes to do the real work.) Joseph Tam <jtam.home at gmail.com>
(Weird: this message digest got dumped into Google's spam folder. Maybe it didn't like the string in a later post (obfuscated here) master(dot)cf, which in the context of this mailing list is a postfix configuration file, but which Gmail interpret as a website. However, that domain is a SURBL/DBL blacklisted URI). Ben Morrow writes:> > > And when it's running as root there is always the danger > > > of privilege escalation. LDA only runs when it's needed and since it > > > uses only user rights it shoudbe more harmless. > > > > ... > > (I'm assuming LMTP stays as root, and not spawning off user > > processes to do the real work.) > > It doesn't stay as root; Dovecot's LMTP switches down to the user's uid > to perform delivery, including sieve scripts.I stand corrected. This removes the other objection that the original poster for running a peristent LMTP process. Joseph Tam <jtam.home at gmail.com>