[Dovecot] LMTP in 2.0: concurrency, inet sockets

Stefan Foerster cite+dovecot-users at incertum.net
Sun Feb 7 14:39:45 EET 2010

* Timo Sirainen <tss at iki.fi>:
> On 3.2.2010, at 9.41, Stefan Foerster wrote:
> > What about concurrent deliviers? As of now, when using the deliver
> > LDA together with Postfix, you have to make sure that only one
> > recipient is passed to deliver at a time, so for multi-recipient
> > mail, the system might spawn a large number of processes (two per
> > recipient, therefore two forks/execve calls). Is that limit still
> > imposed with the new LMTP server?
> Nope. Each LMTP session can handle multiple recipients. And each
> LMTP process can handle multiple sessions. That also unfortunately
> means that if you're using multiple UNIX UIDs, lmtp processes need
> to run as root for now.

The new LMTP support seems to deliver an amazing performance. I've
done a test where I delivered 100k messages with strict test script,
with concurrency raning from 1 for 92% up to 18 for 0.2% of all
deliveries. Recipient concurrency was 1 for 84% up to 9 for 1.3% of
all messages (I did some logmining to get real data).

Both tests were using Postfix 2.7-20101117 with recipient data stored
in Berkeley DB ("hash:") maps, and I provided the userdb and passdb
files for both Dovecot 1.2.10 and 2.0b2 as flat text files, too.

For 100k messages, delivery to a Maildir store using Postifx's pipe(8)
and Dovecot's deliver took 4319s, which equals 23.15 delivieries per
second - and that's with the pipe(8) delivery agent haning around for
up to 100 seconds, being reused for multiple transactions.

Dovecot 2.0, with LMTP, was finished after 4007s, which equals 24.96
deliveries per second.

Apart from an almost 10% difference, the system felt a lot less
"sluggish" (read: I/O saturated) with 2.0b2 - unfortunately, I didn't
run sysstat during the test, but I'll get that done next weekend.

Keep up the good work!


More information about the dovecot mailing list