[Dovecot] sieve rules processing

Stephan Bosch stephan at rename-it.nl
Thu Jul 30 11:38:51 EEST 2009


Nikita Koshikov schreef:
> On Thu, 30 Jul 2009 01:29:26 +0200
> Stephan Bosch <stephan at rename-it.nl> wrote:
>> I am not exactly sure what you mean. Why are you providing an explicit 
>> keep command when you want to sort the message further? 
> Without keep action - mail just redirected to specified mailbox, but it doesn't stores into my inbox.
[..]
> This is my current rule list:
> 
> require ["fileinto","envelope","copy"];
> # rule:[redirect]
> if anyof (true)
> {
>     redirect :copy "alice at domain.com";
> }
> # rule:[Cron]
> elsif anyof (header :contains "Subject" "Cron")
> {
>     fileinto "INBOX/Cron";
> }
>  
[..]
> But this mail save into INBOX, for user koshikov.n at domain.com, (the second rule is not working), in logs I have:
> Jul 30 10:29:04 deliver(koshikov.n at domain.com): Info: sieve: msgid=<4A714B09.9030704 at domain.com>: forwarded to <alice at domain.com>
> Jul 30 10:29:04 deliver(koshikov.n at domain.com): Info: sieve: msgid=<4A714B09.9030704 at domain.com>: stored mail into mailbox 'INBOX'
> Jul 30 10:29:04 deliver(alice at domain.com): Info: sieve: msgid=<4A714B09.9030704 at domain.com>: stored mail into mailbox 'INBOX'
> 
> So :copy acting for me like "keep". Do you have any ideas, why this might happen ?

Yes, your second rule is an elsif, meaning that it is only executed when 
the first if-condition is not 'true'. Since that first rule has a forced 
'true' result, the second rule is absolutely never executed. You script 
should be:

require ["fileinto","copy"];

# rule:[redirect]
if true
{
   redirect :copy "alice at domain.com";
}

# rule:[Cron]
if header :contains "Subject" "Cron"
{
   fileinto "INBOX/Cron";
}

Note that the anyof() commands are only necessary when you have multiple 
tests per if command. Also, I removed the envelope require, since it is 
not used.

Regards,

-- 
Stephan Bosch
stephan at rename-it.nl


More information about the dovecot mailing list