Copyright (C) 2000-2012 |
GNU Info (gnus)Group Mail SplittingGroup Mail Splitting -------------------- If you subscribe to dozens of mailing lists but you don't want to maintain mail splitting rules manually, group mail splitting is for you. You just have to set TO-LIST and/or TO-ADDRESS in group parameters or group customization and set `nnmail-split-methods' to `gnus-group-split'. This splitting function will scan all groups for those parameters and split mail accordingly, i.e., messages posted from or to the addresses specified in the parameters TO-LIST or TO-ADDRESS of a mail group will be stored in that group. Sometimes, mailing lists have multiple addresses, and you may want mail splitting to recognize them all: just set the EXTRA-ALIASES group parameter to the list of additional addresses and it's done. If you'd rather use a regular expression, set SPLIT-REGEXP. All these parameters in a group will be used to create an `nnmail-split-fancy' split, in which the FIELD is `any', the VALUE is a single regular expression that matches TO-LIST, TO-ADDRESS, all of EXTRA-ALIASES and all matches of SPLIT-REGEXP, and the SPLIT is the name of the group. RESTRICTs are also supported: just set the SPLIT-EXCLUDE parameter to a list of regular expressions. If you can't get the right split to be generated using all these parameters, or you just need something fancier, you can set the parameter SPLIT-SPEC to an `nnmail-split-fancy' split. In this case, all other aforementioned parameters will be ignored by `gnus-group-split'. In particular, SPLIT-SPEC may be set to `nil', in which case the group will be ignored by `gnus-group-split'. `gnus-group-split' will do cross-posting on all groups that match, by defining a single `&' fancy split containing one split for each group. If a message doesn't match any split, it will be stored in the group named in `gnus-group-split-default-catch-all-group', unless some group has SPLIT-SPEC set to `catch-all', in which case that group is used as the catch-all group. Even though this variable is often used just to name a group, it may also be set to an arbitrarily complex fancy split (after all, a group name is a fancy split), and this may be useful to split mail that doesn't go to any mailing list to personal mail folders. Note that this fancy split is added as the last element of a `|' split list that also contains a `&' split with the rules extracted from group parameters. It's time for an example. Assume the following group parameters have been defined: nnml:mail.bar: ((to-address . "bar@femail.com") (split-regexp . ".*@femail\\.com")) nnml:mail.foo: ((to-list . "foo@nowhere.gov") (extra-aliases "foo@localhost" "foo-redist@home") (split-exclude "bugs-foo" "rambling-foo") (admin-address . "foo-request@nowhere.gov")) nnml:mail.others: ((split-spec . catch-all)) Setting `nnmail-split-methods' to `gnus-group-split' will behave as if `nnmail-split-fancy' had been selected and variable `nnmail-split-fancy' had been set as follows: (| (& (any "\\(bar@femail\\.com\\|.*@femail\\.com\\)" "mail.bar") (any "\\(foo@nowhere\\.gov\\|foo@localhost\\|foo-redist@home\\)" - "bugs-foo" - "rambling-foo" "mail.foo")) "mail.others") If you'd rather not use group splitting for all your mail groups, you may use it for only some of them, by using `nnmail-split-fancy' splits like this: (: gnus-mlsplt-fancy GROUPS NO-CROSSPOST CATCH-ALL) GROUPS may be a regular expression or a list of group names whose parameters will be scanned to generate the output split. NO-CROSSPOST can be used to disable cross-posting; in this case, a single `|' split will be output. CATCH-ALL is the fallback fancy split, used like GNUS-GROUP-SPLIT-DEFAULT-CATCH-ALL-GROUP. If CATCH-ALL is `nil', or if SPLIT-REGEXP matches the empty string in any selected group, no catch-all split will be issued. Otherwise, if some group has SPLIT-SPEC set to `catch-all', this group will override the value of the CATCH-ALL argument. Unfortunately, scanning all groups and their parameters can be quite slow, especially considering that it has to be done for every message. But don't despair! The function `gnus-group-split-setup' can be used to enable `gnus-group-split' in a much more efficient way. It sets `nnmail-split-methods' to `nnmail-split-fancy' and sets `nnmail-split-fancy' to the split produced by `gnus-group-split-fancy'. Thus, the group parameters are only scanned once, no matter how many messages are split. However, if you change group parameters, you have to update `nnmail-split-fancy' manually. You can do it by running `gnus-group-split-update'. If you'd rather have it updated automatically, just tell `gnus-group-split-setup' to do it for you. For example, add to your `.gnus': (gnus-group-split-setup AUTO-UPDATE CATCH-ALL) If AUTO-UPDATE is non-`nil', `gnus-group-split-update' will be added to `nnmail-pre-get-new-mail-hook', so you won't ever have to worry about updating `nnmail-split-fancy' again. If you don't omit CATCH-ALL (it's optional, equivalent to `nil'), `gnus-group-split-default-catch-all-group' will be set to its value. Because you may want to change `nnmail-split-fancy' after it is set by `gnus-group-split-update', this function will run `gnus-group-split-updated-hook' just before finishing. automatically generated by info2www version 1.2.2.9 |