neat. I found the problematic rule, and haven't a clue the logic behind it. Way way way overly agressively scored.
Indeed the dot is perfectly valid; this is the so-called "root label", which under every (well, every correct) school of thought is representative of an FQDN. This was a huge fight at my last gig (developing mail filtering software), mailing lists were lit up again, the end result was basically - an FQDN, strictly speaking, is an absolute domain name; an absolute domain name, per section 3.1 RFC 1034, terminates with a root label (dot).
When a user needs to type a domain name, the length of each label is
omitted and the labels are separated by dots (".").
Since a complete
domain name ends with the root label, this leads to a printed form which
ends in a dot. We use this property to distinguish between:
- a character string which represents a complete domain name
(often called "absolute"). For example, "poneria.ISI.EDU."
- a character string that represents the starting labels of a
domain name which is incomplete, and should be completed by
local software using knowledge of the local domain (often
called "relative"). For example, "poneria" used in the
ISI.EDU domain.
Anyway...we came to the conclusion the most adaptable implementation was to consider "host.domain.tld", "host.domain.tld." and "domain.tld." to be an FQDN, and although "domain.tld" isn't an FQDN, treat it as such for interoperability.
The problematic rule looks like so:
Code:
X-Spam-Relays-Untrusted =~ /^[^\]]+ helo=[^ ]+\. by=/
So indeed the regex works as designed, but the scoring is way, way, way overly aggressive:
Code:
50_scores.cf:score FH_HELO_ENDS_DOT 3.599 3.020 1.395 2.308
Basing 70% of your determination of spam on something as widely disputed as whether an FQDN should terminate with a dot? No. Methinks scoring 0.5 would be more appropriate, if you decide to score it at all (personally I think the rule should be nuked).
BIG DISCLAIMER: everything below here is unsupported (I think). Modifying spamassassin scoring, and/or creating your own rules is a pandora's box of potentially endless support queries - if you know what you're doing, take all of the below as "theoretical".
Not sure the cPanel-friendly way to do this, but what I'd normally do is something like this in a custom spamassassin rule:
Code:
meta MT_DOTHELO_ADJUST FH_HELO_ENDS_DOT
score MT_DOTHELO_ADJUST -3.0
describe MT_DOTHELO_ADJUST meta scoring adjustment for aggressive HELO rule
adding custom rules is unsupported, etc etc etc - BUT, if you did this, probably the most sane method for applying it globally is creating an include file, and putting the rule in there.
I write heaps of my own rules, and include them as such:
Code:
gentoob0x spamassassin # grep include /etc/mail/spamassassin/local.cf
include /etc/mail/spamassassin/custom/20_header.cf
include /etc/mail/spamassassin/custom/20_body.cf
Obviously /etc/mail/spamassassin/custom is a directory I created, and "20_header.cf" as well "20_body.cf" are rules files I've created. If I wanted to separate out META into their own, I might add a line to local.cf like:
Code:
include /etc/mail/spamassassin/custom/99_meta.cf
and within the aforementioned file put the META (which ends up being a meta scoring adjustment. )
As to the formally recommended way of doing this? Not sure what the tag line is for that, normally this sort of thing ends up popping up on SA's radar over time, and they adjust rules accordingly. If that's the route here, quite literally no interaction required - it will get sorted automagically.