Ugh.. I remember several bugs related to this and your version is ancient. I 
suggest you try to upgrade.

On 20-12-2022 00:18, Ferenc wrote:
Hi list,

I’m trying this again from a different account because of lots of SPF warnings.

I have Sieve scripts that duplicate e-mails. I don’t want that. 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 or retraining) 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 the scripts, without the if-then construct, seem to work ok 
with imapsieve. As soon as I try to use if-then-else I find a duplicate of the 
processed e-mail; the original mail seems to be untouched, the duplicate 
appears to have been processed. With macos mail not all duplicates show up but 
with Roundcube webmail I can see them all.

The scripts are like this:

# 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 “imapsieve_mailbox1_before” for example.

Cheers,
Ferenc

Reply via email to