1 | |
---|
2 | INTRODUCTION |
---|
3 | ------------ |
---|
4 | It is a common practice when using nmh to filter your inbound mail |
---|
5 | directly into nmh folders. There are several programs which allow you |
---|
6 | to do this, of which two common ones are procmail and slocal. |
---|
7 | |
---|
8 | SLOCAL |
---|
9 | ------ |
---|
10 | The slocal command is part of the nmh distribution. It is a fairly |
---|
11 | simple mail filtering program. Check the slocal man page for an example |
---|
12 | filtering file (called .maildelivery). |
---|
13 | |
---|
14 | PROCMAIL |
---|
15 | -------- |
---|
16 | Probably the most popular mail filtering command is procmail. It can |
---|
17 | filter mail into standard mbox-style spool files, as well as into MH/nmh |
---|
18 | style folders. |
---|
19 | |
---|
20 | Although procmail knows how to put a message directly into an nmh folder, |
---|
21 | this is not recommended. Procmail doesn't know about nmh sequences. |
---|
22 | Instead you should have procmail use the nmh command `rcvstore' to put |
---|
23 | the message into the folder. The `rcvstore' command will (by default) |
---|
24 | add each new message to the "unseen" sequence, so you can detect new |
---|
25 | messages in folders with the `flist' command. |
---|
26 | |
---|
27 | Also, nmh commands generally like to keep mail messages in RFC-822 |
---|
28 | format. But by default, procmail will leave the first line of the |
---|
29 | message unchanged. This line (which usually begins with "From ") is |
---|
30 | not in the standard RFC-822 format. It is recommended that you use the |
---|
31 | command `formail' (which comes in the procmail distribution) to rewrite |
---|
32 | this line so that it begins with the header name "X-Envelope-From:". |
---|
33 | An example of how to do this is given below. |
---|
34 | |
---|
35 | The reason the header name "X-Envelope-From:" is recommended, is that the |
---|
36 | nmh command `packf' (as of version 0.23) will check for this header when |
---|
37 | packing folders. The `packf' command knows how to undo the rewriting |
---|
38 | of the "From " line to the "X-Envelope-From:" line. By checking for |
---|
39 | this header name, `packf' is able to pack the folder into exactly the |
---|
40 | form that is used if procmail delivers to the standard mail spool. |
---|
41 | |
---|
42 | If you do not rewrite the "From " line into this format, the `packf' |
---|
43 | command will still work. But it may create fake "From " lines which |
---|
44 | are not the same as the originals. |
---|
45 | |
---|
46 | Here is a typical .procmailrc file for using procmail in conjunction |
---|
47 | with nmh. For more information, see the manual pages for procmail, |
---|
48 | procmailrc and procmailex. |
---|
49 | |
---|
50 | ################################################################### |
---|
51 | # .procmailrc |
---|
52 | ################################################################### |
---|
53 | # To use procmail, put the next line in your .forward file: |
---|
54 | # "|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #XXX" |
---|
55 | # Do not remove the double quotes. Change XXX to your username. |
---|
56 | # Edit path to procmail above, and the VARIABLES below, as needed. |
---|
57 | # Adapt the MAILING LIST section below for lists you subscribe to. |
---|
58 | # Your .forward needs to be world-readable, but not world-writable. |
---|
59 | ################################################################### |
---|
60 | # This .procmailrc is written for use with nmh/mh/exmh/mh-e |
---|
61 | ################################################################### |
---|
62 | |
---|
63 | ### VARIABLES ### |
---|
64 | VERBOSE=off |
---|
65 | SHELL=/bin/sh |
---|
66 | PATH=/usr/local/nmh/lib:/usr/local/nmh/bin:/usr/bin:/usr/local/bin |
---|
67 | MAILDIR=$HOME/Mail |
---|
68 | LOGFILE=$MAILDIR/procmail.log |
---|
69 | LOCKEXT=.lock |
---|
70 | |
---|
71 | ################# |
---|
72 | # CLEANUP MESSAGE |
---|
73 | ################# |
---|
74 | |
---|
75 | # Force the "From user date" to become part of header |
---|
76 | :0 Whf |
---|
77 | | formail -z -R 'From ' X-Envelope-From: |
---|
78 | |
---|
79 | ############### |
---|
80 | # MAILING LISTS |
---|
81 | ############### |
---|
82 | |
---|
83 | :0 w: nmh-workers/$LOCKEXT |
---|
84 | * ^Resent-from: *nmh-workers |
---|
85 | | rcvstore +nmh-workers |
---|
86 | |
---|
87 | # catches exmh-{announce,users,workers} |
---|
88 | :0 w: exmh/$LOCKEXT |
---|
89 | * ^TOexmh |
---|
90 | | rcvstore +exmh |
---|
91 | |
---|
92 | # Catch junk. Don't add it to "unseen" sequence (nmh only) |
---|
93 | :0 w: junk/$LOCKEXT |
---|
94 | * ^(reply-to|from|sender):.*(spammer|flamer|evil-host) |
---|
95 | | rcvstore -nounseen +junk |
---|
96 | |
---|
97 | ################ |
---|
98 | # DEFAULT ACTION |
---|
99 | ################ |
---|
100 | :0 w: inbox/$LOCKEXT |
---|
101 | | rcvstore +inbox |
---|
102 | |
---|