People handle large volumes of mail in different ways. Keeping

everything in one mailbox can quickly become unmanageable because

messages you need to read get lost among messages you don’t need to

read.

You can move mail manually by selecting them in the summary buffer and

typing B m (gnus-summary-move-article). Then type the name of the

group to which you would like to move the message. The group will be

created if it doesn’t exist.

To move multiple messages, mark them with #

(gnus-summary-mark-as-processable) and then type B m

(gnus-summary-move-article). To unmark a message, type M-#

(gnus-summary-unmark-as-processable). To unmark all messages, type M P

U (gnus-summary-unmark-all-processable).

Automatically filing mail

Moving messages by hand is tedious and time-consuming. One way to deal

with this is to set up rules that automatically file mail into

different groups (or folders, as they’re called in other mail

clients). Gnus calls this “splitting” mail, and you can split mail on

IMAP servers as well as mail downloaded from POP3 servers to your

computer.

For example, if you’re using Gnus to read mail from an IMAP server,

you can split your messages by adding this to your ~/.gnus:

If you use a different inbox, change the value of

nnimap-split-inbox(1). Any messages in the inbox will be split

according to nnimap-split-rule(2), which is a list where each element

is a list containing the group’s name and a regular expression

matching the header of messages that should be filed in the group. In

this example, Gnus will move mail with subjects containing the word

“emacs” to INBOX.emacs, mail directed to [email protected] to the

INBOX.work group, mail directed to [email protected] to the

INBOX.personal group, and mail error messages to INBOX.errors. All

other messages will be stored in INBOX.

If you’re downloading your mail from a POP3 server and storing it in

nnml, add this to your ~/.gnus instead:

All other messages will be stored in mail.misc.

Start M-x gnus again, and your mail will be split into the different

groups.

Where are my groups?

If you don’t see your new groups in the group buffer displayed by M-x

gnus, type A A (gnus-group-list-active) to see all the groups. Go to

the group that you would like to add to the group buffer, then type u

(gnus-group-unsubscribe-current-group) to toggle its subscription. In

this example, INBOX.automated is not subscribed to, but INBOX is.

U 13: INBOX.automated 76: INBOX

When you type M-x gnus again, you’ll see your subscribed groups if

they have unread messages.

nnimap-split-rule and nnmail-split-methods allow you to filter

interesting or uninteresting mail into different groups based on their

headers. Gnus comes with an even more powerful mail splitting engine.

In fact, Gnus comes with “fancy mail splitting.”

Fancy mail splitting

With fancy mail splitting and some configuration, you can split mail

based on a combination of criteria. You can even manually file a

message and have Gnus automatically file incoming replies in the same

group.

To configure an IMAP connection to use fancy mail splitting, add the

following to your ~/.gnus:

(setq nnimap-split-inbox "INBOX") (setq nnimap-split-predicate "UNDELETED") (setq nnmail-split-fancy ;; (1) '(| ;; (2) (: gnus-registry-split-fancy-with-parent) ;; (3) ;; splitting rules go here ;; (4) "INBOX" ;; (5) )) (setq nnimap-split-rule 'nnmail-split-fancy) (setq nnmail-split-methods 'nnimap-split-fancy) ;; (6) (gnus-registry-initialize) ;; (7)

This configures IMAP to use the nnmail-split-fancy function to

determine the group for messages. Note that we’re setting the

nnmail-split-fancy variable here. If you want to process your IMAP

mail separately from your other mail, you can set the

nnimap-split-fancy variable instead. If so, also set nnimap-split-rule

to ‘nnimap-split-fancy. Using nnmail-split-fancy here makes the other

examples easier to understand, though.

The nnmail-split-fancy variable controls the splitting behavior(1). The

“|” symbol means that that the first matching rule is used(2). For

example, if the message being processed is a reply to a message that

Gnus knows about, then the gnus-registry-split-fancy-with-parent

function will return the name of the group, and nnmail-split-fancy

will file the message there(3). You can add other splitting rules as

well(4). If messages don’t match any of these rules, the last rule

specifies that the messages will be filed in INBOX(5). Set

nnmail-split-methods to nnimap-split-fancy as well in order to work

around some assumptions in other parts of the code(6). After that,

initialize the Gnus registry(7), which is responsible for tracking

moved and deleted messages. This allows you to automatically split

replies into the same folders as the original messages.

To configure fancy mail splitting with an nnml backend (suggested

configuration for POP3), add the following to your ~/.gnus instead:

(gnus-registry-initialize) (setq nnmail-split-fancy '(| (: gnus-registry-split-fancy-with-parent) ;; splitting rules go here "mail.misc" ;; (1) )) (setq nnmail-split-methods 'nnmail-split-fancy)

This code is similar to the IMAP example, except that the default

mailbox name for nnml is mail.misc(1).

Here’s how the previous rules in nnmail-split-methods would be

translated to nnmail-split-fancy rules for an IMAP configuration:

(setq nnmail-split-fancy '(| (: gnus-registry-split-fancy-with-parent) ;; splitting rules go here (from mail "INBOX.errors") ;; (1) (any "[email protected]" "INBOX.work") ;; (2) (any "[email protected]" "INBOX.personal") ;; ("subject" "emacs" "INBOX.emacs") ;; (3) "INBOX" ;; or "mail.misc" for nnml/POP3 ))

The from keyword matches against the “From”, “Sender”, and

“Resent-From” fields, while the mail keyword matches common mail

system addresses(1). The corresponding to keyword matches against

the “To”, “Cc”, “Apparently-To”, “Resent-To” and “Resent-Cc” headers,

while any matches the fields checked by the from and to

keywords(2). You can also compare against the subject

and other headers(3).

You can use logic in splitting rules, too. For example, if you like

reading the jokes on [email protected], but you don’t like

the ones sent by [email protected] (he not only has a bad sense of

humor, but also likes picking on Emacs!), you can use a rule like

this in your nnmail-split-fancy:

;; ... other splitting rules go here... (any "[email protected]" ;; (1) (| (from "[email protected]" "INBOX.junk") ;; (2) "INBOX.jokes")) ;; (3) ;; ... other splitting rules go here

The first rule matches all messages with

“[email protected]” in from- or to-related headers.

Matching messages are processed with another split rule, which moves

messages from [email protected] to a separate group(2) and files the

other messages in INBOX.jokes(3). To learn more about creating complex

rules, read the Gnus Info manual for “Fancy Mail Splitting”.

More posts about: emacs, wickedcoolemacs Tags: emacs, gnus, mail, wickedcoolemacs | See in index // 8 Comments »