procmail
[Top] [All Lists]

Re: Two-pass procmailrc file: question

2003-04-24 23:54:45
At 21:36 2003-04-24 -0700, David Meissner did say:
:0 c:
* pattern-to-match
/file/to/store/pattern

...many similar rules for different patterns...

:0 :
* pattern-to-match
/dev/null

...many similar rules for the same patterns...

I think I know what's going down - the 'c' is because EACH occurrence of a matching pattern will be stored to its respective file. So, ONE message arrives:

:0c:
* B ?? politics
politics.mbx

:0c:
* B ?? photography
photography.mbx

:0c:
* B ?? family
family.mbx

If that ONE message was about politics and family, then it would be stored in BOTH of those mailboxes. But, there's STILL a copy at the end of all that, so the pile of "if it matches this, or this, or this, discard the copy" logic is included, ostensibly so that only messages which weren't filtered at all will remain for default delivery.

The conditions-to-match in your case just might be individual email addresses - it's a kludgy way to handle using one account to virtualize mailboxes using procmail. I'd never advise such a thing - there's TONS of problems with the apprach.

There is, however, a MUCH easier method is to chop out all the /dev/null recipes (at least, the ones you KNOW mate to a regular filing recipe), and insert:

:0
* ! LASTFOLDER ?? ^^^^
/dev/null


There's a limitation to using this: LASTFOLDER gets set if you use a piped _condition_, like so, even when that recipe doesn't match and DELIVER:

:0:
* ? grep somecondition_which_does_not_actually_match
mailbox_which_doesn't_get_used

Just because the message was piped to grep IN THE CONDITION, LASTFOLDER will be changed (to the grep operation). Which makes it a bit iffy for managing discarding messages you've delivered copies of already, unless you're POSITIVE of how you're running filters.

---
 Sean B. Straw / Professional Software Engineering

 Procmail disclaimer: <http://www.professional.org/procmail/disclaimer.html>
 Please DO NOT carbon me on list replies.  I'll get my copy from the list.


_______________________________________________
procmail mailing list
procmail(_at_)lists(_dot_)RWTH-Aachen(_dot_)DE
http://MailMan.RWTH-Aachen.DE/mailman/listinfo/procmail

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