I only know of three other programs that try to filter mail, so I'm sorry if I don't compare it to your favorite one. Perhaps you can compare it yourself and tell me what you think? I'd love to know... my eMail address is at the top and bottom of this README.
The other progams I know of are: "filter", "mailagent" and "procmail". Here's how I think I stack up against them:
filter: ZFilter was intended to replace filter. I hated that program. :)
The old filter was clunky, and had an atrocious man page.
ZFilter's action set is a superset of the old filter's. Any thing
the old filter could do, ZFilter can do, and probably better.
ZFilter is written in PERL and is more customizable than filter,
which is written in C. ZFilter can take as many actions as you
like to any expression. Filter would let you take one.
procmail: Procmail places more emphasis on reliability and delivering mail
under miserable conditions. ZFilter works best when the operating
system isn't overloaded, the file system has enough space to hold
incoming mail, etc.. ZFilter is heading in the direction of
better reliability, but for the moment, new features are a higher
priority than delivering mail under very adverse conditions.
ZFilter offers many more actions, and abilities.
mailagent: NOTE: This comparison was written in 1997, and I haven't checked it against the current version of Mailagent.
Mailagent comes with a separate configuration program. ZFilter's config mode is internal.
Mailagent can run as a daemon process and work on an existing mail queue and mail folders. ZFilter only deals with mail as it comes in.
Both are written in perl, although mailagent comes with C source. ZFilter is tiny. Mailagent's package is nearly 500k gzipped and has over 20 directories. ZFilter takes up about 30k gzipped and contains only two files.
Both programs probably have much different styles of displaying summaries, but I've never seen mailagent's, so I don't know what the differences are specifically.
Mailagent doesn't have commands for adding/removing people from lists per se, but has a server to process message bodies for commands. ZFilter can search message bodies for whatever you like, but is much clunkier than Mailagent about it.
Mailagent doesn't have commands for dealing with counters and permanent variables.
There are numerous subtle differences and minor features in both programs that are not supported in the other. I haven't made a serious effort to catalog these, but they will become apparent over time to anyone who switches. If there is a feature of any other program that you especially like and would like to see in ZFilter, please eMail me and I'll see what I can do.
Here is a short Mailagent <-> Zfilter command set showing what command equivalents are. ZFilter does not go into different "states" during message processing, nor does it act as a daemon process, so some of Mailagent's commands are not applicable to ZFilter. They are marked with n/a and a comment is made for them.
There are often command aliases/synonyms to let you use Mailagent commands in ZFilter if you came from that background. They are in parentheses under the command name.
Items marked with a "*" are not directly supported.
ZFilter and Mailagent treat the output of commands differently. Mailagent mails it to the owner of the program, ZFilter stores it in a variable called "result" and it is lost unless you explicitly do something with it.
|*||addlist||Add to list. Can be emulated in |
Mailagent by server commands in
the message body if present.
|after||at/non-relative||Runs a command after a certain|
time. (non-relative only)
|*||after||ZFilter's after command runs|
another command either immediately
or after a specified time.
|back||run + take||Runs a program & takes actions|
based on it's output
|beep||page||(as an argument; also annoy, or biff)|
|begin||n/a||Enters a new state|
|biff||page||(or annoy, or biff)|
|macro||*||Lets you create a macro|
|nop||(leave empty)||No-operation. To not take |
actions to an "if" statement,
simply do not put any after it.
|once||(default)||Only take the command once|
|process||n/a||Process and execute Mailagent|
|queue||n/a||Re-Queue the message to process|
|record||n/a||Record message, switch to SEEN|
mode if it has been recorded before.
|reject||*||Abort the current action and|
reset to default action.
|require||load||(or get, or require)|
|restart||*||Restart rule file|
|server||n/a||Treat message body as server|
|split||*||Split up the message into several|
|umask||umask||Changes process's umask|
|unique||unique||(and the var. "unique" as a shortcut)|
|vacation||set,canned||Turns vacation mode on and off|
(when on, tells people who write
to you that you're on vaction)