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.