Modification history

ver. 2.8: Added at, after, during, nop, dnsbl commands. Tightened code to be a bit nicer to PERL 5.

ver. 2.7: Experimental "-U (user)" command. This will obviously only work if you're running as root (short of serious security holes in your system). Added the "ip" variable and resolving the IP address of of the sender's hostname. Added "quote" and "mailresult".

ver. 2.6: More bugfixes, adding or removing from lists shouldn't abort the entire program if there's a problem. Canned should be fixed, I accidentally trashed it when I was neatening up from 2.4. How embarassing! ZFilter practices safe file-locking via it's own method & flock(2). Zfilter tries to figure out if you can use flock(2) during config mode and warns the user if it doesn't look like your system supports it.
ZFilter has signal handling, (most notably, it tries to save the letter in memory to disk before dying). ZFilter is better about failed attempts to lock files or save mail. If it can't save the message to the mail folder, inbox or a "dead letter" file in the user's home directory, it sends panic email to the appropriate postmasters, the sender and the user (it will keep re-queueing the error message until it eventually gets through or someone explicity deletes the error message from the sendmail incoming mail queue). Fixed the bug in "unique" that flagged messages with no content. Added the "empty" variable so you can delete them explicitly if you want to.
There is an explicit "Ignore" argument for the command line. For what it's worth, you can now use a single "-" to prefix multiple arguments to zfilter that don't need any additional information. Like, you can now say "zfilter -sr" on the command line because neither option "s" nor option "r" need to know anything else.

ver. 2.5: The "Bugfix" version. :) But there's new stuff too. Fix for "addlist" and "remlist" when used internally. Improved Xlate a bit to take "/"s between vars.
A bit more paranoid about "xcontent" and programs that might not return what we're hoping for. The command parser now accepts multiple-word arguments (if they're quoted).
Fix for file permission problems. Fixed potential problem to "canned" and "mail" which might have started "filter fights". ZFilter now uses "sendmail" instead of "mail" for actual delivery of outbound mail. Tightened up internal code for better
efficiency and easier readability. ZFilter now logs when it won't respond to a message that's come from another filter. Zfilter won't let you process a rules file that's already being processed.
Added "do" and "require" to help people load their own modules. Added "comment", "unique" command and variable. Added some cool new abilities to form letters. You can now interpolate variables as commands or command arguments. Added the "page" command.

ver. 2.4: Reorganized several of ZFilter's commands and functions for better readability. Minor bugfixes, mostly some
applications of "post". Revision to some parts of this README to make them more understandable.

ver. 2.3: Added xheader, xcontent, xmessage, resync, umask and mode Bugfixes for all the 2.2 commands.

ver. 2.2: Added bounce, xlate, addheader, remheader, setheader, take keepheader, post, process, saveover and "bounce" as a separate command. Bugfixes.

ver. 2.1: ZFilter no longer cares whether "filter" is in the subject line of forwarded or canned messages. It now plays with the message headers to identify the message as having been filtered. It still doesn't respond to messages with the word "filter" in the subject line for backward-compatibility and common sense. Bugfix to saving mail to a folder that should _hopefully_ clear up any wierd problems with "phantom mail" that messes with the minds of "You have new mail" alarms. You might have either gotten "You have new mail" messages when you didn't, or not gotten any messages when you did.

ver. 2.0: Added minor listserv functions. ZFilter can now add and delete email addresses from lists, both "on-the-fly" in a rules file and from the command line. Also supports displaying lists from the command line and searching lists for a user. Added -u for syntax help. Added -? -h -H and /? as synonyms for -u just in case. Did I mention I'm paranoid?

ver. 1.9: Minor bugfix for log-clearing. Added "bounce" as a synonym for "forward". Added the "name" command. ZFilter now sets the status of all the messages it parses to "N" (so that if you save to a folder, your messages still are flagged as being new).

ver. 1.8: Clear logs becomes "summarize and clear logs". Zfilter now uses DBM files to summarize old logs before deleting them. The end result uses about 1/3 the disk space of keeping large logs around. Summaries are not affected if you tell Zfilter to clear the logs any more since old summaries are stored. Also added command-line options to completely reset the logs and the summaries.

ver. 1.6: Scrapped the old expression parser and did a new one. It's tighter, won't allow "or" and "and" instead of (| and &) BUT it will take sub-expressions in parentheses, and it fixed one or two bugs in the old one dealing with "never" and "always" (so embarrasing too... they were supposed to be easy!)
And it's marginally more idiot-proof. BIG CHANGE; The parser allows you to compare variables like this; "if ( a > b ) ..." which can be nice, BUT it also means that when you do a
regex search ( like when you use ? or # in an "if" statement) you MUST put quotes around text you want to find if it isn't

another variable. Like so:

if( a ? b ) ... Searches to see if the contents of variable
"b" appear in variable "a".
if( a ? "b" ) ... Searches to see if the letter "b" appears
in the variable "a".

ver. 1.41: Precious little. Bugfix, added "chain-detection".
prior to ver. 1.41: Whatever I did is lost to history...

Go back to my Home Page
Go back to Table of Contents
Send me e-mail!