You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by pa...@apache.org on 2006/10/29 02:59:37 UTC

svn commit: r468796 [2/2] - in /spamassassin/branches/check_plugin: ./ build/ build/automc/ debian/ lib/ lib/Mail/SpamAssassin/ lib/Mail/SpamAssassin/Bayes/ lib/Mail/SpamAssassin/BayesStore/ lib/Mail/SpamAssassin/Conf/ lib/Mail/SpamAssassin/Message/ li...

Modified: spamassassin/branches/check_plugin/rules/20_html_tests.cf
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/rules/20_html_tests.cf?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/rules/20_html_tests.cf (original)
+++ spamassassin/branches/check_plugin/rules/20_html_tests.cf Sat Oct 28 17:59:34 2006
@@ -36,14 +36,10 @@
 describe HTML_SHORT_LINK_IMG_2	HTML is very short with a linked image
 describe HTML_SHORT_LINK_IMG_3	HTML is very short with a linked image
 
-meta HTML_SHORT_COMMENT		(__HTML_LENGTH_512 && __COMMENT_EXISTS)
-describe HTML_SHORT_COMMENT	HTML is very short with HTML comments
 
 meta HTML_SHORT_CENTER		(__HTML_LENGTH_384 && __TAG_EXISTS_CENTER)
 describe HTML_SHORT_CENTER	HTML is very short with CENTER tag
 
-meta HTML_TITLE_LONG		__HTML_TITLE_120 && !__MIME_ATTACHMENT
-describe HTML_TITLE_LONG	HTML title is very long
 
 meta HTML_TITLE_SUBJ_DIFF	__HTML_TITLE_SUBJ_DIFF && !__MIME_ATTACHMENT
 
@@ -75,23 +71,11 @@
 meta JS_FROMCHARCODE            (__JS_FROMCHARCODE && __JS_DOCWRITE)
 describe JS_FROMCHARCODE        Document is built from a Javascript charcode array
 
-# A-Z, a-z, 0-9
-rawbody ENTITY_DEC_ALPHANUM	/\&\#0*(?:4[89]|5[0-7]|6[5-9][78]\d|9[0789]|1[01]\d|12[012])\;/
-describe ENTITY_DEC_ALPHANUM	HTML contains needlessly encoded characters
-
-# ! $ % ' ( ) , - . / : ; = ? @ _
 # a good possible rule that may resurface
+# ! $ % ' ( ) , - . / : ; = ? @ _
 #rawbody ENTITY_DEC_OTHER	/\&\#0*(?:3[3679]|4[014567]|5[89]|6[134]|95)\;/
 #describe ENTITY_DEC_OTHER	HTML contains needlessly encoded punctuation
 
-# thanks to Bob Menschel for this one; bug 4116
-rawbody   HTML_EHTML2         m'</html></html>'i
-describe  HTML_EHTML2         HTML has doubled end HTML tag
-
-# bug 3070
-rawbody HTML_TINY_FONT	/\<.*font\-size\:[ \"]*[01][^0-9]+.*\>/i
-describe HTML_TINY_FONT	body contains 1 or 0-point font
-
 body __HIGHBITS                     /(?:[\x80-\xff].?){4}/
 # note: __HIGHBITS is used by HTML_CHARSET_FARAWAY
 
@@ -103,48 +87,6 @@
 body HTML_MESSAGE		eval:html_test('html')
 describe HTML_MESSAGE		HTML included in message
 
-# the HTML percentage range
-# should really be converted into a numeric function test
-body HTML_00_10			eval:html_range('ratio','0.00','0.10')
-body HTML_10_20			eval:html_range('ratio','0.10','0.20')
-body HTML_20_30			eval:html_range('ratio','0.20','0.30')
-body HTML_30_40			eval:html_range('ratio','0.30','0.40')
-body HTML_40_50			eval:html_range('ratio','0.40','0.50')
-body HTML_50_60			eval:html_range('ratio','0.50','0.60')
-body HTML_60_70			eval:html_range('ratio','0.60','0.70')
-body HTML_70_80			eval:html_range('ratio','0.70','0.80')
-body HTML_80_90			eval:html_range('ratio','0.80','0.90')
-body HTML_90_100		eval:html_range('ratio','0.90','1.00')
-describe HTML_00_10		Message is 0% to 10% HTML
-describe HTML_10_20		Message is 10% to 20% HTML
-describe HTML_20_30		Message is 20% to 30% HTML
-describe HTML_30_40		Message is 30% to 40% HTML
-describe HTML_40_50		Message is 40% to 50% HTML
-describe HTML_50_60		Message is 50% to 60% HTML
-describe HTML_60_70		Message is 60% to 70% HTML
-describe HTML_70_80		Message is 70% to 80% HTML
-describe HTML_80_90		Message is 80% to 90% HTML
-describe HTML_90_100		Message is 90% to 100% HTML
-
-# HTML shouting range
-# should really be converted into a numeric function test
-body HTML_SHOUTING3		eval:html_range('max_shouting','2','3')
-body HTML_SHOUTING4		eval:html_range('max_shouting','3','4')
-body HTML_SHOUTING5		eval:html_range('max_shouting','4','5')
-body HTML_SHOUTING6		eval:html_range('max_shouting','5','6')
-body HTML_SHOUTING7		eval:html_range('max_shouting','6','7')
-describe HTML_SHOUTING3		HTML has very strong "shouting" markup
-describe HTML_SHOUTING4		HTML has very strong "shouting" markup
-describe HTML_SHOUTING5		HTML has very strong "shouting" markup
-describe HTML_SHOUTING6		HTML has very strong "shouting" markup
-describe HTML_SHOUTING7		HTML has very strong "shouting" markup
-
-body HTML_TEXT_AFTER_HTML	eval:html_test('text_after_html')
-describe HTML_TEXT_AFTER_HTML	HTML contains text after HTML close tag
-
-body HTML_TEXT_AFTER_BODY	eval:html_test('text_after_body')
-describe HTML_TEXT_AFTER_BODY	HTML contains text after BODY close tag
-
 # HTML comment tests
 body HTML_COMMENT_SHORT		eval:html_text_match('comment', '<!(?!-).{0,6}>')
 describe HTML_COMMENT_SHORT	HTML comment is very short
@@ -155,17 +97,11 @@
 body HTML_EMBEDS		eval:html_test('embeds')
 describe HTML_EMBEDS		HTML with embedded plugin object
 
-body HTML_EVENT_UNSAFE		eval:html_test('html_event_unsafe')
-describe HTML_EVENT_UNSAFE	HTML contains unsafe auto-executing code
 
 body HTML_EXTRA_CLOSE		eval:html_range('closed_extra_ratio', '0.09', 'inf')
 describe HTML_EXTRA_CLOSE	HTML contains far too many close tags
 
-body HTML_FONT_SIZE_TINY	eval:html_eval('min_size', '< 1')
-describe HTML_FONT_SIZE_TINY	HTML font size is tiny
 
-body HTML_FONT_SIZE_NONE	eval:html_eval('min_size', '< 0')
-describe HTML_FONT_SIZE_NONE	HTML font size is negative
 
 body HTML_FONT_SIZE_LARGE	eval:html_range('max_size', '5', '6')
 describe HTML_FONT_SIZE_LARGE	HTML font size is large
@@ -173,14 +109,8 @@
 body HTML_FONT_SIZE_HUGE	eval:html_range('max_size', '6', 'inf')
 describe HTML_FONT_SIZE_HUGE	HTML font size is huge
 
-body HTML_FONT_BIG		eval:html_test('big_font')
-describe HTML_FONT_BIG		HTML tag for a big font size
 
-body HTML_FONT_TINY		eval:html_test('tiny_font')
-describe HTML_FONT_TINY		HTML tag for a tiny font size
 
-body HTML_FONT_INVISIBLE	eval:html_test('font_invisible')
-describe HTML_FONT_INVISIBLE	HTML font color is same as background
 
 body HTML_FONT_LOW_CONTRAST	eval:html_test('font_low_contrast')
 describe HTML_FONT_LOW_CONTRAST	HTML font color similar to background
@@ -188,8 +118,6 @@
 body HTML_FONT_FACE_BAD		eval:html_test('font_face_bad')
 describe HTML_FONT_FACE_BAD	HTML font face is not a word
 
-body HTML_FONT_FACE_CAPS	eval:html_test('font_face_caps')
-describe HTML_FONT_FACE_CAPS	HTML font face has excess capital characters
 
 body HTML_FORMACTION_MAILTO	eval:html_test('form_action_mailto')
 describe HTML_FORMACTION_MAILTO	HTML includes a form which sends mail
@@ -214,56 +142,24 @@
 
 # HTML_IMAGE_RATIO - more image area than text (ratio)
 body HTML_IMAGE_RATIO_02	eval:html_image_ratio('0.000','0.002')
-body HTML_IMAGE_RATIO_04	eval:html_image_ratio('0.002','0.004')
-body HTML_IMAGE_RATIO_06	eval:html_image_ratio('0.004','0.006')
-body HTML_IMAGE_RATIO_08	eval:html_image_ratio('0.006','0.008')
 describe HTML_IMAGE_RATIO_02	HTML has a low ratio of text to image area
-describe HTML_IMAGE_RATIO_04	HTML has a low ratio of text to image area
-describe HTML_IMAGE_RATIO_06	HTML has a low ratio of text to image area
-describe HTML_IMAGE_RATIO_08	HTML has a low ratio of text to image area
-
-body HTML_LINK_PUSH_HERE	eval:html_text_match('anchor', '(?i)(?:push|go|cl[1l]ck)\s*(?:here|this)')
-describe HTML_LINK_PUSH_HERE	HTML link text says "push here" or similar
-
-body HTML_LINK_OPT_OUT		eval:html_text_match('anchor', '(?i)opt.?out')
-describe HTML_LINK_OPT_OUT	HTML link text says "opt out" or similar
 
 # HTML obfuscation
 body HTML_OBFUSCATE_05_10	eval:html_range('obfuscation_ratio','.05','.1')
 body HTML_OBFUSCATE_10_20	eval:html_range('obfuscation_ratio','.1','.2')
 body HTML_OBFUSCATE_20_30	eval:html_range('obfuscation_ratio','.2','.3')
 body HTML_OBFUSCATE_30_40	eval:html_range('obfuscation_ratio','.3','.4')
-body HTML_OBFUSCATE_40_50	eval:html_range('obfuscation_ratio','.4','.5')
 body HTML_OBFUSCATE_50_60	eval:html_range('obfuscation_ratio','.5','.6')
-body HTML_OBFUSCATE_60_70	eval:html_range('obfuscation_ratio','.6','.7')
 body HTML_OBFUSCATE_70_80	eval:html_range('obfuscation_ratio','.7','.8')
-body HTML_OBFUSCATE_80_90	eval:html_range('obfuscation_ratio','.8','.9')
 body HTML_OBFUSCATE_90_100	eval:html_range('obfuscation_ratio','.9','1.0')
 describe HTML_OBFUSCATE_05_10	Message is 5% to 10% HTML obfuscation
 describe HTML_OBFUSCATE_10_20	Message is 10% to 20% HTML obfuscation
 describe HTML_OBFUSCATE_20_30	Message is 20% to 30% HTML obfuscation
 describe HTML_OBFUSCATE_30_40	Message is 30% to 40% HTML obfuscation
-describe HTML_OBFUSCATE_40_50	Message is 40% to 50% HTML obfuscation
 describe HTML_OBFUSCATE_50_60	Message is 50% to 60% HTML obfuscation
-describe HTML_OBFUSCATE_60_70	Message is 60% to 70% HTML obfuscation
 describe HTML_OBFUSCATE_70_80	Message is 70% to 80% HTML obfuscation
-describe HTML_OBFUSCATE_80_90	Message is 80% to 90% HTML obfuscation
 describe HTML_OBFUSCATE_90_100	Message is 90% to 100% HTML obfuscation
 
-# backhair - idea from backhair set by Jennifer Wheeler and Adam Lopresto.
-body HTML_BACKHAIR_2		eval:html_range('backhair_count', '1', '4')
-body HTML_BACKHAIR_4		eval:html_range('backhair_count', '4', '8')
-body HTML_BACKHAIR_8		eval:html_range('backhair_count', '8', 'inf')
-describe HTML_BACKHAIR_2	HTML tags used to obfuscate words
-describe HTML_BACKHAIR_4	HTML tags used to obfuscate words
-describe HTML_BACKHAIR_8	HTML tags used to obfuscate words
-
-# HTML attribute testing
-body HTML_ATTR_BAD		eval:html_range('attr_bad','0.75','1.0')
-describe HTML_ATTR_BAD		HTML has many bad attributes in tags
-body HTML_ATTR_UNIQUE		eval:html_range('attr_unique_bad','0.5','1.0')
-describe HTML_ATTR_UNIQUE	HTML appears to have random attributes in tags
-
 body HTML_TAG_BALANCE_BODY	eval:html_tag_balance('body', '!= 0')
 describe HTML_TAG_BALANCE_BODY	HTML has unbalanced "body" tags
 
@@ -273,55 +169,25 @@
 body HTML_TAG_EXIST_BGSOUND	eval:html_tag_exists('bgsound')
 describe HTML_TAG_EXIST_BGSOUND	HTML has "bgsound" tag
 
-body HTML_TAG_EXIST_MARQUEE	eval:html_tag_exists('marquee')
-describe HTML_TAG_EXIST_MARQUEE	HTML has "marquee" tag
-
-body HTML_TAG_EXIST_TBODY	eval:html_tag_exists('tbody')
-describe HTML_TAG_EXIST_TBODY	HTML has "tbody" tag
-
 # percentage of tags that are not legal elements in HTML
-body HTML_BADTAG_00_10	eval:html_range('bad_tag_ratio','0.00','0.10')
-body HTML_BADTAG_10_20	eval:html_range('bad_tag_ratio','0.10','0.20')
-body HTML_BADTAG_20_30	eval:html_range('bad_tag_ratio','0.20','0.30')
-body HTML_BADTAG_30_40	eval:html_range('bad_tag_ratio','0.30','0.40')
 body HTML_BADTAG_40_50	eval:html_range('bad_tag_ratio','0.40','0.50')
 body HTML_BADTAG_50_60	eval:html_range('bad_tag_ratio','0.50','0.60')
 body HTML_BADTAG_60_70	eval:html_range('bad_tag_ratio','0.60','0.70')
-body HTML_BADTAG_70_80	eval:html_range('bad_tag_ratio','0.70','0.80')
-body HTML_BADTAG_80_90	eval:html_range('bad_tag_ratio','0.80','0.90')
 body HTML_BADTAG_90_100	eval:html_range('bad_tag_ratio','0.90','1.00')
-describe HTML_BADTAG_00_10	HTML message is 0% to 10% bad tags
-describe HTML_BADTAG_10_20	HTML message is 10% to 20% bad tags
-describe HTML_BADTAG_20_30	HTML message is 20% to 30% bad tags
-describe HTML_BADTAG_30_40	HTML message is 30% to 40% bad tags
 describe HTML_BADTAG_40_50	HTML message is 40% to 50% bad tags
 describe HTML_BADTAG_50_60	HTML message is 50% to 60% bad tags
 describe HTML_BADTAG_60_70	HTML message is 60% to 70% bad tags
-describe HTML_BADTAG_70_80	HTML message is 70% to 80% bad tags
-describe HTML_BADTAG_80_90	HTML message is 80% to 90% bad tags
 describe HTML_BADTAG_90_100	HTML message is 90% to 100% bad tags
 
 # percentage of unique non-elements in HTML
-body HTML_NONELEMENT_00_10	eval:html_range('non_element_ratio','0.00','0.10')
-body HTML_NONELEMENT_10_20	eval:html_range('non_element_ratio','0.10','0.20')
-body HTML_NONELEMENT_20_30	eval:html_range('non_element_ratio','0.20','0.30')
 body HTML_NONELEMENT_30_40	eval:html_range('non_element_ratio','0.30','0.40')
 body HTML_NONELEMENT_40_50	eval:html_range('non_element_ratio','0.40','0.50')
-body HTML_NONELEMENT_50_60	eval:html_range('non_element_ratio','0.50','0.60')
 body HTML_NONELEMENT_60_70	eval:html_range('non_element_ratio','0.60','0.70')
-body HTML_NONELEMENT_70_80	eval:html_range('non_element_ratio','0.70','0.80')
 body HTML_NONELEMENT_80_90	eval:html_range('non_element_ratio','0.80','0.90')
-body HTML_NONELEMENT_90_100	eval:html_range('non_element_ratio','0.90','1.00')
-describe HTML_NONELEMENT_00_10	0% to 10% of HTML elements are non-standard
-describe HTML_NONELEMENT_10_20	10% to 20% of HTML elements are non-standard
-describe HTML_NONELEMENT_20_30	20% to 30% of HTML elements are non-standard
 describe HTML_NONELEMENT_30_40	30% to 40% of HTML elements are non-standard
 describe HTML_NONELEMENT_40_50	40% to 50% of HTML elements are non-standard
-describe HTML_NONELEMENT_50_60	50% to 60% of HTML elements are non-standard
 describe HTML_NONELEMENT_60_70	60% to 70% of HTML elements are non-standard
-describe HTML_NONELEMENT_70_80	70% to 80% of HTML elements are non-standard
 describe HTML_NONELEMENT_80_90	80% to 90% of HTML elements are non-standard
-describe HTML_NONELEMENT_90_100	90% to 100% of HTML elements are non-standard
 
 # short HTML messages with certain attributes
 body __HTML_LINK_IMAGE		eval:html_text_match('anchor', '<img>')
@@ -329,32 +195,21 @@
 body __HTML_LENGTH_1024_1536	eval:html_range('length', '1024', '1536')
 body __HTML_LENGTH_1536_2048	eval:html_range('length', '1536', '2048')
 
-body HTML_SHORT_LENGTH		eval:html_eval('length', '< 170')
-describe HTML_SHORT_LENGTH	HTML is extremely short
-
 body __HTML_LENGTH_512		eval:html_eval('length', '< 512')
 body __COMMENT_EXISTS		eval:html_text_match('comment', '<!.*?>')
 
 body __HTML_LENGTH_384		eval:html_eval('length', '< 384')
 body __TAG_EXISTS_CENTER	eval:html_tag_exists('center')
 
-body HTML_TITLE_EMPTY		eval:html_text_not_match('title', '(?s)\S')
-describe HTML_TITLE_EMPTY	HTML title contains no text
-
 body __HTML_TITLE_120		eval:html_text_match('title', '.{120}')
 
 body __HTML_TITLE_SUBJ_DIFF	eval:html_title_subject_ratio('3.5')
 
-body HTML_TITLE_UNTITLED	eval:html_text_match('title', '(?i)(?:untitled|new page \d+)')
-describe HTML_TITLE_UNTITLED	HTML title contains "Untitled"
 
 body __HTML_CHARSET_FARAWAY	eval:html_charset_faraway()
 
 body HTML_IFRAME_SRC	eval:check_iframe_src()
 describe HTML_IFRAME_SRC	Message has HTML IFRAME tag with SRC URI
-
-body URI_HTML_ONLY	eval:check_html_uri_only()
-describe URI_HTML_ONLY	URIs only found in HTML part of multipart/alternative message
 
 endif
 

Modified: spamassassin/branches/check_plugin/rules/25_replace.cf
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/rules/25_replace.cf?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/rules/25_replace.cf (original)
+++ spamassassin/branches/check_plugin/rules/25_replace.cf Sat Oct 28 17:59:34 2006
@@ -104,9 +104,6 @@
 describe FUZZY_BILLION	Attempt to obfuscate words in spam
 replace_rules FUZZY_BILLION
 
-body FUZZY_CELEBREX	/<inter W1><post P2>(?!celebrex)<C><E><L><E><B><R><E><X>/i
-describe FUZZY_CELEBREX	Attempt to obfuscate words in spam
-replace_rules FUZZY_CELEBREX
 
 body FUZZY_CPILL	/(?!ciali[sz])<C><I><A><L><I><S>/i
 describe FUZZY_CPILL	Attempt to obfuscate words in spam
@@ -120,9 +117,6 @@
 describe FUZZY_ERECT	Attempt to obfuscate words in spam
 replace_rules FUZZY_ERECT
 
-body FUZZY_FOLLOW	/(?!follow)<F><O><L><L><O><W>/i
-describe FUZZY_FOLLOW	Attempt to obfuscate words in spam
-replace_rules FUZZY_FOLLOW
 
 body FUZZY_GUARANTEE	/<inter W1><post P2>(?!guarantee)<G><U><A><R><A><N><T><E><E>/i
 describe FUZZY_GUARANTEE	Attempt to obfuscate words in spam
@@ -132,9 +126,6 @@
 describe FUZZY_MEDICATION	Attempt to obfuscate words in spam
 replace_rules FUZZY_MEDICATION
 
-body FUZZY_MILF		/<inter SP>(?!milf)\b<M><I><L><F>/i
-describe FUZZY_MILF	Attempt to obfuscate words in spam
-replace_rules FUZZY_MILF
 
 body FUZZY_MILLION	/(?!million)<M><I><L><L><I><O><N>/i
 describe FUZZY_MILLION	Attempt to obfuscate words in spam
@@ -164,9 +155,6 @@
 describe FUZZY_PHENT	Attempt to obfuscate words in spam
 replace_rules FUZZY_PHENT
 
-body FUZZY_PLEASE	/(?!please)<P><L><E><A><S><E>/i
-describe FUZZY_PLEASE	Attempt to obfuscate words in spam
-replace_rules FUZZY_PLEASE
 
 body FUZZY_PRESCRIPT	/<inter W2><post P2>(?!prescription)<P><R><E><S><C><R><I><P><T><I><O><N>/i
 describe FUZZY_PRESCRIPT	Attempt to obfuscate words in spam
@@ -197,17 +185,11 @@
 describe FUZZY_THOUSANDS	Attempt to obfuscate words in spam
 replace_rules FUZZY_THOUSANDS
 
-body FUZZY_TRAMADOL	/<inter W1><post P2>(?!tramadol)<T><R><A><M><A><D><O><L>/i
-describe FUZZY_TRAMADOL	Attempt to obfuscate words in spam
-replace_rules FUZZY_TRAMADOL
 
 body FUZZY_VLIUM	/<inter W1><post P2>(?!valium)<V><A><L><I><U><M>/i
 describe FUZZY_VLIUM	Attempt to obfuscate words in spam
 replace_rules FUZZY_VLIUM
 
-body FUZZY_VICODIN	/<inter W1><post P2>(?!vicodin)<V><I><C><O><D><I><N>/i
-describe FUZZY_VICODIN	Attempt to obfuscate words in spam
-replace_rules FUZZY_VICODIN
 
 body FUZZY_VIOXX	/<inter W1><post P2>(?!vioxx)<V><I><O><X><X>/i
 describe FUZZY_VIOXX	Attempt to obfuscate words in spam

Modified: spamassassin/branches/check_plugin/rules/active.list
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/rules/active.list?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/rules/active.list (original)
+++ spamassassin/branches/check_plugin/rules/active.list Sat Oct 28 17:59:34 2006
@@ -1,11 +1,5 @@
 # active ruleset list, automatically generated from http://ruleqa.spamassassin.org/
-# with results from: bb-doc bb-jm bb-zmi cthielen daf dos parkerm theo zmi
-
-# good enough
-ADVANCE_FEE_3
-
-# good enough
-ADVANCE_FEE_4
+# with results from: bb-doc bb-jm bb-zmi cthielen daf dos parkerm theo
 
 # tflags userconf
 ALL_TRUSTED
@@ -17,7 +11,7 @@
 AXB_FAKETZ
 
 # good enough
-BANG_OPRAH
+AXB_XR_STULDAP
 
 # good enough
 BASE64_LENGTH_78
@@ -62,37 +56,7 @@
 BROKEN_RATWARE_BOM
 
 # good enough
-CONFIRMED_FORGED
-
-# good enough
-CUM_SHOT
-
-# good enough
-DATE_IN_FUTURE_03_06
-
-# good enough
-DATE_IN_FUTURE_06_12
-
-# good enough
-DATE_IN_FUTURE_12_24
-
-# good enough
-DATE_IN_FUTURE_24_48
-
-# good enough
-DATE_IN_FUTURE_48_96
-
-# good enough
-DATE_IN_FUTURE_96_XX
-
-# good enough
-DATE_IN_PAST_06_12
-
-# good enough
-DATE_IN_PAST_96_XX
-
-# good enough
-DATE_SPAMWARE_Y2K
+CTYPE_000_00_BOUND
 
 # good enough
 DC_GIF_MULTI_LARGO
@@ -121,28 +85,16 @@
 # tflags net
 DIGEST_MULTIPLE
 
-# good enough
-DISGUISE_PORN_MUNDANE
-
 # tflags net
 DNS_FROM_AHBL_RHSBL
 
 # tflags net
-DNS_FROM_RFC_ABUSE
-
-# tflags net
 DNS_FROM_RFC_BOGUSMX
 
 # tflags net
 DNS_FROM_RFC_DSN
 
 # tflags net
-DNS_FROM_RFC_POST
-
-# tflags net
-DNS_FROM_RFC_WHOIS
-
-# tflags net
 DNS_FROM_SECURITYSAGE
 
 # good enough
@@ -158,85 +110,19 @@
 DOS_STOCK_O_PRICE
 
 # good enough
-DOS_TWO_MIS_STOCK
-
-# good enough
-DOS_YOUR_PLACE
-
-# good enough
-DRUGS_ANXIETY
-
-# good enough
-DRUGS_ANXIETY_EREC
-
-# good enough
-DRUGS_ANXIETY_OBFU
-
-# good enough
-DRUGS_DIET
-
-# good enough
-DRUGS_DIET_OBFU
+DOS_TO_READ_STOCK
 
 # good enough
-DRUGS_ERECTILE
+DOS_TWO_MIS_STOCK
 
 # good enough
-DRUGS_ERECTILE_OBFU
+DOS_YOUR_PLACE
 
 # good enough
 DRUGS_HDIA
 
 # good enough
-DRUGS_MANYKINDS
-
-# good enough
-DRUGS_SLEEP_EREC
-
-# good enough
-DRUG_DOSAGE
-
-# good enough
-DRUG_ED_GENERIC
-
-# good enough
-DRUG_ED_ONLINE
-
-# good enough
-DRUG_ED_SILD
-
-# good enough
-EMPTY_MESSAGE
-
-# good enough
-EM_ROLEX
-
-# tflags userconf
-ENV_AND_HDR_SPF_MATCH
-
-# good enough
-EXCUSE_24
-
-# good enough
-EXCUSE_4
-
-# good enough
-EXTRA_MPART_TYPE
-
-# good enough
-FAKE_HELO_LYCOS
-
-# good enough
-FAKE_HELO_MAIL_COM
-
-# good enough
-FAKE_HELO_MAIL_COM_DOM
-
-# good enough
-FAKE_HELO_MSN
-
-# good enough
-FAKE_OUTBLAZE_RCVD
+DRUGS_STOCK_MIMEOLE
 
 # good enough
 FB_CIALIS_LEO3
@@ -272,123 +158,15 @@
 FH_FROM_TO_PERC
 
 # good enough
-FH_RCVD_WITHSMTPFOR
-
-# good enough
 FM_CUSTOMLOGODSGNc
 
 # good enough
-FORGED_AOL_TAGS
-
-# good enough
-FORGED_HOTMAIL_RCVD
-
-# good enough
-FORGED_IMS_HTML
-
-# good enough
-FORGED_IMS_TAGS
-
-# good enough
-FORGED_MSGID_AOL
-
-# good enough
-FORGED_MSGID_EXCITE
-
-# good enough
-FORGED_MSGID_HOTMAIL
-
-# good enough
-FORGED_MSGID_MSN
-
-# good enough
-FORGED_MSGID_YAHOO
-
-# good enough
-FORGED_MUA_AOL_FROM
-
-# good enough
-FORGED_MUA_EUDORA
-
-# good enough
-FORGED_MUA_IMS
-
-# good enough
-FORGED_MUA_MOZILLA
-
-# good enough
-FORGED_MUA_OIMO
-
-# good enough
-FORGED_MUA_OUTLOOK
-
-# good enough
-FORGED_MUA_THEBAT_BOUN
-
-# good enough
-FORGED_OUTLOOK_HTML
-
-# good enough
-FORGED_OUTLOOK_TAGS
-
-# good enough
-FORGED_QUALCOMM_TAGS
-
-# good enough
-FORGED_TELESP_RCVD
-
-# good enough
-FORGED_THEBAT_HTML
-
-# good enough
-FORGED_YAHOO_RCVD
-
-# good enough
-FREE_PORN
-
-# good enough
-FREE_QUOTE_INSTANT
-
-# good enough
-FROM_ALL_NUMS
-
-# good enough
-FROM_BLANK_NAME
-
-# good enough
-FROM_DOMAIN_NOVOWEL
-
-# good enough
-FROM_ENDS_IN_NUMS
-
-# good enough
-FROM_HAS_MIXED_NUMS
-
-# good enough
-FROM_ILLEGAL_CHARS
-
-# good enough
-FROM_LOCAL_DIGITS
-
-# good enough
-FROM_LOCAL_HEX
-
-# good enough
-FROM_LOCAL_NOVOWEL
-
-# good enough
-FROM_NO_USER
-
-# good enough
 FS_START_DOYOU2
 
 # good enough
 FUZZY_MERIDIA
 
 # good enough
-GAPPY_SUBJECT
-
-# good enough
 GEO_QUERY_STRING
 
 # good enough
@@ -427,38 +205,8 @@
 # tflags userconf
 HASHCASH_HIGH
 
-# good enough
-HEADER_SPAM
-
-# good enough
-HEAD_ILLEGAL_CHARS
-
-# good enough
-HELO_DYNAMIC_CHELLO_NL
-
-# good enough
-HELO_DYNAMIC_DIALIN
-
-# good enough
-HELO_DYNAMIC_HCC
-
-# good enough
-HELO_DYNAMIC_HEXIP
-
-# good enough
-HELO_DYNAMIC_HOME_NL
-
-# good enough
-HELO_DYNAMIC_IPADDR
-
-# good enough
-HELO_DYNAMIC_IPADDR2
-
-# good enough
-HELO_DYNAMIC_SPLIT_IP
-
-# good enough
-HG_HORMONE
+# tflags userconf
+HEAD_LONG
 
 # good enough
 HS_FORGED_OE_FW
@@ -467,7 +215,7 @@
 HS_GETMEOFF
 
 # good enough
-HS_MEETUP_FOR_SEX
+HS_PHARMA_1
 
 # good enough
 HS_SUBJ_ONLINE_PHARMACEUTICAL
@@ -479,36 +227,9 @@
 HTTPS_HTTP_MISMATCH
 
 # good enough
-HTTPS_IP_MISMATCH
-
-# good enough
-HTTP_77
-
-# good enough
-HTTP_EXCESSIVE_ESCAPES
-
-# good enough
-INFO_TLD
-
-# good enough
-INVALID_DATE
-
-# good enough
-INVALID_TZ_CST
-
-# good enough
-INVESTMENT_ADVICE
-
-# good enough
-JM_LC_MID
-
-# good enough
 JM_RCVD_QMAILV1
 
 # good enough
-JM_RCVD_SENDMAILID
-
-# good enough
 KAM_STOCKOTC
 
 # good enough
@@ -527,172 +248,40 @@
 KAM_STOCKTIP8
 
 # good enough
-KOREAN_UCE_SUBJECT
-
-# good enough
-LOCALPART_IN_SUBJECT
-
-# good enough
-LONGWORDS
-
-# good enough
-MALE_ENHANCE
-
-# good enough
 MID_DEGREES
 
 # good enough
 MID_MJW_STOX
 
 # good enough
-MID_OUTLOOK_ZZZNN
-
-# good enough
-MILLION_USD
-
-# good enough
-MIME_BAD_ISO_CHARSET
-
-# good enough
-MIME_BASE64_BLANKS
-
-# good enough
-MIME_BASE64_TEXT
-
-# good enough
-MIME_BOUND_ALLHEX_17
-
-# good enough
-MIME_BOUND_DD_DIGITS
-
-# good enough
-MIME_BOUND_DIGITS_15
-
-# good enough
-MIME_BOUND_MANY_HEX
-
-# good enough
-MIME_BOUND_RKFINDY
-
-# good enough
-MISSING_MIMEOLE
-
-# good enough
-MISSING_MIME_HB_SEP
-
-# good enough
-MORE_SEX
-
-# good enough
-MSGID_DOLLARS_RANDOM
-
-# good enough
-MSGID_OUTLOOK_INVALID
-
-# good enough
-MSGID_RANDY
-
-# good enough
-MSGID_SHORT
-
-# good enough
-MSGID_SPAM_CAPS
-
-# good enough
-MSGID_SPAM_LETTERS
-
-# good enough
-MSGID_YAHOO_CAPS
-
-# good enough
-MULTIPART_ALT_NON_TEXT
-
-# good enough
-NOT_ADVISOR
-
-# tflags net
-NO_DNS_FOR_FROM
-
-# good enough
-NO_PRESCRIPTION
-
-# good enough
-NO_RDNS_DOTCOM_HELO
+MID_START_001C
 
 # tflags userconf
-NO_RECEIVED
+MISSING_HB_SEP
 
-# tflags userconf
-NO_RELAYS
-
-# good enough
-NULL_IN_BODY
-
-# good enough
-NUMERIC_HTTP_ADDR
-
-# good enough
-ONLINE_PHARMACY
-
-# good enough
-PERCENT_RANDOM
-
-# good enough
-PLING_QUERY
-
-# good enough
-PORN_15
-
-# good enough
-PREST_NON_ACCREDITED
-
-# tflags net
-PYZOR_CHECK
-
-# good enough
-RATWARE_EFROM
-
-# good enough
-RATWARE_EGROUPS
-
-# good enough
-RATWARE_GECKO_BUILD
-
-# good enough
-RATWARE_HASH_2
-
-# good enough
-RATWARE_HASH_2_BUG2108
-
-# good enough
-RATWARE_HASH_2_V2
-
-# good enough
-RATWARE_HASH_2_V2_BUG2108
-
-# good enough
-RATWARE_MOZ_MALFORMED
+# tflags net
+NO_DNS_FOR_FROM
 
-# good enough
-RATWARE_MS_HASH
+# tflags userconf
+NO_RECEIVED
 
-# good enough
-RATWARE_NAME_ID
+# tflags userconf
+NO_RELAYS
 
 # good enough
-RATWARE_OE_MALFORMED
+NULL_IN_BODY
 
 # good enough
-RATWARE_OUTLOOK_NONAME
+OUTLOOK_3416
 
 # good enough
-RATWARE_RCVD_AT
+PART_CID_STOCK
 
 # good enough
-RATWARE_RCVD_PF
+PART_CID_STOCK_LESS
 
-# good enough
-RATWARE_ZERO_TZ
+# tflags net
+PYZOR_CHECK
 
 # tflags net
 RAZOR2_CF_RANGE_51_100
@@ -707,22 +296,7 @@
 RAZOR2_CHECK
 
 # good enough
-RCVD_AM_PM
-
-# good enough
-RCVD_DOUBLE_IP_LOOSE
-
-# good enough
-RCVD_DOUBLE_IP_SPAM
-
-# good enough
-RCVD_FAKE_HELO_DOTCOM
-
-# good enough
-RCVD_HELO_IP_MISMATCH
-
-# good enough
-RCVD_ILLEGAL_IP
+RCVD_FORGED_WROTE
 
 # tflags net
 RCVD_IN_BL_SPAMCOP_NET
@@ -812,38 +386,11 @@
 RCVD_LSO_SND
 
 # good enough
-RCVD_NUMERIC_HELO
-
-# good enough
-REPLICA_WATCH
-
-# good enough
-REPTO_OVERQUOTE_THEBAT
-
-# good enough
-REPTO_QUOTE_AOL
-
-# good enough
-REPTO_QUOTE_IMS
-
-# good enough
-REPTO_QUOTE_MSN
-
-# good enough
-REPTO_QUOTE_QUALCOMM
-
-# good enough
-REPTO_QUOTE_YAHOO
+RCVD_MAIL_COM
 
 # tflags net
 ROUND_THE_WORLD
 
-# good enough
-ROUND_THE_WORLD_LOCAL
-
-# good enough
-SORTED_RECIPS
-
 # tflags net
 SPF_FAIL
 
@@ -868,27 +415,6 @@
 # tflags net
 SPF_SOFTFAIL
 
-# good enough
-SPOOF_COM2OTH
-
-# good enough
-SPOOF_NET2COM
-
-# good enough
-STOCK_ALERT
-
-# good enough
-SUBJECT_DRUG_GAP_C
-
-# good enough
-SUBJECT_DRUG_GAP_L
-
-# good enough
-SUBJECT_DRUG_GAP_S
-
-# good enough
-SUBJECT_DRUG_GAP_X
-
 # tflags userconf
 SUBJECT_IN_BLACKLIST
 
@@ -899,25 +425,13 @@
 SUBJECT_NEEDS_ENCODING
 
 # good enough
-SUBJECT_SEXUAL
-
-# good enough
-SUBJ_ILLEGAL_CHARS
-
-# good enough
 SUBJ_RE_NUM
 
 # good enough
-SUSPICIOUS_RECIPS
-
-# good enough
-TO_MALFORMED
-
-# good enough
-TO_NO_USER
+TT_MSGID_TRUNC
 
 # good enough
-TT_MSGID_TRUNC
+TT_OBSCURED_VIAGRA
 
 # good enough
 TVD_ACT_193
@@ -950,9 +464,6 @@
 TVD_FUZZY_FIXED_RATE
 
 # good enough
-TVD_FUZZY_MICROCAP
-
-# good enough
 TVD_FUZZY_PHARMACEUTICAL
 
 # good enough
@@ -965,9 +476,6 @@
 TVD_FW_GRAPHIC_ID3_2
 
 # good enough
-TVD_FW_MESG1
-
-# good enough
 TVD_GET_STOCK
 
 # good enough
@@ -977,9 +485,6 @@
 TVD_INCREASE_SIZE
 
 # good enough
-TVD_LINK_SAVE
-
-# good enough
 TVD_NOT_SATISFIED
 
 # good enough
@@ -1019,6 +524,9 @@
 TVD_RATWARE_CB
 
 # good enough
+TVD_RATWARE_CB_2
+
+# good enough
 TVD_RATWARE_MSGID_01
 
 # good enough
@@ -1037,12 +545,6 @@
 TVD_SPACED_SUBJECT_WORD5
 
 # good enough
-TVD_SPACED_WORDS
-
-# good enough
-TVD_SPACE_RATIO
-
-# good enough
 TVD_STOCK1
 
 # good enough
@@ -1075,47 +577,233 @@
 # good enough
 TVD_VIS_HIDDEN
 
-# good enough
-FORGED_IMS_HTML
+# tflags userconf
+CORRUPT_FROM_LINE_IN_HDRS
 
 # good enough
-FORGED_IMS_TAGS
+CTYPE_8SPACE_GIF
 
-# good enough
-FORGED_OUTLOOK_HTML
+# tflags net
+DNS_FROM_DOB
 
-# good enough
-FORGED_OUTLOOK_TAGS
+# tflags net
+DNS_FROM_OPENWHOIS
 
-# good enough
-RATWARE_MS_HASH
+# tflags net
+RCVD_IN_DOB
 
-# good enough
-RATWARE_OUTLOOK_NONAME
+# tflags net
+RCVD_IN_DSBL
 
-# good enough
-TVD_FW_GRAPHIC_ID1
+# tflags net
+RCVD_IN_IADB_DK
 
-# good enough
-TVD_FW_GRAPHIC_ID2
+# tflags net
+RCVD_IN_IADB_DOPTIN
 
-# good enough
-UNCLAIMED_MONEY
+# tflags net
+RCVD_IN_IADB_DOPTIN_GT50
 
-# good enough
-UNCLOSED_BRACKET
+# tflags net
+RCVD_IN_IADB_DOPTIN_LT50
 
-# tflags userconf
-UNPARSEABLE_RELAY
+# tflags net
+RCVD_IN_IADB_EDDB
+
+# tflags net
+RCVD_IN_IADB_EPIA
+
+# tflags net
+RCVD_IN_IADB_GOODMAIL
+
+# tflags net
+RCVD_IN_IADB_LISTED
+
+# tflags net
+RCVD_IN_IADB_LOOSE
+
+# tflags net
+RCVD_IN_IADB_MI_CPEAR
+
+# tflags net
+RCVD_IN_IADB_MI_CPR_30
+
+# tflags net
+RCVD_IN_IADB_MI_CPR_MAT
+
+# tflags net
+RCVD_IN_IADB_ML_DOPTIN
+
+# tflags net
+RCVD_IN_IADB_NOCONTROL
+
+# tflags net
+RCVD_IN_IADB_OOO
+
+# tflags net
+RCVD_IN_IADB_OPTIN
+
+# tflags net
+RCVD_IN_IADB_OPTIN_GT50
+
+# tflags net
+RCVD_IN_IADB_OPTIN_LT50
+
+# tflags net
+RCVD_IN_IADB_OPTOUTONLY
+
+# tflags net
+RCVD_IN_IADB_RDNS
+
+# tflags net
+RCVD_IN_IADB_SENDERID
+
+# tflags net
+RCVD_IN_IADB_SPF
+
+# tflags net
+RCVD_IN_IADB_UNVERIFIED_1
+
+# tflags net
+RCVD_IN_IADB_UNVERIFIED_2
+
+# tflags net
+RCVD_IN_IADB_UT_CPEAR
+
+# tflags net
+RCVD_IN_IADB_UT_CPR_30
+
+# tflags net
+RCVD_IN_IADB_UT_CPR_MAT
+
+# tflags net
+RCVD_IN_MAPS_DUL
+
+# tflags net
+RCVD_IN_NJABL_DUL
+
+# tflags net
+RCVD_IN_SORBS_DUL
+
+# tflags net
+RCVD_IN_WHOIS_INVALID
+
+# tflags net
+RCVD_IN_XBL
 
 # good enough
-UNRESOLVED_TEMPLATE
+TVD_FW_GRAPHIC_NAME_LONG
 
 # good enough
-UPPERCASE_50_75
+TVD_FW_GRAPHIC_NAME_MID
 
 # good enough
-UPPERCASE_75_100
+TVD_PH_SEC
+
+# tflags net
+URIBL_RHS_DOB
+
+# tflags net
+WHOIS_AITPRIV
+
+# tflags net
+WHOIS_CONTACTPRIV
+
+# tflags net
+WHOIS_DMNBYPROXY
+
+# tflags net
+WHOIS_DOMESCROW
+
+# tflags net
+WHOIS_DOMPRIVCORP
+
+# tflags net
+WHOIS_DREAMPRIV
+
+# tflags net
+WHOIS_DROA
+
+# tflags net
+WHOIS_DYNADOT
+
+# tflags net
+WHOIS_FINEXE
+
+# tflags net
+WHOIS_GKGPROXY
+
+# tflags net
+WHOIS_IDSHIELD
+
+# tflags net
+WHOIS_IDTHEFTPROT
+
+# tflags net
+WHOIS_KATZ
+
+# tflags net
+WHOIS_LISTINGAG
+
+# tflags net
+WHOIS_LNOA
+
+# tflags net
+WHOIS_MAPNAME
+
+# tflags net
+WHOIS_MONIKER_PRIV
+
+# tflags net
+WHOIS_MYPRIVREG
+
+# tflags net
+WHOIS_NAMESECURE
+
+# tflags net
+WHOIS_NETID
+
+# tflags net
+WHOIS_NETSOLPR
+
+# tflags net
+WHOIS_NOLDC
+
+# tflags net
+WHOIS_NOMINET
+
+# tflags net
+WHOIS_PRIVACYPOST
+
+# tflags net
+WHOIS_PRIVDOMAIN
+
+# tflags net
+WHOIS_REGISTER4LESS
+
+# tflags net
+WHOIS_REGTEK
+
+# tflags net
+WHOIS_SAFENAMES
+
+# tflags net
+WHOIS_SECINFOSERV
+
+# tflags net
+WHOIS_SPAMFREE
+
+# tflags net
+WHOIS_SRSPLUS
+
+# tflags net
+WHOIS_UNLISTED
+
+# tflags net
+WHOIS_WHOISPROT
+
+# tflags userconf
+UNPARSEABLE_RELAY
 
 # tflags net
 URIBL_AB_SURBL
@@ -1150,15 +838,6 @@
 # good enough
 URI_L_PHP
 
-# good enough
-URI_NOVOWEL
-
-# good enough
-URI_NO_WWW_BIZ_CGI
-
-# good enough
-URI_NO_WWW_INFO_CGI
-
 # tflags userconf
 USER_IN_ALL_SPAM_TO
 
@@ -1169,18 +848,12 @@
 USER_IN_BLACKLIST_TO
 
 # tflags userconf
-USER_IN_DEF_SPF_WL
-
-# tflags userconf
 USER_IN_DEF_WHITELIST
 
 # tflags userconf
 USER_IN_MORE_SPAM_TO
 
 # tflags userconf
-USER_IN_SPF_WHITELIST
-
-# tflags userconf
 USER_IN_WHITELIST
 
 # tflags userconf
@@ -1189,35 +862,32 @@
 # good enough
 VERTICAL_DRUGS_1
 
-# good enough
-VIA_GAP_GRA
-
-# good enough
-WEIRD_QUOTING
-
-# good enough
-X_IP
+# tflags net
+WHOIS_1AND1PR
 
-# good enough
-X_LIBRARY
+# tflags net
+WHOIS_NAMEKING
 
-# good enough
-X_MESSAGE_INFO
+# tflags net
+WHOIS_PRIVPROT
 
-# good enough
-X_MSMAIL_PRIORITY_HIGH
+# tflags net
+WHOIS_REGISTERFLY
 
-# good enough
-X_ORIG_IP_NOT_IPV4
+# tflags net
+WHOIS_SECUREWHOIS
 
-# good enough
-X_PRIORITY_CC
+# tflags net
+WHOIS_WHOISGUARD
 
 # good enough
 ZMIde_EBAYJOBSURI
 
 # good enough
 ZMIde_SEXUALEXPL1
+
+# tflags net
+__RCVD_IN_DOB
 
 # tflags net
 __RCVD_IN_IADB

Modified: spamassassin/branches/check_plugin/rules/regression_tests.cf
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/rules/regression_tests.cf?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/rules/regression_tests.cf (original)
+++ spamassassin/branches/check_plugin/rules/regression_tests.cf Sat Oct 28 17:59:34 2006
@@ -27,8 +27,6 @@
 test DEAR_FRIEND ok Dear friend,
 test DEAR_FRIEND fail Dear Mr. Ithacus,
 
-test FROM_ENDS_IN_NUMS     ok   matt12345678@sergeant.org
-test FROM_ENDS_IN_NUMS     fail matt@sergeant.org
 test FROM_STARTS_WITH_NUMS     ok   12345678matt@sergeant.org
 test FROM_STARTS_WITH_NUMS     fail matt@sergeant.org
 test FORGED_YAHOO_RCVD fail by mf1.lng.yahoo.com (8.11.1/8.11.1) id g3SDfPH19426

Modified: spamassassin/branches/check_plugin/sa-learn.raw
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/sa-learn.raw?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/sa-learn.raw (original)
+++ spamassassin/branches/check_plugin/sa-learn.raw Sat Oct 28 17:59:34 2006
@@ -85,7 +85,8 @@
 %opt = (
   'force-expire' => 0,
   'use-ignores'  => 0,
-  'nosync'    => 0,
+  'nosync'       => 0,
+  'cf'           => []
 );
 
 Getopt::Long::Configure(
@@ -104,6 +105,7 @@
   'configpath|config-file|config-dir|c|C=s' => \$opt{'configpath'},
   'prefspath|prefs-file|p=s'                => \$opt{'prefspath'},
   'siteconfigpath=s'                        => \$opt{'siteconfigpath'},
+  'cf=s'                                    => \@{$opt{'cf'}},
 
   'folders|f=s'          => \$opt{'folders'},
   'force-expire|expire'  => \$opt{'force-expire'},
@@ -216,6 +218,8 @@
   $post_config .= "use_bayes 1\n";
 }
 
+$post_config .= join("\n", @{$opt{'cf'}})."\n";
+
 # create the tester factory
 $spamtest = new Mail::SpamAssassin(
   {
@@ -585,6 +589,7 @@
  -C path, --configpath=path, --config-file=path   Path to standard configuration dir
  -p prefs, --prefspath=file, --prefs-file=file    Set user preferences file
  --siteconfigpath=path             Path for site configs (def: /etc/mail/spamassassin)
+ --cf='config line'                Additional line of configuration
  -D, --debug-level                 Print debugging messages
  -V, --version                     Print version
  -h, --help                        Print usage message
@@ -738,6 +743,12 @@
 
 Use the specified path for locating site-specific configuration files.  Ignore
 the default directories (usually C</etc/mail/spamassassin> or similar).
+
+=item B<--cf='config line'>
+
+Add additional lines of configuration directly from the command-line, parsed
+after the configuration files are read.   Multiple B<--cf> arguments can be
+used, and each will be considered a separate line of configuration.
 
 =item B<-p> I<prefs>, B<--prefspath>=I<prefs>, B<--prefs-file>=I<prefs>
 

Modified: spamassassin/branches/check_plugin/sa-update.raw
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/sa-update.raw?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/sa-update.raw (original)
+++ spamassassin/branches/check_plugin/sa-update.raw Sat Oct 28 17:59:34 2006
@@ -663,7 +663,7 @@
 Perhaps you need to import the channel's GPG key?  For example:
 
     wget http://spamassassin.apache.org/updates/GPG.KEY
-    gpg --import GPG.KEY
+    sa-update --import GPG.KEY
 
 ENDOFVALIDATIONERR
 

Modified: spamassassin/branches/check_plugin/spamassassin.raw
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/spamassassin.raw?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/spamassassin.raw (original)
+++ spamassassin/branches/check_plugin/spamassassin.raw Sat Oct 28 17:59:34 2006
@@ -152,7 +152,7 @@
 # - create user preference files
 # - have ArchiveIterator detect the input message format (file vs dir)
 #
-my %opt = ( 'create-prefs' => 1, 'format' => 'detect' );
+my %opt = ( 'create-prefs' => 1, 'format' => 'detect', cf => [] );
 
 my $doing_whitelist_operation = 0;
 my $count                     = 0;
@@ -174,6 +174,7 @@
   'add-to-whitelist|W'                      => \$opt{'add-to-whitelist'},
   'configpath|config-file|config-dir|c|C=s' => \$opt{'configpath'},
   'create-prefs!'                           => \$opt{'create-prefs'},
+  'cf=s'                                    => \@{$opt{'cf'}},
   'debug|D:s'                               => \$opt{'debug'},
   'error-code|exit-code|e:i'                => \$opt{'error-code'},
   'help|h|?'                                => \$opt{'help'},
@@ -250,6 +251,7 @@
     local_tests_only    => $opt{'local'},
     debug               => $opt{'debug'},
     dont_copy_prefs     => ( $opt{'create-prefs'} ? 0 : 1 ),
+    post_config_text    => join("\n", @{$opt{'cf'}})."\n",
     PREFIX              => $PREFIX,
     DEF_RULES_DIR       => $DEF_RULES_DIR,
     LOCAL_RULES_DIR     => $LOCAL_RULES_DIR,

Modified: spamassassin/branches/check_plugin/spamassassin.spec
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/spamassassin.spec?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/spamassassin.spec (original)
+++ spamassassin/branches/check_plugin/spamassassin.spec Sat Oct 28 17:59:34 2006
@@ -64,8 +64,8 @@
 %package -n perl-Mail-SpamAssassin
 Summary:        %{pdir}::%{pnam} -- SpamAssassin e-mail filter Perl modules
 Summary(pl):    %{pdir}::%{pnam} -- modu³y Perla filtru poczty SpamAssassin
-Requires: perl >= 5.6.1 perl(HTML::Parser) perl(Digest::SHA1)
-BuildRequires: perl >= 5.6.1 perl(HTML::Parser) perl(Digest::SHA1)
+Requires: perl >= 5.6.1 perl(HTML::Parser) perl(Digest::SHA1) perl(Net::DNS)
+BuildRequires: perl >= 5.6.1 perl(HTML::Parser) perl(Digest::SHA1) perl(Net::DNS)
 Group:          Development/Libraries
 
 %description -n perl-Mail-SpamAssassin

Modified: spamassassin/branches/check_plugin/spamc/configure
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/spamc/configure?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/spamc/configure (original)
+++ spamassassin/branches/check_plugin/spamc/configure Sat Oct 28 17:59:34 2006
@@ -2231,9 +2231,10 @@
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-if test "x$GCC" = "xyes" ; then
-  CFLAGS="-Wall -Wextra -Wdeclaration-after-statement $CFLAGS"
-fi
+# off: breaks gcc 3.3.x!  doh
+# if test "x$GCC" = "xyes" ; then
+# CFLAGS="-Wall -Wextra -Wdeclaration-after-statement $CFLAGS"
+# fi
 
 
 

Modified: spamassassin/branches/check_plugin/spamc/configure.in
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/spamc/configure.in?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/spamc/configure.in (original)
+++ spamassassin/branches/check_plugin/spamc/configure.in Sat Oct 28 17:59:34 2006
@@ -17,9 +17,10 @@
 
 AC_PROG_CC
 
-if test "x$GCC" = "xyes" ; then
-  CFLAGS="-Wall -Wextra -Wdeclaration-after-statement $CFLAGS"
-fi
+# off: breaks gcc 3.3.x!  doh
+# if test "x$GCC" = "xyes" ; then
+# CFLAGS="-Wall -Wextra -Wdeclaration-after-statement $CFLAGS"
+# fi
 
 AC_EXEEXT
 

Modified: spamassassin/branches/check_plugin/spamd/spamd.raw
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/spamd/spamd.raw?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/spamd/spamd.raw (original)
+++ spamassassin/branches/check_plugin/spamd/spamd.raw Sat Oct 28 17:59:34 2006
@@ -170,6 +170,7 @@
   'min-children'  => 1,         # min kids to have running
   'min-spare'     => 1,         # min kids that must be spare
   'max-spare'     => 2,         # max kids that should be spare
+  'cf'            => [],        # extra config lines
 );
 
 
@@ -236,6 +237,7 @@
   'setuid-with-ldap'         => \$opt{'setuid-with-ldap'},
   'setuid-with-sql'          => \$opt{'setuid-with-sql'},
   'siteconfigpath=s'         => \$opt{'siteconfigpath'},
+  'cf=s'                     => \@{$opt{'cf'}},
   'socketgroup=s'            => \$opt{'socketgroup'},
   'socketmode=s'             => \$opt{'socketmode'},
   'socketowner=s'            => \$opt{'socketowner'},
@@ -731,6 +733,7 @@
     dont_copy_prefs      => $dontcopy,
     rules_filename       => ( $opt{'configpath'} || 0 ),
     site_rules_filename  => ( $opt{'siteconfigpath'} || 0 ),
+    post_config_text     => join("\n", @{$opt{'cf'}})."\n",
     force_ipv4           => ( $opt{'force_ipv4'} || 0 ),
     local_tests_only     => ( $opt{'local'} || 0 ),
     debug                => ( $opt{'debug'} || 0 ),
@@ -2216,6 +2219,7 @@
  -c, --create-prefs                 Create user preferences files
  -C path, --configpath=path         Path for default config files
  --siteconfigpath=path              Path for site configs
+ --cf='config line'                 Additional line of configuration
  -d, --daemonize                    Daemonize
  -h, --help                         Print usage message.
  -i [ipaddr], --listen-ip=ipaddr    Listen on the IP ipaddr
@@ -2319,6 +2323,12 @@
 
 Use the specified path for locating site-specific configuration files.  Ignore
 the default directories (usually C</etc/mail/spamassassin> or similar).
+
+=item B<--cf='config line'>
+
+Add additional lines of configuration directly from the command-line, parsed
+after the configuration files are read.   Multiple B<--cf> arguments can be
+used, and each will be considered a separate line of configuration.
 
 =item B<-d>, B<--daemonize>
 

Modified: spamassassin/branches/check_plugin/t/bayesdbm.t
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/t/bayesdbm.t?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/t/bayesdbm.t (original)
+++ spamassassin/branches/check_plugin/t/bayesdbm.t Sat Oct 28 17:59:34 2006
@@ -63,7 +63,8 @@
 
 # $msgid is the generated hash messageid
 # $msgid_hdr is the Message-Id header
-ok($msgid eq 'ce33e4a8bc5798c65428d6018380bae346c7c126@sa_generated');
+ok($msgid eq 'ce33e4a8bc5798c65428d6018380bae346c7c126@sa_generated')
+    or warn "got: [$msgid]";
 ok($msgid_hdr eq '9PS291LhupY');
 
 ok($sa->{bayes_scanner}->{store}->tie_db_writable());

Modified: spamassassin/branches/check_plugin/t/mimeheader.t
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/t/mimeheader.t?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/t/mimeheader.t (original)
+++ spamassassin/branches/check_plugin/t/mimeheader.t Sat Oct 28 17:59:34 2006
@@ -2,7 +2,7 @@
 
 use lib '.'; use lib 't';
 use SATest; sa_t_init("mimeheader");
-use Test; BEGIN { plan tests => 2 };
+use Test; BEGIN { plan tests => 4 };
 
 $ENV{'LANGUAGE'} = $ENV{'LC_ALL'} = 'C';             # a cheat, but we need the patterns to work
 
@@ -12,6 +12,8 @@
 
   q{ MIMEHEADER_TEST1 }, q{ test1 },
   q{ MIMEHEADER_TEST2 }, q{ test2 },
+  q{ MATCH_NL_NONRAW }, q{ match_nl_nonraw },
+  q{ MATCH_NL_RAW }, q{ match_nl_raw },
 
 );
 
@@ -20,6 +22,9 @@
   # loadplugin Mail::SpamAssassin::Plugin::MIMEHeader
   mimeheader MIMEHEADER_TEST1 content-type =~ /application\/msword/
   mimeheader MIMEHEADER_TEST2 content-type =~ m!APPLICATION/MSWORD!i
+
+  mimeheader MATCH_NL_NONRAW       Content-Type =~ /msword; name/
+  mimeheader MATCH_NL_RAW   Content-Type:raw =~ /msword;\n\tname/
 
 	});
 

Modified: spamassassin/branches/check_plugin/t/missing_hb_separator.t
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/t/missing_hb_separator.t?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/t/missing_hb_separator.t (original)
+++ spamassassin/branches/check_plugin/t/missing_hb_separator.t Sat Oct 28 17:59:34 2006
@@ -42,6 +42,7 @@
 
 $result = 0;
 foreach (@{$status->{test_names_hit}}) {
+  print "test hit: $_\n";
   $result++ if ($_ eq 'MISSING_HB_SEP' || $_ eq 'X_MESSAGE_INFO');
 }
 

Modified: spamassassin/branches/check_plugin/t/mkrules.t
URL: http://svn.apache.org/viewvc/spamassassin/branches/check_plugin/t/mkrules.t?view=diff&rev=468796&r1=468795&r2=468796
==============================================================================
--- spamassassin/branches/check_plugin/t/mkrules.t (original)
+++ spamassassin/branches/check_plugin/t/mkrules.t Sat Oct 28 17:59:34 2006
@@ -2,7 +2,7 @@
 
 use lib '.'; use lib 't';
 use SATest; sa_t_init("mkrules");
-use Test; BEGIN { plan tests => 96 };
+use Test; BEGIN { plan tests => 101 };
 use File::Path;
 
 # ---------------------------------------------------------------------------
@@ -417,6 +417,36 @@
 # checkfile("$tdir/rules/72_active.cf", \&patterns_run_cb);
 checkfile("$tdir/rules/70_sandbox.cf", \&patterns_run_cb);
 ok (-f "$tdir/rules/plugin.pm");
+ok ok_all_patterns();
+save_tdir();
+
+# ---------------------------------------------------------------------------
+print "meta rule depends on unpromoted subrule in lexically-earlier file\n\n";
+# (see mail from Sidney of Oct 16 2006, rules HS_INDEX_PARAM and HS_PHARMA_1)
+
+%patterns = (
+  "header T_GOOD_SUB"   => rule_line_1,
+  "header T_BAD_SUB"   => rule_line_2,
+  "meta GOOD (T_GOOD_SUB && !T_BAD_SUB)" => meta_found
+);
+%anti_patterns = (
+);
+
+rmtree([ $tdir ]); mkpath ([ "$tdir/rulesrc/sandbox/foo", "$tdir/rules" ]);
+
+write_file("$tdir/MANIFEST", [ "rules/72_active.cf\n" ]);
+write_file("$tdir/MANIFEST.SKIP", [ ]);
+write_file("$tdir/rules/active.list", [ "GOOD\n" ]);
+write_file("$tdir/rulesrc/sandbox/foo/20_aaa.cf", [
+    "meta GOOD (GOOD_SUB && !BAD_SUB)\n",
+]);
+write_file("$tdir/rulesrc/sandbox/foo/20_bbb.cf", [
+    "header GOOD_SUB Foo =~ /good/\n",
+    "header BAD_SUB Foo =~ /bad/\n",
+]);
+
+ok (mkrun ("--src $tdir/rulesrc --out $tdir/rules --manifest $tdir/MANIFEST --manifestskip $tdir/MANIFEST.SKIP --active $tdir/rules/active.list 2>&1", \&patterns_run_cb));
+checkfile("$tdir/rules/72_active.cf", \&patterns_run_cb);
 ok ok_all_patterns();
 save_tdir();