imapsieve wrong matches on APPEND cause

Aki Tuomi aki.tuomi at dovecot.fi
Tue Aug 14 12:17:35 EEST 2018



On 09.08.2018 23:09, Alex Cherevko wrote:
>
> Hello,
>
>  
>
> I’m experiencing some strange problem with imapsieve mailbox rules
> matching.
>
> I have Ubuntu Server 18.04.1 LTS with Postfix 3.3.0, Dovecot 2.2.33.2
> and Rspamd 1.7.9.
>
> The problem occurs with Microsoft Outlook 2016 mail client.
>
> When moving with Outlook, APPEND event is logged instead of MOVE.
>
> However, when moving with another client, MOVE event is logged.
>
>  
>
> So without APPEND event in causes in plugin section of dovecot.conf no
> rule is matched at all.
>
> If I add APPEND event into causes in plugin section of dovecot.conf,
> then for some reason imapsieve matches both rules on move from Inbox
> to Spam and no rules on move from Spam to Inbox.
>
> Matching both rules attempts to run both learn_spam and learn_ham.
> First one works and second logs error (which is correct).
>
> On attempt to move message from Spam to Inbox imapsieve not matching
> any rule at all and thus learning is not working.
>
>  
>
> Could you please let me know how to fix this?
>
>  
>
> More details.
>
> Here is what I have in my plugin section of dovecot.conf:
>
> ---------------------------------------- %<
> ----------------------------------------
>
> plugin {
>
>   imapsieve_mailbox1_before =
> file:/var/vmail/sieve/global/learn-spam.sieve
>
>   imapsieve_mailbox1_causes = COPY APPEND
>
>   imapsieve_mailbox1_from = Inbox
>
>   imapsieve_mailbox1_name = Spam
>
>   imapsieve_mailbox2_before = file:/var/vmail/sieve/global/learn-ham.sieve
>
>   imapsieve_mailbox2_causes = COPY APPEND
>
>   imapsieve_mailbox2_from = Spam
>
>   imapsieve_mailbox2_name = Inbox
>
>   sieve =
> file:/var/vmail/sieve/%d/%n/scripts;active=/var/vmail/sieve/%d/%n/active-script.sieve
>
>   sieve_before = /var/vmail/sieve/global/spam-global.sieve
>
>   sieve_global_dir = /var/vmail/sieve/global/
>
>   sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
> +vnd.dovecot.debug
>
>   sieve_pipe_bin_dir = /usr/bin
>
>   sieve_plugins = sieve_imapsieve sieve_extprograms
>
> }
>
> ---------------------------------------- %<
> ----------------------------------------
>
>  
>
> I also have Trash, Drafts, Sent and Spam mailboxes defined in
> dovecot.conf.
>
> So when I try to move actual spam message from Inbox to Spam folder,
> this is what I see in dovecot.log:
>
> ---------------------------------------- %<
> ----------------------------------------
>
> Debug: imapsieve: mailbox Spam: APPEND event
>
> ---------------------------------------- %<
> ----------------------------------------
>
>  
>
> So before I added “APPEND” into above imapsieve_mailbox1_causes and
> imapsieve_mailbox2_causes imapsieve was not matching rules at all.
>
> But after I added APPEND, here is what happens.
>
> In case I move message from Inbox to Spam both rules are matched and
> dovecot attempts to run both rules:
>
> ---------------------------------------- %<
> ----------------------------------------
>
> Debug: INBOX: Mailbox opened because: SELECT
>
> Debug: Spam: Mailbox opened because: SELECT
>
> Debug: imapsieve: mailbox Spam: APPEND event
>
> Debug: sieve: Pigeonhole version 0.4.21 (92477967) initializing
>
> Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 0.4.21
> (92477967) loaded
>
> Debug: sieve: Sieve Extprograms plugin for Pigeonhole version 0.4.21
> (92477967) loaded
>
> Debug: imapsieve: Static mailbox rule [1]: mailbox=`Spam' from=`*'
> causes=(APPEND) =>
> before=`file:/var/vmail/sieve/global/learn-spam.sieve' after=(none)
>
> Debug: imapsieve: Static mailbox rule [2]: mailbox=`*' from=`Spam'
> causes=(APPEND) =>
> before=`file:/var/vmail/sieve/global/learn-ham.sieve' after=(none)
>
> Debug: imapsieve: Matched static mailbox rule [2]
>
> Debug: imapsieve: Matched static mailbox rule [1]
>
> Debug: sieve: file storage: Using Sieve script path:
> /var/vmail/sieve/global/learn-spam.sieve
>
> Debug: sieve: file script: Opened script `learn-spam' from
> `/var/vmail/sieve/global/learn-spam.sieve'
>
> Debug: sieve: file storage: Using Sieve script path:
> /var/vmail/sieve/global/learn-ham.sieve
>
> Debug: sieve: file script: Opened script `learn-ham' from
> `/var/vmail/sieve/global/learn-ham.sieve'
>
> Debug: sieve: Opening script 1 of 2 from
> `/var/vmail/sieve/global/learn-spam.sieve'
>
> Debug: sieve: Loading script /var/vmail/sieve/global/learn-spam.sieve
>
> Debug: sieve: Script binary /var/vmail/sieve/global/learn-spam.svbin
> successfully loaded
>
> Debug: sieve: binary save: not saving binary
> /var/vmail/sieve/global/learn-spam.svbin, because it is already stored
>
> Debug: sieve: Executing script from
> `/var/vmail/sieve/global/learn-spam.svbin'
>
> Debug: sieve: action pipe: running program: rspamc
>
> Debug: Mailbox Spam: Opened mail UID=12 because: mail stream
>
> Debug: waiting for program `/usr/bin/rspamc' to finish after 0 msecs
>
> Debug: sieve: Opening script 2 of 2 from
> `/var/vmail/sieve/global/learn-ham.sieve'
>
> Debug: sieve: Loading script /var/vmail/sieve/global/learn-ham.sieve
>
> Debug: sieve: Script binary /var/vmail/sieve/global/learn-ham.svbin
> successfully loaded
>
> Debug: sieve: binary save: not saving binary
> /var/vmail/sieve/global/learn-ham.svbin, because it is already stored
>
> Debug: sieve: Executing script from
> `/var/vmail/sieve/global/learn-ham.svbin'
>
> Debug: Spam: Mailbox opened because: lib-lda delivery
>
> Debug: Spam: Mailbox opened because: SELECT
>
> ---------------------------------------- %<
> ----------------------------------------
>
>  
>
> And of course I’m getting the following in the log file:
>
> ---------------------------------------- %<
> ----------------------------------------
>
> Error: sieve: learn-ham: line 2: duplicate pipe "rspamc" action not
> allowed (previously triggered one was here: learn-spam: line 3)
>
> Error: sieve: Execution of script
> /var/vmail/sieve/global/learn-ham.sieve failed
>
> ---------------------------------------- %<
> ----------------------------------------
>
>  
>
> In case I move message from Spam to Inbox on rule is matched at all:
>
> ---------------------------------------- %<
> ----------------------------------------
>
> Debug: INBOX: Mailbox opened because: SELECT
>
> Debug: imapsieve: mailbox INBOX: APPEND event
>
> Debug: sieve: Pigeonhole version 0.4.21 (92477967) initializing
>
> Debug: sieve: Sieve imapsieve plugin for Pigeonhole version 0.4.21
> (92477967) loaded
>
> Debug: sieve: Sieve Extprograms plugin for Pigeonhole version 0.4.21
> (92477967) loaded
>
> Debug: imapsieve: Static mailbox rule [1]: mailbox=`Spam' from=`*'
> causes=(APPEND) =>
> before=`file:/var/vmail/sieve/global/learn-spam.sieve' after=(none)
>
> Debug: imapsieve: Static mailbox rule [2]: mailbox=`*' from=`Spam'
> causes=(APPEND) =>
> before=`file:/var/vmail/sieve/global/learn-ham.sieve' after=(none)
>
> Debug: INBOX: Mailbox opened because: SELECT
>
> ---------------------------------------- %<
> ----------------------------------------
>
>  
>
> With best regards,
>
> Alex
>
>  
>

Hi!

Can you enable mail_log plugin, try again, and send updated logs?

Aki
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dovecot.org/pipermail/dovecot/attachments/20180814/339d1bca/attachment-0001.html>


More information about the dovecot mailing list