For our first rule, let’s start with the simplest type of rules, the basic “body” rule. These rules search the body of the message with a regular expression and if it matches, the corresponding score is assigned. Body rules also include the Subject as the first line of the body content. See [DumpTextPlugin]
Let’s look at a really basic fictitious rule:
body LOCAL_DEMONSTRATION_RULE /test/ score LOCAL_DEMONSTRATION_RULE 0.1 describe LOCAL_DEMONSTRATION_RULE This is a simple test rule
This rule does a simple case-sensitive search of the body of the email for the string “test” and adds a 0.1 to the score of the email if it finds it. Now, this rule is pretty simple as rules go. It will match “test” but also “testing” and “attest”. The describe statement contains the text which will be placed into the verbose report, if verbose reports are used (this is the default setting for the body, in Spamassassin version 2.5x and upwards).
In regular expressions a \b can be used to indicate where a word-break (anything that isn’t an alphanumeric character or underscore) must exist for a match. Our rule above can be made to not match “testing” or “attest” like so:
body LOCAL_DEMONSTRATION_RULE /\btest\b/
The rule can also be made case-insensitive by adding an i to the end, like this:
body LOCAL_DEMONSTRATION_RULE /\btest\b/i score LOCAL_DEMONSTRATION_RULE 0.1
Now the rule will match any combination of upper or lower case that spells “test” surrounded by word breaks of some form.