将 dovecot 从 1.2 升级到 2.1.7 后(同时将 squeeze 升级到 wheezy),sieve 不再起作用。(并且中断了邮件传递)
apt-purging 所有 dovecot 包并重新安装并没有改善情况,我仍然收到相同的错误消息:
==> mail.err <==
Mar 14 13:40:14 xxx dovecot: deliver([email protected]): dlopen(/usr/lib/dovecot/modules//lib90_sieve_plugin.so) failed: /usr/lib/dovecot/libdovecot-sieve.so.0: undefined symbol: i_debug
Mar 14 13:40:14 xxx dovecot: deliver([email protected]): Fatal: Couldn't load required plugins
==> mail.info <==
Mar 14 13:40:14 xxx postfix/pipe[15828]: 13B1F19E0792: to=<[email protected]>, orig_to=<[email protected]>, relay=dovecot, delay=0.43, delays=0.32/0.01/0/0.09, dsn=4.3.0, status=deferred (temporary failure)
dovecot.conf:
protocols = imap lmtp sieve
mail_plugin_dir = /usr/lib/dovecot/modules/
[snip]
...
[/snip]
protocol lda {
mail_plugins = $mail_plugins sieve
#mail_plugins = sieve
}
protocol lmtp {
mail_plugins = $mail_plugins sieve
}
plugin {
#recipient_delimiter = +
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
}
ll /usr/lib/dovecot/libdovecot-siev*
lrwxrwxrwx 1 root root 25 Feb 5 2013 libdovecot-sieve.so -> libdovecot-sieve.so.0.0.0
lrwxrwxrwx 1 root root 25 Feb 5 2013 libdovecot-sieve.so.0 -> libdovecot-sieve.so.0.0.0
-rw-r--r-- 1 root root 540304 Feb 5 2013 libdovecot-sieve.so.0.0.0
ll /usr/lib/dovecot/modules/*sieve*
-rw-r--r-- 1 root root 18392 Feb 5 2013 /usr/lib/dovecot/modules/lib90_sieve_plugin.so
答案1
问题解决了:
在 postfix 中,邮件通过 dovecot 的 deliver 管道传输,而不是 lmtp
删除 /etc/postfix/master.cf 中的管道,
dovecot unix - n n - - pipe
flags=DORhu user=nobody argv=/usr/local/lib/dovecot/deliver -f ${sender}
-d ${user}@${nexthop} -n -m ${extension}
并将虚拟传输添加到 /etc/postfix/main.cf,
virtual_transport = lmtp:unix:private/dovecot-lmtp
或者
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp
为我解决了这个问题