Hi,
I just finished setting up a functional design with Dovecot+Sieve and it works like a charm.
However I'm having serious doubts about the scalability of this. Here is part of a discussion we're having here:
About Dovecot+Sieve.
What happens here is that your MTA is configured to pass _all_ email to Dovecot which is configured as a LDA. In practice this means this in the Exim config:
command = /usr/local/dovecot/libexec/dovecot/deliver
So you call on a single binary "deliver". This binary then looks for a .dovecot.sieve file in the user maildir, _compiles_ it to .dovecot.sievec file, and than drops the mail according to the rules. Calling a single binary: that's isn't threaded, doesn't fork, and that has to compile a file (everytime?) it's called isn't scalable. Multiply this with 100 mails(calls) per second and this is bound for problems.
The Dovecot/Sieve implementation is functional but not very elegant or robust. But this can be explained because Dovecot is build for _retrieving_ mail (imap/pop) and _not_ delivering mail.
Any thoughts on this? Are there people out there with large Dovecot+Sieve implementations (100k+ users). Are there benchmarks available; how well does it perform under heavy load (mails/sec)?
Cheers,
Jan