Go forward to Mail and Procmail.
Go backward to Mail Backend Variables.
Go up to Getting Mail.
Fancy Mail Splitting
--------------------
If the rather simple, standard method for specifying how to split
mail doesn't allow you to do what you want, you can set
`nnmail-split-methods' to `nnmail-split-fancy'. Then you can play with
the `nnmail-split-fancy' variable.
Let's look at an example value of this variable first:
;; Messages from the mailer daemon are not crossposted to any of
;; the ordinary groups. Warnings are put in a separate group
;; from real errors.
(| ("from" mail (| ("subject" "warn.*" "mail.warning")
"mail.misc"))
;; Non-error messages are crossposted to all relevant
;; groups, but we don't crosspost between the group for the
;; (ding) list and the group for other (ding) related mail.
(& (| (any "ding@ifi\\.uio\\.no" "ding.list")
("subject" "ding" "ding.misc"))
;; Other mailing lists...
(any "procmail@informatik\\.rwth-aachen\\.de" "procmail.list")
(any "SmartList@informatik\\.rwth-aachen\\.de" "SmartList.list")
;; People...
(any "larsi@ifi\\.uio\\.no" "people.Lars Magne Ingebrigtsen"))
;; Unmatched mail goes to the catch all group.
"misc.misc"))")
This variable has the format of a "split". A split is a (possibly)
recursive structure where each split may contain other splits. Here are
the four possible split syntaxes:
"GROUP"
If the split is a string, that will be taken as a group name.
"(FIELD VALUE SPLIT)"
If the split is a list, and the first element is a string, then
that means that if header FIELD (a regexp) contains VALUE (also a
regexp), then store the message as specified by SPLIT.
"(| SPLIT...)"
If the split is a list, and the first element is `|' (vertical
bar), then process each SPLIT until one of them matches. A SPLIT
is said to match if it will cause the mail message to be stored in
one or more groups.
"(& SPLIT...)"
If the split is a list, and the first element is `&', then process
all SPLITs in the list.
In these splits, FIELD must match a complete field name. VALUE must
match a complete word according to the fundamental mode syntax table.
You can use `.*' in the regexps to match partial field names or words.
FIELD and VALUE can also be lisp symbols, in that case they are
expanded as specified by the variable `nnmail-split-abbrev-alist'.
This is an alist of cons cells, where the car of the cells contains the
key, and the cdr contains a string.
`nnmail-split-fancy-syntax-table' is the syntax table in effect when
all this splitting is performed.