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.
Mailagent | ZFilter | Notes |
---|---|---|
* | addlist | Add to list. Can be emulated in Mailagent by server commands in the message body if present. |
annotate | addheader | (or annotate) |
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. |
apply | process | |
assign | set | |
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) |
bounce | bounce | |
* | create | |
* | comment | |
do | do | |
* | dec | |
delete | delete | |
feed | xmessage | (or feed) |
forward | forward | |
give | pipecontent | |
* | inc | |
leave | leave/ignore | |
* | maillist | see "addlist" |
macro | * | Lets you create a macro |
message | canned | |
* | name | |
nop | (leave empty) | No-operation. To not take actions to an "if" statement, simply do not put any after it. (or nop) |
notify | ||
once | (default) | Only take the command once |
pass | xcontent | (or pass) |
* | pdec | |
* | pinc | |
pipe | pipe | |
post | post | |
process | n/a | Process and execute Mailagent commands. |
protect | mode | (or protect) |
purify | xheader | (or purify) |
* | remlist | See "addlist" |
queue | n/a | Re-Queue the message to process later. |
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 |
resync | resync | |
run | execute | (or run) |
save | save | |
select | during | (or select) |
server | n/a | Treat message body as server commands. |
split | * | Split up the message into several |
store | savecopy | |
strip | remheader | |
subst | subst | |
tr | xlate | |
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) |
write | saveover | |
* | zap |