procmail
[Top] [All Lists]

Re: Explanation needed for error msg

1997-03-20 13:31:41
Steve Hill is still trying to find out,

| I changed the .procmailrc as [Era] suggested, and received the following:
| 
| procmail: Locking "msgid.lock"
| procmail: Executing "/usr/bin/formail,-D,8192,/home/steveh/mail/msgid.cache"
| procmail: Program failure (1) of "/usr/bin/formail"
| procmail: Assigning "LASTFOLDER=/usr/bin/formail -D 8192 
/home/steveh/mail/msgid.cache"
| procmail: Unlocking "msgid.lock"
| 
| Can you figure out what "Program failure (1)" is trying to tell me?

It's trying to tell you good news, Mr. Hill.  If formail -D finds a
Message-Id: that is not already in the cache -- in other words, the first
arrival of a message -- it adds the ID to the cache and exits with status 1. 
If the ID is already in the cache -- the message is a duplicate of one you've
received before -- formail -D exits with status 0.

That may sound inside out -- you might logically think that spotting a new
message would be a success and identifying a duplicate would be a failure --
but Stephen (van den Berg, that is) designed it this way to be easier to code
into a procmailrc recipe.  If you try to deliver mail to |formail -D, and the
message is a duplicate, formail reports success and procmail stops process-
ing.  Since formail -D gives no standard output, the duplicate message van-
ishes.

But if the message is new, formail -D reports failure, so procmail (given
the `W' or `w' flag) recovers the message and continues reading recipes,
delivering the message per instructions that will come later in the rcfile.

formail -D failed at identifying the message as a duplicate because the
message was new.

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