Hello Stephan,

First of all, thanks for time you spent implementing this useful extension.

I have found some ugly behavior with such config:

  sieve_extensions = +notify +spamtest
  sieve_spamtest_status_type = score
  sieve_spamtest_status_header = X-Spam-Scan-Score: 
(-?[[:digit:]]+\.[[:digit:]])
  sieve_spamtest_max_value = 10

Sieve:
require 
["fileinto","envelope","imap4flags","spamtest","relational","comparator-i;ascii-numeric"];
# rule:[spam]
if anyof (spamtest :value "ge" :comparator "i;ascii-numeric" "6")
{
        fileinto "Spam";
}

If X-Spam-Scan-Score have 6-9 digit after dot - the first one ignored, thus
X-Spam-Scan-Score: 3.6 -> "ge" skips. #right
X-Spam-Scan-Score: 3.8 -> "ge" works. #wrong
X-Spam-Scan-Score: 5.9 -> "ge" works. #wrong
X-Spam-Scan-Score: 6.0 -> "ge" works. #right
X-Spam-Scan-Score: 6.9 -> "ge" works. #right
X-Spam-Scan-Score: 7.3 -> "ge" works. #right

If the rule modified to (spamtest :value "ge" :comparator "i;ascii-numeric" 
"6.0") everything works as expected.

One more thing - sieve-test. I couldn't test my scripts with it:

 # sieve-test -x +spamtest -t sieve spam.txt 
00000007: SPAMTEST test
00000007: spamtest: extension not configured
00000013: JMPFALSE (false)

Performed actions:

  (none)

Implicit keep:

 * store message in folder: INBOX

Info: final result: success

Reply via email to