Re: [Dovecot] Problem with sieve: Keep: Generic Error
OK, now i compiled the latest debian version (1.1.7 from ftp://ftp.debian.org/debian/pool/main/d/dovecot/) myself and I still get the same error.
Any ideas, Timo? ;-)
No. The error really seems to originate from the "keep"-rule. Here a full log of a mail delivery.
(Note that my user has per-user quota set off and has a per-user sieve script. But this message is put out for each and every delivery, no matter if the generic script is used or a per-user script.)
postfix/pipe[13649] 817E0900B3: to=<siebert@et.ruhr-uni-bochum.de>, relay=dovecot, delay=0.11, delays=0.05/0/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service) deliver(siebert@et.ruhr-uni-bochum.de) msgid=<00ac01c95e21$dc73ad30$955b0790$@siebert@rub.de>: saved mail to INBOX deliver(siebert@et.ruhr-uni-bochum.de) sieve_execute_bytecode(/home/vmail/home/siebert/.dovecot.sievec) failed deliver(siebert@et.ruhr-uni-bochum.de) sieve runtime error: Keep: Generic Error deliver(siebert@et.ruhr-uni-bochum.de) cmusieve: Executing script /home/vmail/home/siebert/.dovecot.sievec deliver(siebert@et.ruhr-uni-bochum.de) cmusieve: Using sieve path: /home/vmail/home/siebert/.dovecot.sieve deliver(siebert@et.ruhr-uni-bochum.de) maildir++: root=/home/vmail/home/siebert/Maildir, index=, control=, inbox=/home/vmail/home/siebert/Maildir deliver(siebert@et.ruhr-uni-bochum.de) maildir: data=/home/vmail/home/siebert/Maildir deliver(siebert@et.ruhr-uni-bochum.de) Namespace: type=private, prefix=INBOX., sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes deliver(siebert@et.ruhr-uni-bochum.de) Quota warning: bytes=0 (0%) messages=0 (80%) command=/etc/dovecot/quota_warn_count.sh 80 deliver(siebert@et.ruhr-uni-bochum.de) Quota warning: bytes=0 (0%) messages=0 (90%) command=/etc/dovecot/quota_warn_count.sh 90 deliver(siebert@et.ruhr-uni-bochum.de) Quota warning: bytes=0 (0%) messages=0 (95%) command=/etc/dovecot/quota_warn_count.sh 95 deliver(siebert@et.ruhr-uni-bochum.de) Quota warning: bytes=0 (80%) messages=0 (0%) command=/etc/dovecot/quota_warn_size.sh 80 deliver(siebert@et.ruhr-uni-bochum.de) Quota warning: bytes=0 (90%) messages=0 (0%) command=/etc/dovecot/quota_warn_size.sh 90 deliver(siebert@et.ruhr-uni-bochum.de) Quota warning: bytes=0 (95%) messages=0 (0%) command=/etc/dovecot/quota_warn_size.sh 95 deliver(siebert@et.ruhr-uni-bochum.de) Quota rule: root=User quota mailbox=* bytes=0 (0%) messages=0 (0%) deliver(siebert@et.ruhr-uni-bochum.de) Quota rule: root=User quota mailbox=* bytes=0 (0%) messages=0 (0%) deliver(siebert@et.ruhr-uni-bochum.de) Quota root: name=User quota backend=maildir args= deliver(siebert@et.ruhr-uni-bochum.de) auth input: quota_rule=*:storage=0 deliver(siebert@et.ruhr-uni-bochum.de) auth input: quota_rule2=*:messages=0 deliver(siebert@et.ruhr-uni-bochum.de) auth input: home=/home/vmail/home/siebert deliver(siebert@et.ruhr-uni-bochum.de) auth input: siebert@et.ruhr-uni-bochum.de deliver(siebert@et.ruhr-uni-bochum.de) Module loaded: /usr/lib/dovecot/modules/lda/lib90_cmusieve_plugin.so deliver(siebert@et.ruhr-uni-bochum.de) Module loaded: /usr/lib/dovecot/modules/lda/lib10_quota_plugin.so deliver(siebert@et.ruhr-uni-bochum.de) Loading modules from directory: /usr/lib/dovecot/modules/lda postfix/smtpd[13644] disconnect from mx2.rz.ruhr-uni-bochum.de[134.147.64.30] postfix/qmgr[30744] 817E0900B3: from=<thomas.siebert@rub.de>, size=1532, nrcpt=1 (queue active) postfix/cleanup[13648] 817E0900B3: message-id=<00ac01c95e21$dc73ad30$955b0790$@siebert@rub.de> postfix/smtpd[13644] 817E0900B3: client=mx2.rz.ruhr-uni-bochum.de[134.147.64.30] postfix/smtpd[13644] connect from mx2.rz.ruhr-uni-bochum.de[134.147.64.30]
OK, finally I tracked that bug down. The underlying problem is as I supposed namespacing (my namespace prefix is "INBOX."). In sieve_keep (sieve-cmu.c), the mailbox name is fetched from sieve_msgdata_t and then transferred to deliver_save (deliver.c). The problem is, that the default mailbox name in sieve_msgdata_t is - according to my namespace - "INBOX.". But deliver_save and mailbox_open_or_create_synced don't like that trailing dot, which leads to an error. This leads to default saving in the user's inbox, so in fact there happens what would happen anyways - but there's an error put out.
Generally, I think that this should be fixed in deliver which should strip trailing separators automatically when needed. Also I think that saving to INBOX instead of some other folder should be a no error but a warning. It should also be considered that for now, if using plus-extensions with delivers' -n option, when a folder doesn't exist and the mail is put into INBOX instead, an error is put out - although being perfectly desired behavior. Deliver should put out some warning in the log file instead of "/* silently store to the INBOX instead */" at line 225 and then leave without error code.
Regards, Thomas
On Mon, Dec 15, 2008 at 11:27 AM, Thomas Siebert <siebert@et.rub.de> wrote:
Hi Thomas, In you config you don't define a "separetor". If you define a separetor that error persists?
namespace private { separator = . prefix = INBOX. inbox = yes }
Regards.
participants (4)
-
Allan Cassaro
-
Thomas Siebert
-
Thomas Siebert
-
Timo Sirainen