Here's a procmail problem I solved.  Perhaps it may be of help to
others.

My objective is to strip the string "[kde-linux]" (no quotes) from the
subject line of the mailing list of the same name.  My first procmail
recipe attempt looked like this:

:0 fw:
* ^TO_kde-linux
| sed -e '/Subject:/s/\[kde-linux\] //g' >>  KDE-linux

While this stripped off the string just fine, I was getting funny
results.  Specifically, my mbox N flag was getting falsely set.
Examination of the procmail log showed why:

procmail: [1048] Sat Sep 22 10:27:13 2001
procmail: Assigning "LOGABSTRACT=all"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)redhat-list"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)sparc-list"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)wine-users"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)mutt"
procmail: Match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)kde-linux"
procmail: Locking "KDE-linux.lock"
procmail: Executing " sed -e '/Subject:/s/\[kde-linux\] //g' >>KDE-linux"
procmail: Unlocking "KDE-linux.lock"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)kde-user"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)gnome-list"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)redhat-announce-list"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)redhat-watch-list"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)[EMAIL PROTECTED]"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)linux-security"
procmail: No match on 
"(^((Original-)?(Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently(-Resent)?)-To):(.*[^-a-zA-Z0-9_.])?)cgochorus"
procmail: Locking "/home/john/Mail/mbox.lock"
procmail: Assigning "LASTFOLDER=/home/john/Mail/mbox"
procmail: Opening "/home/john/Mail/mbox"
procmail: Acquiring kernel-lock
procmail: Unlocking "/home/john/Mail/mbox.lock" 
procmail: Notified comsat: "john@15295543:/home/john/Mail/mbox"
  Folder: /home/john/Mail/mbox 1
procmail: Unlocking "/home/john/.lockmail


What this log suggested to me was that using the f (consider the pipe a
filter) and w (wait for the filter to finish and check its exit code)
were not doing what I intended.  Rather than simply allowing time for
the sed edit to operate, procmail was sending the mail to the correct
box, but was continuing to process succeeding recipes, ultimately setting
the flag on mbox.

I fixed this by removing the flags and the lock (:).  New recipe looks
like this

:0
* ^TO_kde-linux
| sed -e '/Subject:/s/\[kde-linux\] //g' >>  KDE-linux

This solved the problem.

 
-- 
John P. Verel
Norwalk, Connecticut

Reply via email to