procmail
[Top] [All Lists]

Re: Q: Putting action line in variable

1997-08-10 20:06:00
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.

<Prev in Thread] Current Thread [Next in Thread>