One of the strong points of exmh is its support for mail filtering systems that file messages into different folders as they are delivered. Filters look for patterns in the mail headers. For example, you can put all mail from your boss into one folder and all mail from a mailing list or digest into another folder. The standard MH mail filtering system is described in the Chapter Processing New Mail Automatically. You can also use the procmail system or even write your own.
CAUTION: If you use the .maildelivery file to filter messages, you should always have a default action in the file that refiles the messages into your inbox (or some catch-all folder). If you do not supply a default, you get the default action for your system, which might not be what you want. If neither you nor the system provides a default action, mail that does not match a filter may be discarded!
field value action result command
The field is the header field (line) you are matching -- or the default keyword. The very last entry labeled default is the most important entry in the whole file. Without a good default, the maildelivery system seems happy to discard arriving messages that don't match other entries.
value is a string to match in the specified field. It is not case-sensitive.
The action is one of the following. The > (or "file") action concatenates the message onto the named file. The | (or "pipe") action runs the message through the following command. The + action refiles the message into the named folder. The + is supported only if you patch slocal with the patch that comes with exmh. You can also get the refile behavior by piping the message into the rcvstore MH library program.
The result is one of the following. The A result says to consider the message delivered if it matches, no matter if it has matched something else. The ? result says to consider the message delivered if it matches and not to try to match a message that is already considered delivered. Thus, the order of the ? entries is significant. The R result says to perform the action and never consider the message delivered.
A .maildelivery file that goes with multidrop incing contains a number of entries that concatenate matching messages onto a file:
Example: .maildelivery file for multidrop inc
#field value action result command #----- ----- ------ ------ ------- default - pipe R "popup -m 'New mail from $(reply-to)' -dl 1&" Subject TAX > ? Mail/in.tax Subject mxedit > ? Mail/in.mxedit X-Filters-Matched mxedit > ? Mail/in.mxedit to welch > ? Mail/in.personal X-Filters-Matched ouster > ? Mail/in.tcl To tclusers > ? Mail/in.tcl cc tclusers > ? Mail/in.tcl subject " tcl" > ? Mail/in.tcl default - > ? Mail/in.inboxIf you use multidrop-style inc, then you also need a .xmhcheck file that specifies the correspondence between inbox files and folders. If your site uses POP to access mail stored at remote hosts, you can specify the host and username used to access the remote mail. Note that it is not strictly necessary to fetch remote mail from different mail hosts into different folders; you could fetch everything into inbox. Here is an example:
Example: .xmhcheck file
personal Mail/in.personal mxedit Mail/in.mxedit tcl Mail/in.tcl tax Mail/in.tax inbox Mail/in.inbox work mailhost.my.com myname school mailhost.my.edu mynameYou can also pipe messages into programs. The MH rcvstore program is very useful. It puts an arriving message directly into a folder. Unfortunately, rcvstore is in the MH library directory. That directory probably isn't in your search path. Type in its complete pathname, or make a symbolic link to the program and specify that in your pipeline.
The Example below shows the presort inc style.
Example: .maildelivery file for presort inc
subject "Sun-Spots Digest" | A ".mhto +sunspots -create" to "sunflash" | A ".mhto +sunspots -create" to "ravenscroft" | A ".mhto +dl/ravens -create" to "TodayatXerox" | A ".mhto +today -create" to "Modula3" | A ".mhto +m3 -create" to "nceg" | A ".mhto +nceg -create" to "WRC_Systems_Reports" | A ".mhto +tech -create" to "pencomputing" | A ".mhto +pencompute -create" default - | A ".mhto"The .mhto program is merely a symbolic link (in your home directory or another directory in your UNIX command search path) to the MH rcvstore program (in the MH library directory). The | says to pipe the message into the program. The A result says to perform the action upon a match, regardless of whether the message is considered delivered already. On a match, consider the message delivered. So, the difference between ? and A actions is that multiple A entries might match on a given message, whereas only one ? will.
Finally, exmh comes with a patch to the MH slocal program that simplifies the process of piping a message into rcvstore. It adds the + command. (I switched from A to ? for no particular reason.) For example:
Example: .maildelivery file for exmh-modified slocal
subject "Sun-Spots Digest" + ? sunspots to "sunflash" + ? sunspots to "ravenscroft" + ? dl/ravens to "TodayatXerox" + ? today to "Modula3" + ? m3 to "nceg" + ? nceg to "WRC_Systems_Reports" + ? tech to "pencomputing" + ? pencompute default - + ? inboxAgain, remember that the default entry is very important!
[Table of Contents] [Index] [Previous: Using Another Editor] [Next: Tips]
This file is from the third edition of the book MH & xmh: Email for Users & Programmers, ISBN 1-56592-093-7, by Jerry Peek. Copyright © 1991, 1992, 1995 by O'Reilly & Associates, Inc. This file is freely-available; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. For more information, see the file copying.htm.
Suggestions are welcome: <Brent.Welch@eng.sun.com>