Thinking in source code all is new (no Perl code is included in Wirebrush). The Wirebrush rules are very close to SpamAssassin ones but Wirebrush include some new concepts and ideas in order to improve the performance:
- Multithread rule evaluation: Each rule is executed in a thread. We had implemented a limitation. Two rules invoking functions belonging to the same plugin can not be executed in parallel (due to the usage of shared resources).
- Lazy filter evaluation: Imagine an email getting an extremely high score during the filter evaluation (and there is a lot of rules waiting for execution). If getting a lower puntuation is not possible, why continue on evaluating rules?. This is the main idea behind lazy filter evaluation. Wirebrush includes this concept for too high and too low scores.
- Extensible plugin architecture implemented using C-Pluff plugin framework. Thanks to the people behind C-Pluff.
- Entirely written in C.
- RFC2822 parsers are implemented from scratch as finite-state machines. Parsing a 100K RFC2822 file in less than 3 ms.
- Bayes caching avoiding the computation of bayes probability more than one times.