On 09/01/03 04:41 PM, Larry Gilson sat at the `puter and typed: > Hi Louis, > > Please forgive the delay in responding. I was out of touch for a period of > time.
Ditto . . . > > -----Original Message----- > > From: Louis LeBlanc > > > After rereading a lot of procmail docs, I've found that the exitcode > > is saved when the 'w' flag is used in the procmail recipe as follows: > > I was moving in this very same direction. Great minds . . . > > :0fw > > * !^Subject:.*SAtalk > > | spamc -u "$LOGNAME" > > > > Also, the $? variable should hold that exitcode, so following that > > recipe with > > > > SCANNED=$? > > > > *should* (meaning untested so far :) cause the following recipe to > > work only if spamc failed to connect to spamd: > > > > :0fw > > * ? test ! $SCANNED > > | spamassassin -a > > > > That assumes I've gotten the syntax of this last recipe correct - > > particularly the second line. > > I follow you to the end. However, I found references by Philip Guenther > (Procmail list maintainer) to suggest the following: > > > :0 w > * ? progname > | do this if exitcode == 0 > > # save the return code in a testable variable > ret = $? > > # Need the 'E' here as ret will contain the return code of > # the action instead of 'progname' if 'progname' succeeded. > :0 E > * ret ?? ^^1^^ > | do this if exitcode == 1 > > :0 E > * ret ?? ^^2^^ > | do this if exitcode == 2 > > :0 E > | otherwise, do this > > > If we use that strategy, we might be able to experiment with code as > follows: > > :0fw > * !^Subject:.*SAtalk > | spamc -u "$LOGNAME" > > SCANNED=$? > > :0 Efw > * SCANNED ?? ^^0^^ > | spamassassin -a I'm pretty sure that wouldn't work. The E causes the second to always be skipped unless the first didn't execute - like for mail to the SA list. > I was wondering why we could not do the following: > > :0 > * !^Subject:.*Satalk > { > :0fw: spamassassin.lock > * < 256000 > | spamc > > :0 efw: spamassassin.lock > * < 256000 > | spamassassin -a > } > > Shouldn't the e mean execute if the previous recipe's condition(s) > matched but there was an error in the action? What do you think? I think you're right with that one - using the lowercase 'e', but I'm not sure how an error is defined there. The procmailrc manpage has the following: e This recipe only executes if the immediately preceding recipe failed (i.e., the action line was attempted, but resulted in an error). I'd probably go with the following to start off: :0 * !^Subject:.*Satalk { :0fw: spamassassin.lock * < 256000 | spamc SCANNED=$? :0fw: spamassassin.lock * ! SCANNED ?? ^^0^^ * < 256000 | spamassassin -a } > By the way, the SA FAQ suggests using a lock. I don't know if spamc > benefits from the lock but I use it anyway. > # The lock file ensures that only 1 spamassassin invocation happens > # at 1 time, to keep the load down. > # > :0fw: spamassassin.lock > * < 256000 > | spamassassin Probably a good idea. Even if this is unnecessary, it will probably reduce the load when dozens of messages come in at once. Lou -- Louis LeBlanc [EMAIL PROTECTED] Fully Funded Hobbyist, KeySlapper Extrordinaire :) http://www.keyslapper.org ԿԬ We must believe that it is the darkest before the dawn of a beautiful new world. We will see it when we believe it. -- Saul Alinsky ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Spamassassin-talk mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/spamassassin-talk