On 11/06/2021 04:25, Daniel J. Luke wrote:
Hello,

I've recently converted from using procmail as an lda to using lmtp+sieve (and 
it's overall great).

My setup is currently doing post-queue spamassassin to pickup user rules (and 
to be substantially similar to how it worked before). It mostly works, but I 
get some mail forwarded from another host that also runs spamassassin, so the 
mail comes with X-Spam headers already set.

I can see that my sieve_before script successfully sends the message off to 
spamc/spamd - however the message ends up in my mailbox with only the 
pre-existing X-Spam headers (I had expected them to be replaced or to see 
duplicates). I thought I'd try to just strip them from incoming mail so I used 
deleteheader, I got a trace saying it matches and deletes the headers, then 
sends the mail off to spamc/spamd - but the message that ends up in my mailbox 
has the headers that were presumably deleted.

I cannot reproduce this with master. Keep and implicit keep act the same. My filter program successfully changes the message and the deleteheader commands properly drop the indicated headers.

What version is this? What is your configuration (output from `dovecot -n`)



Regards,

Stephan.


My before.sieve looks like this:

require ["vnd.dovecot.filter","editheader"];
# rule:[spamfilter]
if size :under 10485760
{
     deleteheader :matches "X-Spam-Flag" "*";
     deleteheader :matches "X-Spam-Status" "*";
     deleteheader :matches "X-Spam-Level" "*";
     deleteheader :matches "X-Spam-Checker-Version" "*";
filter "spamc" ["-s","10485760","-U","/var/run/spamd.sock"];
}

Trace file says:

       ## Started executing script 'before'
    6: size :under test
    6:   comparing message size 4197
    6:   with lower limit 10485760
    6: jump if result is false
    6:   not jumping
   11: deleteheader command
   11:   deleting matching occurrences of header `X-Spam-Flag'
   11:   header `X-Spam-Flag' not found
   12: deleteheader command
   12:   deleting matching occurrences of header `X-Spam-Status'
   12:     starting `:matches' match with `i;ascii-casemap' comparator:
   12:     matching value `No, score=-0.2 required=5.0 
tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_..
.'
   12:       with key `*' => 1
   12:     deleting header with value `No, score=-0.2 required=5.0 
tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALI
D_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE, 
RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham au
tolearn_force=no version=3.4.2'
   12:     finishing match with result: matched
   13: deleteheader command
   13:   deleting matching occurrences of header `X-Spam-Level'
   13:   header `X-Spam-Level' not found
   14: deleteheader command
   14:   deleting matching occurrences of header `X-Spam-Checker-Version'
   14:     starting `:matches' match with `i;ascii-casemap' comparator:
   14:     matching value `SpamAssassin 3.4.2 (2018-09-13) on 
braeburn.macports.org'
   14:       with key `*' => 1
   14:     deleting header with value `SpamAssassin 3.4.2 (2018-09-13) on 
braeburn.macports.org'
   14:     finishing match with result: matched
   16: filter action
   16:   execute program `spamc'
   16:   executed program successfully
   16:   changed message
       ## Finished executing script 'before'

It then falls through my personal sieve filter and hits the implicit keep at 
the end and ends up in my inbox - with the original headers.

So, two questions:
1. What am I missing?
2. Is there a way to match any X-Spam-* header? (when I tried deleteheader :matches 
"X-Spam*" it didn't match anything).

Thanks.


Reply via email to