Gregory Sutter responded to my suggestion, which was,
T> I think what you really need is a different approach:
T>
T> SPAMMER # make sure it goes in unset
T>
T> :0
T> * ^Received:.*(Cyber-Bomber|bulk_mailer|from stealth)
T> { SPAMMER="junkmail software" }
T>
T> :0
T> * ^X-Advertisement:.*iemmc
T> { SPAMMER=IEMMC }
T>
T> ... etc. ...
T>
T> :0: # if $SPAMMER has been given a non-null value
T> * SPAMMER ?? .
T> | formail -i 'X-Fkey: junk' -i "X-Spammer: $SPAMMER" >> jmtest
that ...
S> That would cause procmail to go through the entire ruleset every time,
S> though.
Easily cured:
SPAMMER # make sure it goes in unset
:0
* ^Received:.*(Cyber-Bomber|bulk_mailer|from stealth)
{ SPAMMER="junkmail software" }
:0E
* ^X-Advertisement:.*iemmc
{ SPAMMER=IEMMC }
... etc. ...
:0: # if $SPAMMER has been given a non-null value
* SPAMMER ?? .
| formail -i 'X-Fkey: junk' -i "X-Spammer: $SPAMMER" >> jmtest
Just put `E' flags on all of them except the first and the final pipe to
formail >> jmtest, and once there is a value assigned to $SPAMMER procmail
will skip the rest of the chain of `E' recipes.
| Well, that's what it does on legit mail anyway.
Yes, it still will keep examining mail until it finds a spam characteristic,
and legitimate mail will run (but pass) the entire gauntlet.
| Thanks!
You're welcome.