On Wed, Jan 23, 2013 at 10:58:37AM +0800, horseriver wrote:
> hi:
>
> How to edit my .procmailrc to put mails from different mail list into
> different maildir?
>
> can this work :
> :0
> * ^to: [email protected]
> [email protected]
>
> thanks
This is a configuration that I used to use:
# Mailing List Classification {{{
# This is a method/recipe that I ganked from [1]. I liked the idea of #
# separating filtering out into 'classicifation' and 'delivery' # phases.
#
# Sources
# -------
# [1]: http://aperiodic.net/phil/configs/procmailrc
# most lists; RFC-2919
:0 fhw
* ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>@\.\/]*))
| formail -I "X-List-Classify: $MATCH"
# majordomo
:0 fhw
* ^Sender: owner-[^@]+@[^@\+]+
* ^Sender: owner-\/[^@\+\.\/]+
| formail -I "X-List-Classify: $MATCH"
# librelist.com mailing lists
:0 fhw
* ^List-Id: \/[^@<]+@librelist\.(com|org)
{
LISTID=cho $MATCH | sed -e 's/@librelist\.\(com\|org\)//'
:0 fhw
|formail -I "X-List-Classify: $LISTID"
}
# yahoogroups
:0 fhw
* ^Mailing-List: list \/[^@\.\/]+
| formail -I "X-List-Classify: $MATCH"
# ezmlm
:0
* ^Mailing-List: contact \/[^@\+\.\/]+
{
LISTID=cho $MATCH | sed -e 's/-help$//'
:0 fhw
| formail -I "X-List-Classify: $LISTID"
}
Even with that, some things specific required intervention. Some lists have
generic names like 'alerts':
# All of the CERT listnames are generic (e.g. 'alerts') so, just throw
# them all under a single listname that makes sense.
:0 fhw
* ^List-Id: .*us-cert\.gov
| formail -I "X-List-Classify: us-cert"
Or:
:0 fhw
* ^Reply-To: *Bug [0-9]+ <[0-9]+@bugs\.launchpad\.net>
| formail -I "X-List-Classify: launchpad"
Then there was mailing list delivery (after using X-List-Classify to sort):
# Mailing List Delivery {{{
# This is a method/recipe that I ganked from [1]. I liked the idea of
# separating filtering out into 'classicifation' and 'delivery' phases.
#
# Sources
# -------
# [1]: http://aperiodic.net/phil/configs/procmailrc
:0
* ^X-List-Classify: \/[0-9a-z-]+
{
LIST=$MATCH
LOG="[list=$LIST] "
# Short-Ciruit {{{
##########
# Short-Circuit
# Deal with mailing list emails that should end up in the inbox
# instead of on the mailing list.
#
#
# List management email go to the inbox
:0
* ^Message-ID: <mailman
$DEFAULT/
#
# List management emails from ezmlm go to the inbox
:0
* ^Message-ID: <[0-9.]+.ezmlm-warn@
$DEFAULT/
#
# zsh-users doesn't match the pattern above, so look for the
# LISTNAME-help pattern
:0
* ^Mailing-List: contact $LIST-help
$DEFAULT/
# }}}
[...]
# For reading.
:0 c
lists.$LIST/
# Prepare for the archive.
:0 fhw
| formail -I "Received" -I "Delivered-To"
# Archive locally.
:0
archives.$LIST/
}
# }}}
In general though, I just cut back on most of the mailing lists that I was on
(as I rarely read them all). Now everything just hits my inbox.
Note: This setup is stupidly complex, but it should give you some ideas of what
you can do and some of the general header patterns that some mailing list
software follows. I also clipped out some of the mailing list cleanup recipes I
had (i.e. removing [LIST-NAME] from the subject; compressing strands of "Re:"s
down to a single one; etc).
--
Brandon Sandrowicz