After upgrading Dovecot from 1.0 to 1.2, I just spent the last hour trying to
get the sieve plugin working
again (after the rewrite from
cmusieve).
When deliver invoked sieve, the latter would die with the following error:
/usr/lib64/dovecot/lda/lib90_sieve_plugin.so: undefined symbol: tried_default_save
… which would cause deliver to reject the mail, in turn causing Postfix to
delay delivery. After a lot of debugging and tail-chasing, I found that
Postfix was set to invoke deliver at:
/usr/libexec/dovecot/lda/deliver
which was the old Dovecot 1.0 path (on Gentoo, at least). Sometime between 1.0
and 1.2 they changed the path to drop the lda directory:
/usr/libexec/dovecot/deliver
The problem is, the original file was left sitting around by the ebuild, so
Postfix was invoking an old deliver that was linked against an old version
of sieve. Moral of the story: don’t trust that the package maintainers will
do the right thing (such as removing binaries that are not used anymore and
linked against old versions of libraries) and don’t assume that they won’t be
at fault!