Mailing List Archive

svn commit: rev 9803 - in incubator/spamassassin/trunk: lib/Mail/SpamAssassin rules
Author: quinlan
Date: Sun Mar 28 15:05:12 2004
New Revision: 9803

Modified:
incubator/spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm
incubator/spamassassin/trunk/rules/70_testing.cf
Log:
revert combined backhair rules - I'm not really happy with the method
revision SenderBase domain age/volume rules - test per-IP instead of
per-message


Modified: incubator/spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm
==============================================================================
--- incubator/spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm (original)
+++ incubator/spamassassin/trunk/lib/Mail/SpamAssassin/HTML.pm Sun Mar 28 15:05:12 2004
@@ -1008,15 +1008,8 @@
if ($last =~ /\b([^\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]{1,7})\z/s) {
my $start = length($1);
if ($text =~ /^([^\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]{1,7})\b/s) {
- my $end = length($1);
- $self->{html}{backhair} += ($start + $end) / 12;
- }
- }
- if ($last =~ /(?:\b|\s)([^\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]{1,7})\z/s) {
- my $start = length($1);
- if ($text =~ /^([^\s\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]{1,7})(?:\b|\s)/s) {
- my $end = length($1);
- $self->{html}{backhair2} += ($start + $end) / 12;
+ my $backhair = "backhair_" . $start . "_" . length($1);
+ $self->{html}{$backhair}++;
}
}
}

Modified: incubator/spamassassin/trunk/rules/70_testing.cf
==============================================================================
--- incubator/spamassassin/trunk/rules/70_testing.cf (original)
+++ incubator/spamassassin/trunk/rules/70_testing.cf Sun Mar 28 15:05:12 2004
@@ -258,17 +258,55 @@
body T_VIA_GAP_GRA /\bvia.gra\b/i

# backhair - idea from backhair set by Jennifer Wheeler and Adam Lopresto.
-body T_BACKHAIR_0_1 eval:html_range('backhair', '0', '1')
-body T_BACKHAIR_1_2 eval:html_range('backhair', '1', '2')
-body T_BACKHAIR_2_4 eval:html_range('backhair', '2', '4')
-body T_BACKHAIR_4_8 eval:html_range('backhair', '4', '8')
-body T_BACKHAIR_8_X eval:html_range('backhair', '8', 'inf')
-
-body T_BACKHAIR2_0_1 eval:html_range('backhair2', '0', '1')
-body T_BACKHAIR2_1_2 eval:html_range('backhair2', '1', '2')
-body T_BACKHAIR2_2_4 eval:html_range('backhair2', '2', '4')
-body T_BACKHAIR2_4_8 eval:html_range('backhair2', '4', '8')
-body T_BACKHAIR2_8_X eval:html_range('backhair2', '8', 'inf')
+body T_BACKHAIR_1_1 eval:html_test('backhair_1_1')
+body T_BACKHAIR_1_2 eval:html_test('backhair_1_2')
+body T_BACKHAIR_1_3 eval:html_test('backhair_1_3')
+body T_BACKHAIR_1_4 eval:html_test('backhair_1_4')
+body T_BACKHAIR_1_5 eval:html_test('backhair_1_5')
+body T_BACKHAIR_1_6 eval:html_test('backhair_1_6')
+body T_BACKHAIR_1_7 eval:html_test('backhair_1_7')
+body T_BACKHAIR_2_1 eval:html_test('backhair_2_1')
+body T_BACKHAIR_2_2 eval:html_test('backhair_2_2')
+body T_BACKHAIR_2_3 eval:html_test('backhair_2_3')
+body T_BACKHAIR_2_4 eval:html_test('backhair_2_4')
+body T_BACKHAIR_2_5 eval:html_test('backhair_2_5')
+body T_BACKHAIR_2_6 eval:html_test('backhair_2_6')
+body T_BACKHAIR_2_7 eval:html_test('backhair_2_7')
+body T_BACKHAIR_3_1 eval:html_test('backhair_3_1')
+body T_BACKHAIR_3_2 eval:html_test('backhair_3_2')
+body T_BACKHAIR_3_3 eval:html_test('backhair_3_3')
+body T_BACKHAIR_3_4 eval:html_test('backhair_3_4')
+body T_BACKHAIR_3_5 eval:html_test('backhair_3_5')
+body T_BACKHAIR_3_6 eval:html_test('backhair_3_6')
+body T_BACKHAIR_3_7 eval:html_test('backhair_3_7')
+body T_BACKHAIR_4_1 eval:html_test('backhair_4_1')
+body T_BACKHAIR_4_2 eval:html_test('backhair_4_2')
+body T_BACKHAIR_4_3 eval:html_test('backhair_4_3')
+body T_BACKHAIR_4_4 eval:html_test('backhair_4_4')
+body T_BACKHAIR_4_5 eval:html_test('backhair_4_5')
+body T_BACKHAIR_4_6 eval:html_test('backhair_4_6')
+body T_BACKHAIR_4_7 eval:html_test('backhair_4_7')
+body T_BACKHAIR_5_1 eval:html_test('backhair_5_1')
+body T_BACKHAIR_5_2 eval:html_test('backhair_5_2')
+body T_BACKHAIR_5_3 eval:html_test('backhair_5_3')
+body T_BACKHAIR_5_4 eval:html_test('backhair_5_4')
+body T_BACKHAIR_5_5 eval:html_test('backhair_5_5')
+body T_BACKHAIR_5_6 eval:html_test('backhair_5_6')
+body T_BACKHAIR_5_7 eval:html_test('backhair_5_7')
+body T_BACKHAIR_6_1 eval:html_test('backhair_6_1')
+body T_BACKHAIR_6_2 eval:html_test('backhair_6_2')
+body T_BACKHAIR_6_3 eval:html_test('backhair_6_3')
+body T_BACKHAIR_6_4 eval:html_test('backhair_6_4')
+body T_BACKHAIR_6_5 eval:html_test('backhair_6_5')
+body T_BACKHAIR_6_6 eval:html_test('backhair_6_6')
+body T_BACKHAIR_6_7 eval:html_test('backhair_6_7')
+body T_BACKHAIR_7_1 eval:html_test('backhair_7_1')
+body T_BACKHAIR_7_2 eval:html_test('backhair_7_2')
+body T_BACKHAIR_7_3 eval:html_test('backhair_7_3')
+body T_BACKHAIR_7_4 eval:html_test('backhair_7_4')
+body T_BACKHAIR_7_5 eval:html_test('backhair_7_5')
+body T_BACKHAIR_7_6 eval:html_test('backhair_7_6')
+body T_BACKHAIR_7_7 eval:html_test('backhair_7_7')

# spams that are assembled from a Javascript array
# look for the XOR op
@@ -321,115 +359,131 @@
# some SenderBase tests
header __SENDERBASE eval:check_rbl_txt('senderbase', 'sa.senderbase.org.')

-header T_SENDERBASE_AGE_10 eval:check_rbl_sub('senderbase', 'time - S25 < 10 * 86400')
-header T_SENDERBASE_AGE_20 eval:check_rbl_sub('senderbase', 'time - S25 < 20 * 86400')
-header T_SENDERBASE_AGE_30 eval:check_rbl_sub('senderbase', 'time - S25 < 30 * 86400')
-header T_SENDERBASE_AGE_40 eval:check_rbl_sub('senderbase', 'time - S25 < 40 * 86400')
-header T_SENDERBASE_AGE_50 eval:check_rbl_sub('senderbase', 'time - S25 < 50 * 86400')
-header T_SENDERBASE_AGE_60 eval:check_rbl_sub('senderbase', 'time - S25 < 60 * 86400')
-header T_SENDERBASE_AGE_70 eval:check_rbl_sub('senderbase', 'time - S25 < 70 * 86400')
-header T_SENDERBASE_AGE_80 eval:check_rbl_sub('senderbase', 'time - S25 < 80 * 86400')
-header T_SENDERBASE_AGE_90 eval:check_rbl_sub('senderbase', 'time - S25 < 90 * 86400')
-
-# domain daily volume
-header T_SENDERBASE_23_5_8 eval:check_rbl_sub('senderbase', 'S23 > 5.8')
-header T_SENDERBASE_23_6_0 eval:check_rbl_sub('senderbase', 'S23 > 6.0')
-header T_SENDERBASE_23_6_2 eval:check_rbl_sub('senderbase', 'S23 > 6.2')
-header T_SENDERBASE_23_6_4 eval:check_rbl_sub('senderbase', 'S23 > 6.4')
-header T_SENDERBASE_23_6_6 eval:check_rbl_sub('senderbase', 'S23 > 6.6')
-header T_SENDERBASE_23_6_8 eval:check_rbl_sub('senderbase', 'S23 > 6.8')
-header T_SENDERBASE_23_7_0 eval:check_rbl_sub('senderbase', 'S23 > 7.0')
-header T_SENDERBASE_23_7_2 eval:check_rbl_sub('senderbase', 'S23 > 7.2')
-header T_SENDERBASE_23_7_4 eval:check_rbl_sub('senderbase', 'S23 > 7.4')
-header T_SENDERBASE_23_7_6 eval:check_rbl_sub('senderbase', 'S23 > 7.6')
-
-meta T_SB_23_5_8_AGE_10 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_10
-meta T_SB_23_5_8_AGE_20 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_20
-meta T_SB_23_5_8_AGE_30 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_30
-meta T_SB_23_5_8_AGE_40 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_40
-meta T_SB_23_5_8_AGE_50 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_50
-meta T_SB_23_5_8_AGE_60 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_60
-meta T_SB_23_5_8_AGE_70 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_70
-meta T_SB_23_5_8_AGE_80 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_80
-meta T_SB_23_5_8_AGE_90 T_SENDERBASE_23_5_8 && T_SENDERBASE_AGE_90
-meta T_SB_23_6_0_AGE_10 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_10
-meta T_SB_23_6_0_AGE_20 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_20
-meta T_SB_23_6_0_AGE_30 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_30
-meta T_SB_23_6_0_AGE_40 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_40
-meta T_SB_23_6_0_AGE_50 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_50
-meta T_SB_23_6_0_AGE_60 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_60
-meta T_SB_23_6_0_AGE_70 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_70
-meta T_SB_23_6_0_AGE_80 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_80
-meta T_SB_23_6_0_AGE_90 T_SENDERBASE_23_6_0 && T_SENDERBASE_AGE_90
-meta T_SB_23_6_2_AGE_10 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_10
-meta T_SB_23_6_2_AGE_20 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_20
-meta T_SB_23_6_2_AGE_30 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_30
-meta T_SB_23_6_2_AGE_40 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_40
-meta T_SB_23_6_2_AGE_50 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_50
-meta T_SB_23_6_2_AGE_60 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_60
-meta T_SB_23_6_2_AGE_70 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_70
-meta T_SB_23_6_2_AGE_80 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_80
-meta T_SB_23_6_2_AGE_90 T_SENDERBASE_23_6_2 && T_SENDERBASE_AGE_90
-meta T_SB_23_6_4_AGE_10 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_10
-meta T_SB_23_6_4_AGE_20 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_20
-meta T_SB_23_6_4_AGE_30 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_30
-meta T_SB_23_6_4_AGE_40 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_40
-meta T_SB_23_6_4_AGE_50 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_50
-meta T_SB_23_6_4_AGE_60 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_60
-meta T_SB_23_6_4_AGE_70 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_70
-meta T_SB_23_6_4_AGE_80 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_80
-meta T_SB_23_6_4_AGE_90 T_SENDERBASE_23_6_4 && T_SENDERBASE_AGE_90
-meta T_SB_23_6_6_AGE_10 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_10
-meta T_SB_23_6_6_AGE_20 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_20
-meta T_SB_23_6_6_AGE_30 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_30
-meta T_SB_23_6_6_AGE_40 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_40
-meta T_SB_23_6_6_AGE_50 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_50
-meta T_SB_23_6_6_AGE_60 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_60
-meta T_SB_23_6_6_AGE_70 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_70
-meta T_SB_23_6_6_AGE_80 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_80
-meta T_SB_23_6_6_AGE_90 T_SENDERBASE_23_6_6 && T_SENDERBASE_AGE_90
-meta T_SB_23_6_8_AGE_10 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_10
-meta T_SB_23_6_8_AGE_20 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_20
-meta T_SB_23_6_8_AGE_30 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_30
-meta T_SB_23_6_8_AGE_40 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_40
-meta T_SB_23_6_8_AGE_50 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_50
-meta T_SB_23_6_8_AGE_60 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_60
-meta T_SB_23_6_8_AGE_70 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_70
-meta T_SB_23_6_8_AGE_80 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_80
-meta T_SB_23_6_8_AGE_90 T_SENDERBASE_23_6_8 && T_SENDERBASE_AGE_90
-meta T_SB_23_7_0_AGE_10 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_10
-meta T_SB_23_7_0_AGE_20 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_20
-meta T_SB_23_7_0_AGE_30 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_30
-meta T_SB_23_7_0_AGE_40 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_40
-meta T_SB_23_7_0_AGE_50 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_50
-meta T_SB_23_7_0_AGE_60 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_60
-meta T_SB_23_7_0_AGE_70 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_70
-meta T_SB_23_7_0_AGE_80 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_80
-meta T_SB_23_7_0_AGE_90 T_SENDERBASE_23_7_0 && T_SENDERBASE_AGE_90
-meta T_SB_23_7_2_AGE_10 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_10
-meta T_SB_23_7_2_AGE_20 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_20
-meta T_SB_23_7_2_AGE_30 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_30
-meta T_SB_23_7_2_AGE_40 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_40
-meta T_SB_23_7_2_AGE_50 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_50
-meta T_SB_23_7_2_AGE_60 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_60
-meta T_SB_23_7_2_AGE_70 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_70
-meta T_SB_23_7_2_AGE_80 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_80
-meta T_SB_23_7_2_AGE_90 T_SENDERBASE_23_7_2 && T_SENDERBASE_AGE_90
-meta T_SB_23_7_4_AGE_10 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_10
-meta T_SB_23_7_4_AGE_20 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_20
-meta T_SB_23_7_4_AGE_30 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_30
-meta T_SB_23_7_4_AGE_40 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_40
-meta T_SB_23_7_4_AGE_50 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_50
-meta T_SB_23_7_4_AGE_60 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_60
-meta T_SB_23_7_4_AGE_70 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_70
-meta T_SB_23_7_4_AGE_80 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_80
-meta T_SB_23_7_4_AGE_90 T_SENDERBASE_23_7_4 && T_SENDERBASE_AGE_90
-meta T_SB_23_7_6_AGE_10 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_10
-meta T_SB_23_7_6_AGE_20 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_20
-meta T_SB_23_7_6_AGE_30 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_30
-meta T_SB_23_7_6_AGE_40 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_40
-meta T_SB_23_7_6_AGE_50 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_50
-meta T_SB_23_7_6_AGE_60 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_60
-meta T_SB_23_7_6_AGE_70 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_70
-meta T_SB_23_7_6_AGE_80 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_80
-meta T_SB_23_7_6_AGE_90 T_SENDERBASE_23_7_6 && T_SENDERBASE_AGE_90
+# S23 = domain daily magnitude
+# S25 = date of first message from this domain
+header T_SB_23_5_0_25_10 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 10*86400)')
+header T_SB_23_5_0_25_20 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 20*86400)')
+header T_SB_23_5_0_25_30 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 30*86400)')
+header T_SB_23_5_0_25_40 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 40*86400)')
+header T_SB_23_5_0_25_50 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 50*86400)')
+header T_SB_23_5_0_25_60 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 60*86400)')
+header T_SB_23_5_0_25_90 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 90*86400)')
+header T_SB_23_5_0_25_120 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 120*86400)')
+header T_SB_23_5_0_25_180 eval:check_rbl_sub('senderbase', 'S23 > 5.0 && (time - S25 < 180*86400)')
+header T_SB_23_5_2_25_10 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 10*86400)')
+header T_SB_23_5_2_25_20 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 20*86400)')
+header T_SB_23_5_2_25_30 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 30*86400)')
+header T_SB_23_5_2_25_40 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 40*86400)')
+header T_SB_23_5_2_25_50 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 50*86400)')
+header T_SB_23_5_2_25_60 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 60*86400)')
+header T_SB_23_5_2_25_90 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 90*86400)')
+header T_SB_23_5_2_25_120 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 120*86400)')
+header T_SB_23_5_2_25_180 eval:check_rbl_sub('senderbase', 'S23 > 5.2 && (time - S25 < 180*86400)')
+header T_SB_23_5_4_25_10 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 10*86400)')
+header T_SB_23_5_4_25_20 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 20*86400)')
+header T_SB_23_5_4_25_30 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 30*86400)')
+header T_SB_23_5_4_25_40 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 40*86400)')
+header T_SB_23_5_4_25_50 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 50*86400)')
+header T_SB_23_5_4_25_60 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 60*86400)')
+header T_SB_23_5_4_25_90 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 90*86400)')
+header T_SB_23_5_4_25_120 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 120*86400)')
+header T_SB_23_5_4_25_180 eval:check_rbl_sub('senderbase', 'S23 > 5.4 && (time - S25 < 180*86400)')
+header T_SB_23_5_6_25_10 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 10*86400)')
+header T_SB_23_5_6_25_20 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 20*86400)')
+header T_SB_23_5_6_25_30 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 30*86400)')
+header T_SB_23_5_6_25_40 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 40*86400)')
+header T_SB_23_5_6_25_50 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 50*86400)')
+header T_SB_23_5_6_25_60 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 60*86400)')
+header T_SB_23_5_6_25_90 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 90*86400)')
+header T_SB_23_5_6_25_120 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 120*86400)')
+header T_SB_23_5_6_25_180 eval:check_rbl_sub('senderbase', 'S23 > 5.6 && (time - S25 < 180*86400)')
+header T_SB_23_5_8_25_10 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 10*86400)')
+header T_SB_23_5_8_25_20 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 20*86400)')
+header T_SB_23_5_8_25_30 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 30*86400)')
+header T_SB_23_5_8_25_40 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 40*86400)')
+header T_SB_23_5_8_25_50 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 50*86400)')
+header T_SB_23_5_8_25_60 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 60*86400)')
+header T_SB_23_5_8_25_90 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 90*86400)')
+header T_SB_23_5_8_25_120 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 120*86400)')
+header T_SB_23_5_8_25_180 eval:check_rbl_sub('senderbase', 'S23 > 5.8 && (time - S25 < 180*86400)')
+header T_SB_23_6_0_25_10 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 10*86400)')
+header T_SB_23_6_0_25_20 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 20*86400)')
+header T_SB_23_6_0_25_30 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 30*86400)')
+header T_SB_23_6_0_25_40 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 40*86400)')
+header T_SB_23_6_0_25_50 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 50*86400)')
+header T_SB_23_6_0_25_60 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 60*86400)')
+header T_SB_23_6_0_25_90 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 90*86400)')
+header T_SB_23_6_0_25_120 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 120*86400)')
+header T_SB_23_6_0_25_180 eval:check_rbl_sub('senderbase', 'S23 > 6.0 && (time - S25 < 180*86400)')
+header T_SB_23_6_2_25_10 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 10*86400)')
+header T_SB_23_6_2_25_20 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 20*86400)')
+header T_SB_23_6_2_25_30 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 30*86400)')
+header T_SB_23_6_2_25_40 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 40*86400)')
+header T_SB_23_6_2_25_50 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 50*86400)')
+header T_SB_23_6_2_25_60 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 60*86400)')
+header T_SB_23_6_2_25_90 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 90*86400)')
+header T_SB_23_6_2_25_120 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 120*86400)')
+header T_SB_23_6_2_25_180 eval:check_rbl_sub('senderbase', 'S23 > 6.2 && (time - S25 < 180*86400)')
+header T_SB_23_6_4_25_10 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 10*86400)')
+header T_SB_23_6_4_25_20 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 20*86400)')
+header T_SB_23_6_4_25_30 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 30*86400)')
+header T_SB_23_6_4_25_40 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 40*86400)')
+header T_SB_23_6_4_25_50 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 50*86400)')
+header T_SB_23_6_4_25_60 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 60*86400)')
+header T_SB_23_6_4_25_90 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 90*86400)')
+header T_SB_23_6_4_25_120 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 120*86400)')
+header T_SB_23_6_4_25_180 eval:check_rbl_sub('senderbase', 'S23 > 6.4 && (time - S25 < 180*86400)')
+header T_SB_23_6_6_25_10 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 10*86400)')
+header T_SB_23_6_6_25_20 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 20*86400)')
+header T_SB_23_6_6_25_30 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 30*86400)')
+header T_SB_23_6_6_25_40 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 40*86400)')
+header T_SB_23_6_6_25_50 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 50*86400)')
+header T_SB_23_6_6_25_60 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 60*86400)')
+header T_SB_23_6_6_25_90 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 90*86400)')
+header T_SB_23_6_6_25_120 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 120*86400)')
+header T_SB_23_6_6_25_180 eval:check_rbl_sub('senderbase', 'S23 > 6.6 && (time - S25 < 180*86400)')
+header T_SB_23_6_8_25_10 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 10*86400)')
+header T_SB_23_6_8_25_20 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 20*86400)')
+header T_SB_23_6_8_25_30 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 30*86400)')
+header T_SB_23_6_8_25_40 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 40*86400)')
+header T_SB_23_6_8_25_50 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 50*86400)')
+header T_SB_23_6_8_25_60 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 60*86400)')
+header T_SB_23_6_8_25_90 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 90*86400)')
+header T_SB_23_6_8_25_120 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 120*86400)')
+header T_SB_23_6_8_25_180 eval:check_rbl_sub('senderbase', 'S23 > 6.8 && (time - S25 < 180*86400)')
+header T_SB_23_7_0_25_10 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 10*86400)')
+header T_SB_23_7_0_25_20 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 20*86400)')
+header T_SB_23_7_0_25_30 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 30*86400)')
+header T_SB_23_7_0_25_40 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 40*86400)')
+header T_SB_23_7_0_25_50 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 50*86400)')
+header T_SB_23_7_0_25_60 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 60*86400)')
+header T_SB_23_7_0_25_90 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 90*86400)')
+header T_SB_23_7_0_25_120 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 120*86400)')
+header T_SB_23_7_0_25_180 eval:check_rbl_sub('senderbase', 'S23 > 7.0 && (time - S25 < 180*86400)')
+header T_SB_23_7_2_25_10 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 10*86400)')
+header T_SB_23_7_2_25_20 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 20*86400)')
+header T_SB_23_7_2_25_30 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 30*86400)')
+header T_SB_23_7_2_25_40 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 40*86400)')
+header T_SB_23_7_2_25_50 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 50*86400)')
+header T_SB_23_7_2_25_60 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 60*86400)')
+header T_SB_23_7_2_25_90 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 90*86400)')
+header T_SB_23_7_2_25_120 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 120*86400)')
+header T_SB_23_7_2_25_180 eval:check_rbl_sub('senderbase', 'S23 > 7.2 && (time - S25 < 180*86400)')
+header T_SB_23_7_4_25_10 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 10*86400)')
+header T_SB_23_7_4_25_20 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 20*86400)')
+header T_SB_23_7_4_25_30 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 30*86400)')
+header T_SB_23_7_4_25_40 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 40*86400)')
+header T_SB_23_7_4_25_50 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 50*86400)')
+header T_SB_23_7_4_25_60 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 60*86400)')
+header T_SB_23_7_4_25_90 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 90*86400)')
+header T_SB_23_7_4_25_120 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 120*86400)')
+header T_SB_23_7_4_25_180 eval:check_rbl_sub('senderbase', 'S23 > 7.4 && (time - S25 < 180*86400)')
+header T_SB_23_7_6_25_10 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 10*86400)')
+header T_SB_23_7_6_25_20 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 20*86400)')
+header T_SB_23_7_6_25_30 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 30*86400)')
+header T_SB_23_7_6_25_40 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 40*86400)')
+header T_SB_23_7_6_25_50 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 50*86400)')
+header T_SB_23_7_6_25_60 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 60*86400)')
+header T_SB_23_7_6_25_90 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 90*86400)')
+header T_SB_23_7_6_25_120 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 120*86400)')
+header T_SB_23_7_6_25_180 eval:check_rbl_sub('senderbase', 'S23 > 7.6 && (time - S25 < 180*86400)')