also sprach Stephan Bosch <stephan@rename-it.nl> [2013-12-28 08:31 +1300]:
This configuration is incomplete. Your logs should show an error about that. Testing with sieve-test shows:
Oh, thank you for introducing me to sieve-test, somehow I have missed that. Sorry!
And thank you also for your quick reply!
Unfortunately, the problem remains, and sieve-test is not as helpful as I had hoped. My script is attached, as well as the wrapper I use for spamc.
Here is the output generated by sieve-test. The spam message is bare and does *not* contain the wanted headers, because those are added by vnd.dovecot.filter invoking spamc:
% sieve-test -D -t- -Tlevel=matching -x +spamtest /tmp/spam.sieve /tmp/spam.msg sieve-test(madduck): Debug: sieve: include: sieve_global_dir is not set; it is currently not possible to include `:global' scripts. sieve-test(madduck): Debug: sieve: Pigeonhole Sieve Extprograms plugin version 0.1.0 loaded debug: script binary /tmp/spam.svbin successfully loaded. debug: binary save: not saving binary /tmp/spam.svbin, because it is already stored.
## Started executing script 'spam'
6: filter action
6: execute program `spamc'
debug: filter action: piping message to program: spamc.
debug: filter action: running program: spamc.
debug: filter action: piping data to forked program /etc/dovecot/sieve-filter/spamc'. 6: executed program successfully 6: changed message 8: header test 8: starting
:contains' match with i;ascii-casemap' comparator: 8: extracting
X-Spam-Status' headers from message
8: matching value Yes, score=66.5/5.0 tests=ADVANCE_FEE_2_NEW_FORM, ADVANCE_FEE_2_NEW_FRM_MNY,A...' 8: with key
score' => 1
8: finishing match with result: matched
8: jump if result is false
8: not jumping
9: debug_log "X-Spam-Score header present and contains 'score'"
spam: line 9: info: DEBUG: X-Spam-Score header present and contains 'score'.
12: spamtest test [percent=false]
12: spamtest: header 'X-Spam-Status' not found in message
12: starting :value-eq' match with
i;ascii-numeric' comparator:
12: matching value 0' 12: with key
0' => 1
12: finishing match with result: matched
12: jump if result is false
12: not jumping
13: debug_log "spamtest found no match!"
spam: line 13: info: DEBUG: spamtest found no match!.
13: jumping to line 51
## Finished executing script 'spam'
Performed actions:
(none)
Implicit keep:
- store message in folder: INBOX sieve-test(madduck): Info: final result: success
So, as I had suspected in the original message, spamtest seems to look at the original message, not the one returned from the vnd.dovecot.filter. The regular sieve header match, however, *does* consult the filtered output.
So I think that in addition to the clarification about regular vs. extended expressions in the docs, this is also a bug in need of fixing…
… or am I still doing something wrong?
-- martin | http://madduck.net/ | http://two.sentenc.es/
"a man's very highest moment is, i have no doubt at all, when he kneels in the dust, and beats his breast, and tells all the sins of his life." -- oscar wilde
spamtraps: madduck.bogus@madduck.net