Use scoring, too.  Thanks to the TCLUG Procmail presentation, I've spent
several months developing my procmail rules, though I haven't learned as
much as I'd like.  Here's my spam.rc (used after I grab friends, family
and lists):

---

ODDCHARS="[^ -~]" 
:0 HB
* -11^0
* -4^0 H ?? ^Subject: Re:
* -8^0 H ?? ^TO.*(myaddress\@mydomain1\.com|myaddress\@mydomain2\.com)
* 4^0 H ?? ^To:[ ]*$
* 4^0 H ?? ^To:.*friend
* 4^0 H ?? ^from:.*[0-9]@
* 7^0 H ??
^(From|Received).*\.\<(ar|br|ch|cl|cn|cr|cz|fi|it|hk|jp|kr|mx|my|nl|nu|p
l|pt|ro|ru|si|to|tv|tw|vn)\>
* 5^0 H ?? ^message-id:[^a-z]*$
* 5^0 H ?? ^subject:.*[ ][ ][0-9][0-9]+$
* 5^0 H ?? ^Received:.*unknown
* 2^0 H ?? undisclosed-recipients
* 5^0 H ?? ^Subject:[ 1-9]*$
* 5^0 H ?? ^Subject:.*ADV:
* 5^0 H ?? ^X-Rocket-Spam
* 5^0 H ?? ^X-YahooFilteredBulk
* 3^1 H ?? myaddress1\@
* 3^0 (yahoo|mail|msn|starmail|excite|bigfoot|email|hotmail|sohu)\.com
* 3^1 \$[0-9],000
* 2^1 [- ](800|888)[- ]
* 2^1 \$\$\$*
* 2^1 \!\!\!*
* 2^0 text/html
* 5^0 (real|easy)[- ]*money
* 3^1 \<click\>.*\<link\>.*\<remove\>
* 3^1 hello[ ]*friend
* 2^2 earn \$
* 3^1 \<a\s+friend\>
* 3^1 \<limited\s+time\>
* 3^1 \<dot\s+com\>
* 2^1 $ ()$ODDCHARS$ODDCHARS$ODDCHARS$ODDCHARS+
* 4^1 (from|in)[ ]*the[ ]*subject
* 4^1 remove[ ]*your[ ]*email[ ]*address
* 4^1 get[- ]*rich[- ]*quick
* 3^1 (part|full)[ -]time 
* 3^1 ((extra|more|enough)[ ]*)money
* 2^1 wor(k|king)[ ]*(at|from)[ ]*home
* 4^0 to[ ]*be[ ]*(removed|unsubscribed)
* 4^0 subject=(auto)?remove|remove\.htm
* 3^1 act[
]*now|\<ads\>|adult|advertis|afford|amateur|aphrodisiac|appeal|asia|as[
]*seen[ ]*on|attention|attract|animal
* 2^1 background[ ]*check|bank|banned|banner|billion|bills|bingo|black[-
]*jack|bond|boost|boyfriend|britney[ ]*spears|broadcast|bul
k |burn[ ]*fat
* 2^1 cable |cams|career|cartridge|casino|cell|chat|cheap|china|click[-
]*here|cock|confidential|consolidat|credit
* 2^1 dating|dear[ ]*friend|decoder|debt|degree|dentist|diet|domain[
]*name|diploma|dollars|dvd|doctor|dental
* 2^1 earning|ejaculat|erectile.*d[iy]sfunction|e[-
]*commerce|esquire|ebit
* 3^1 fantas(y|ies)|fat[ ]burn|fda|finance
|fortune|foryou|freedom|freehost|free[ ]*information|free[
]*vacation|fuck
* 3^1 girlfriend|girls|guarantee
* 3^1 hard[- ]*core|herbal|hidden|home[ ]*loan|home[
]*work|horny|hosting|hot |hottest|huge[ ]*sale
* 2^0 inches|\<internet[ ]*marketing\>|income|increase[
]*sales|incredible|ink[ ]*jet|insurance|invest
* 4^1 jackpot
* 2^1 legal|lesbian|libido|\<life\>|long[- ]*distance
* 2^1 market|mate|merchant[
]*(status|account)|metabolism|million|\<mlm\>|money|monthly[
]*payment|mortgage|must[ ]*have
* 5^1 naked|\<nude\>
* 3^1 opportunit|opt[- ]*out|offend|opt[- ]*in|off[- ]shore|optical
* 3^1
penis|pervers|petro|pharmac|pheromone|phone|porn|prescription|proven|pro
fit|psychic
* 3^1 recommend|recession|regist|removal|removed
* 3^1 sales|scramble|search
engine|secret|sex|shock|shopping|SIC|smoke|snore|snoring|spy|stock|strip
per|stuffing.*envelopes|success|
suppressed
* 3^1 teen|testimon|thousand|toner|traffic
* 3^1
uncensored|uncollected|undisclosed|underpaid|unedited|university|unsubsc
ribe|urgent
* 4^1 vacation|viagra
* 4^1 web[- ]*cam|weight|whore|wild|\<win\>|win[ ]*cash|women
* 6^1 XXX
* 6^1 young girls
| $PMDIR/reporter.pl

---

My reporter.pl looks like this:

---

#!/usr/bin/perl 
 
# Spamcop reporter

open(SENDMAIL, "|/usr/sbin/sendmail -oi -t") || die "Cannot open
sendmail output";

print SENDMAIL  <<"ENDENDEND";
From: $sender 
To: submit.FXP8WTWSZpOPYi4Y\@spam.spamcop.net
Subject: report spam
MIME-Version: 1.0
Content-Type: multipart/mixed;
  boundary="DeathToSpamDeathToSpamDeathToSpam"

This is a multi-part message in MIME format.
--DeathToSpamDeathToSpamDeathToSpam
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit


--DeathToSpamDeathToSpamDeathToSpam
Content-Type: message/rfc822
Content-Disposition: attachment

ENDENDEND

while (<STDIN>) {
        print SENDMAIL ;
}


print SENDMAIL  <<"ENDENDEND";

--DeathToSpamDeathToSpamDeathToSpam--
ENDENDEND

close (SENDMAIL);

---

-----Original Message-----
From: tclug-list-admin at mn-linux.org
[mailto:tclug-list-admin at mn-linux.org] On Behalf Of Joel Rosenberg
Sent: Wednesday, February 27, 2002 2:37 PM
To: tclug-list at mn-linux.org; Raymond Norton
Subject: Re: [TCLUG] content filter for email


On Wednesday 27 February 2002 12:49 pm, Raymond Norton wrote:
> Our users are getting hammered with porn in their email. Is there an 
> add on to Sendmail, or some other area of the mail process that will 
> allow us to trash this stuff?

Procmail can filter on content, although you've got to be a bit careful
about 
what phrases you search for, and/or set up some pass rules in advance of
the 
blocking rules, or you're going to trash an invitation for free tickets
to 
"The Vagina monologues", say.  

"Hot girl-on-girl action", though, should be safe.  

-- 
-------------------------------------
There's a widow in sleepy Chester
  Who weeps for her only son;
There's a grave on the Pabeng River,
  A grave that the Burmans shun,
And there's Subadar Prag Tewarri
  Who tells how the work was done.
-------------------------------------
_______________________________________________
Twin Cities Linux Users Group Mailing List - Minneapolis/St. Paul,
Minnesota http://www.mn-linux.org tclug-list at mn-linux.org
https://mailman.mn-linux.org/mailman/listinfo/tclug-list