On 2025-03-10 at 11:42:16 UTC-0400 (Mon, 10 Mar 2025 16:42:16 +0100)
Rainer Sokoll via users <[email protected]>
is rumored to have said:
> Hi,
>
> SpamAssassin version 4.0.0
> running on Perl version 5.36.0
>
> Debian 12 (bookworm)
>
> I’m pulling my hair out.
> A simple mail containing
>
> ------[snip]-----
> teststring
> some random text
> ------[snap]-----
>
> and a rule in local.cf:
> body TESTRULE /teststring$/
> score TESTRULE 5.0
>
> does NOT match when testing with spamassassin -t
Because 'body' rules match against a pre-processed form of the message, as
documented ('perldoc Mail::SpamAssassin::Conf'):
All body paragraphs (double-newline-separated blocks text) are
turned into a linebreaks-removed, whitespace-normalized, single
line. Any lines longer than 2kB are split into shorter separate
lines (from a boundary when possible), this may unexpectedly prevent
pattern from matching. Patterns are matched independently against
each of these lines.
Note that by default the message Subject header is considered part
of the body and becomes the first line when running the rules. If
you don't want to match Subject along with body text, use "tflags
RULENAME nosubject".
The effect of this preprocessing is that to match line endings that are not
"paragraph" endings (i.e. 2 newlines) you need to use 'rawbody' or 'full'
instead. The details of those message forms are also included in the perldoc
(which your system may have rendered to a man page)
--
Bill Cole