Hi list, I have Sieve scripts that unintentionally duplicate e-mails. My dovecot version is 2.3.4.1 (f79e8e7e4), Pigeonhole version 0.5.4 on Linux 5.4.189-2-pve x86_64 Debian 10.13. My scripts get called on an imap COPY action (imapsieve extension). The mail is fed to an external script (spam/ham training) via a pipe :copy action (vnd.dovecot.pipe extension). An header is added to keep track of what happened (editheader extension). I use "if header :contains? for my (simple) logic. If contains header X, do this, add header Y. If contains header Y, do that, add header X. I end each "if? part with keep; and stop; commands. Simple versions of this script, without the if-then construct, seem to work ok. As soon as I try to use if-then-else I find a duplicate of the processed e-mail; one that seems to be untouched, one that appears to have been processed. I hope I?m making myself clear? # without if-then require ? pipe :copy ? addheader ? keep; # with if-then require ? if header :contains pipe :copy ? addheader ? keep; stop; if not exists pipe :copy ? addheader ? keep; stop; keep; The scripts get called from for instance imapsieve_mailbox1_before. Cheers, Ferenc