svn commit: r1934996 - in spamassassin/trunk: lib/Mail/SpamAssassin/Plugin rules
[email protected] Fri, 05 Jun 2026 08:08:11 -0000
| Newsgroups | gmane.mail.spam.spamassassin.cvs |
|---|---|
| Message-ID | <178064689185.3006145.9608756579886993713@svn03-he-fi> |
Author: gbechis
Date: Fri Jun 5 08:08:11 2026
New Revision: 1934996
Log:
bare CR or LF are illegal; only \r\n followed by a space is valid folding
Modified:
spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm
spamassassin/trunk/rules/20_head_tests.cf
Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm Fri Jun 5 08:02:50 2026 (r1934995)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm Fri Jun 5 08:08:11 2026 (r1934996)
@@ -197,6 +197,10 @@ sub check_illegal_chars {
# (non-ASCII + C0 controls except TAB, NL, CR)
my $illegal = $str =~ tr/\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff//;
+ # bare CR or LF are illegal; only \r\n followed by a space is valid folding
+ (my $str_nofold = $str) =~ s/\r\n[ \t]//g;
+ $illegal += $str_nofold =~ tr/\x0a\x0d//;
+
# minor exemptions for Subject
if ($illegal > 0 && lc $header eq "subject:raw") {
# only exempt a single cent sign, pound sign, or registered sign
Modified: spamassassin/trunk/rules/20_head_tests.cf
==============================================================================
--- spamassassin/trunk/rules/20_head_tests.cf Fri Jun 5 08:02:50 2026 (r1934995)
+++ spamassassin/trunk/rules/20_head_tests.cf Fri Jun 5 08:08:11 2026 (r1934996)
@@ -466,8 +466,9 @@ if (version >= 4.000000)
header __SUBJ_ILLEGAL_CHARS eval:check_illegal_chars('Subject','0.00','2')
meta SUBJ_ILLEGAL_CHARS (__SUBJ_ILLEGAL_CHARS && !__FROM_YAHOO_COM)
header FROM_ILLEGAL_CHARS eval:check_illegal_chars('From','0.20','2')
+ header REPLYTO_ILLEGAL_CHARS eval:check_illegal_chars('Reply-To','0.020','2')
header __HEAD_ILLEGAL_CHARS eval:check_illegal_chars('ALL','0.010','2')
- meta HEAD_ILLEGAL_CHARS __HEAD_ILLEGAL_CHARS && !__SUBJ_ILLEGAL_CHARS && !FROM_ILLEGAL_CHARS
+ meta HEAD_ILLEGAL_CHARS __HEAD_ILLEGAL_CHARS && !__SUBJ_ILLEGAL_CHARS && !FROM_ILLEGAL_CHARS && !REPLYTO_ILLEGAL_CHARS
endif
if (version < 4.000000)
meta __SUBJ_ILLEGAL_CHARS 0