[Dovecot] Problem with sieve scripts including sieve scripts

Mauricio Tavares raubvogel at gmail.com
Thu Jul 23 15:55:57 EEST 2009


	I have the following global cmusieve scripts defined in 
/etc/dovecot/sieve, which is owned by the user deliver is run (virtual) 
as defined in the lda session of dovecot.conf:

global-spam.script ======================================

require ["fileinto"];
# Move spam to spam folder
if header :contains "X-Spam-Level" "********************" {
   fileinto "Spam";
   # Stop here so that we do not reply on spam
   stop;
}
elsif header :contains "X-Spam-Flag" "Yes" {
   fileinto "Spam";
   stop;
}

global-default.script ====================================

require ["include"];
include :global "global-spam.script";

i.e. all the default script does is call the spam script. I have created 
the compiled versions using sievec, making sure they are still owned by 
virtual:

mail sieve # ls
global-default.script   global-spam.script   global-vacation.script
global-default.scriptc  global-spam.scriptc  global-vacation.scriptc
mail sieve #

In the plugins session of dovecot.conf I have defined the path for 
global scripts (so I can do the include :global thingie) and the path 
for the default script (just in case user does not have a custom script 
in the mail directory):

plugin {
   sieve_global_dir = /etc/dovecot/sieve/
   global_script_path = /etc/dovecot/sieve/global-default.script
}


So I send me some certifiable spam from my collection of test spam. This 
is what I got from the log:

Jul 22 14:49:01 mail MailScanner[15047]: New Batch: Scanning 1 messages, 
3206 bytes
Jul 22 14:49:01 mail MailScanner[15047]: SpamAssassin cache hit for 
message C04F79F002F.784A8
Jul 22 14:49:01 mail MailScanner[15047]: Spam Checks: Found 1 spam messages
Jul 22 14:49:02 mail MailScanner[15047]: Virus and Content Scanning: 
Starting
Jul 22 14:49:02 mail MailScanner[15047]: Requeue: C04F79F002F.784A8 to 
304C09F0012
Jul 22 14:49:02 mail postfix/qmgr[14869]: 304C09F0012: 
from=<raubvogel at gmail.com>, size=2518, nrcpt=1 (queue active)
Jul 22 14:49:02 mail MailScanner[15047]: Uninfected: Delivered 1 messages
Jul 22 14:49:02 mail deliver(raub at domain.com): Loading modules from 
directory: /usr/lib/dovecot/lda
Jul 22 14:49:02 mail deliver(raub at domain.com): Module loaded: 
/usr/lib/dovecot/lda/lib90_cmusieve_plugin.so
Jul 22 14:49:02 mail dovecot: auth(default): master in: USER    1 
raub at domain.com service=deliver
Jul 22 14:49:02 mail dovecot: auth(default): master out: USER   1 
raub at domain.com uid=1500        gid=1500 
home=/var/spool/vmail/domain.com/raub
Jul 22 14:49:02 mail deliver(raub at domain.com): auth input: raub at domain.com
Jul 22 14:49:02 mail deliver(raub at domain.com): auth input: uid=1500
Jul 22 14:49:02 mail deliver(raub at domain.com): auth input: gid=1500
Jul 22 14:49:02 mail deliver(raub at domain.com): auth input: 
home=/var/spool/vmail/domain.com/raub
Jul 22 14:49:02 mail deliver(raub at domain.com): maildir: 
data=/var/spool/vmail/domain.com/raub
Jul 22 14:49:02 mail deliver(raub at domain.com): maildir++: 
root=/var/spool/vmail/domain.com/raub, index=, control=, 
inbox=/var/spool/vmail/domain.com/raub
Jul 22 14:49:02 mail deliver(raub at domain.com): cmusieve: 
/var/spool/vmail/domain.com/raub/.dovecot.sieve doesn't exist
Jul 22 14:49:02 mail deliver(raub at domain.com): cmusieve: Using sieve 
path: /etc/dovecot/sieve/global-default.script
Jul 22 14:49:02 mail deliver(raub at domain.com): cmusieve: Executing 
script /etc/dovecot/sieve/global-default.scriptc
Jul 22 14:49:02 mail deliver(raub at domain.com): 
msgid=<000d01ca078a$d13122a0$6400a8c0 at chameleonsh>: saved mail to INBOX
Jul 22 14:49:02 mail postfix/pipe[15137]: 304C09F0012: 
to=<raub at domain.com>, relay=dovecot, delay=3.4, delays=3.3/0/0/0.1, 
dsn=2.0.0, status=sent (delivered via dovecot service)

 From what I gathered, mailscanner saw it was spam and tagged it. When 
the mail got back, postfix gave it to dovecot deliver, which then passed 
to cmusieve. Now, cmusieve saw user did not have a script defined,

Jul 22 14:49:02 mail deliver(raub at domain.com): cmusieve: 
/var/spool/vmail/domain.com/raub/.dovecot.sieve doesn't exist

So, it used the default script as it should,

Jul 22 14:49:02 mail deliver(raub at domain.com): cmusieve: Using sieve 
path: /etc/dovecot/sieve/global-default.script
Jul 22 14:49:02 mail deliver(raub at domain.com): cmusieve: Executing 
script /etc/dovecot/sieve/global-default.scriptc

But, instead of calling the spam script, it simply delivered the spam 
mail to the inbox,

Jul 22 14:49:02 mail deliver(raub at domain.com): 
msgid=<000d01ca078a$d13122a0$6400a8c0 at chameleonsh>: saved mail to INBOX

Why?


More information about the dovecot mailing list