TMDA 0.48 is released
"Jason R. Mastaler" <[email protected]> Fri, 1 Mar 2002 15:16:19 -0700
| Newsgroups | gmane.mail.spam.tmda.announce |
|---|---|
| Message-ID | <[email protected]> |
TMDA 0.48 is released. Lots of exciting changes and new features in this release. Get it from <URL:http://software.libertine.org/tmda/releases/tmda-0.48.tgz> ===================================================================== What's new? * TMDA has acquired the ability to handle local mail delivery itself. It can now do safe and reliable delivery to qmail-style Maildirs and mboxrd-format mboxes, as well as program (pipe) delivery, and forward to a different e-mail address. This is done by specifying a delivery instruction as an option to the ok,accept,deliver actions in your incoming filter file. For example, from [email protected] deliver=|/usr/ucb/vacation jason from-file ~/.tmda/lists/mlists deliver=~/Maildir.mlists/ See the TMDA Filter Specification for details. In most cases, this new feature means you will be able to handle all your mail delivery needs from your TMDA incoming filter, rather than from TMDA + procmail/maildrop, or TMDA + dot-qmail files. The next step (perhaps by next release) is to make this mechanism the default delivery backend for non-qmail users, so you will no longer have to specify LOCAL_DELIVERY_AGENT in your .tmdarc. * Added an -autodbm argument to the 'from-file' and 'to-file' filter sources to match the existing -autocdb capability. -autodbm automatically maintains a DBM file for the specified TMDA list file. No more rebuilding your DBM files by hand, cron, or scripting. See the TMDA Filter Specification for details. * Added the ability to use 'from*' rules in outgoing filters. See the TMDA Filter Specification for details. * Lots of internal reorganization. * Bugfixes. ===================================================================== Here are the new additions to UPGRADE: * As of v0.48, TMDA is released under the GNU General Public License (GNU GPL). See COPYING for more information. * qmail users now must invoke tmda-filter with 'preline' from their dot-qmail files. e.g, |preline /usr/bin/tmda-filter * Exim users must configure Exim to add a Return-Path header to messages from their address_pipe transport. See the "TMDA Pre-Configuration" page (config-pre.html#exim) for more details. * The 'to-autocdb' and 'from-autocdb' sources have been removed. If you use the autocdb functionality, you will need to change these sources to 'to-file' or 'from-file', respectively, and add the '-autocdb' flag. The match field is the name of the textfile without the '.cdb' extension, as before. # old rule from-autocdb ~/lists/whitelist_confirmed accept # new rule from-file -autocdb ~/lists/whitelist_confirmed accept * The contrib/list2cdb and contrib/list2dbm scripts have been removed. Using the '-autocdb' or '-autodbm' argument to from-file or to-file is much easier than rebuilding your DB files manually. See the TMDA Filter Specification for more details on these options. * The 'to-mailman' and 'from-mailman' sources have changed. You no longer specify the attribute to search with '.<attr_name>'. Instead these sources now take the '-attr' argument with the attribute as the option. # old rule from-mailman.members ~mailman/lists/mylist/config.db accept # new rule from-mailman -attr=members ~mailman/lists/mylist/config.db accept * The filter file parser used to ignore all syntax errors in filter files. This means that your file might not be working as you want but you wouldn't know it. This behavior has been changed. Every error that the filter parser encounters is saved and, after the entire file has been processed, an exception is thrown and written to the debug log. If you want to check your filter files, make sure you have LOGFILE_DEBUG defined in your ~/.tmdarc and run tmda-filter with the '-M' switch. Run 'tmda-filter -h' for more information about '-M'. Then examine the contents of your debug log. ===================================================================== ChangeLogs since release 0.47 2002-03-01 Jason R. Mastaler <[email protected]> * TMDA 0.48 is released. 2002-02-27 Jason R. Mastaler <[email protected]> * THANKS (Contributions): Add Charles Cazabon. * COPYING: New file containing the GNU General Public License text. This replaces COPYRIGHT. 2002-02-25 Jason R. Mastaler <[email protected]> * THANKS (Contributions): Add Bill Duncan. 2002-02-21 Jason R. Mastaler <[email protected]> * COPYRIGHT: Update BSD license. 2002-02-20 Jason R. Mastaler <[email protected]> * THANKS (Contributions): Add David Lebel. 2002-02-28 Jason R. Mastaler <[email protected]> * Cookie.py (make_confirm_address): Use Defaults.CONFIRM_ADDRESS if set. * Defaults.py (CONFIRM_ADDRESS): New variable. * Deliver.py (Deliver.__deliver_mbox): New method to reliably deliver a message into an mboxrd-format mbox. 2002-02-27 Jason R. Mastaler <[email protected]> * Deliver.py (Deliver.__deliver_maildir): New method to reliably deliver a message into a qmail-style Maildir. * Util.py (pipecmd): Include getmail copyright for borrowed GPL code. (wraptext): Include Mailman copyright for borrowed GPL code. (maketext): Ditto. 2002-02-26 Jason R. Mastaler <[email protected]> * Deliver.py: Run mta.stop() from tmda-rfilter instead of from every delivery method. * Util.py (sendmail): Add quotes around both the sender and recipient when calling sendmail from the shell. 2002-02-25 Tim Legant <[email protected]> * Defaults.py: Documented additional options for ACTION_OUTGOING. 2002-02-25 Tim Legant <[email protected]> * FilterParser.py (FilterParser): Fixed in_action regexp to allow the 'ok' and 'accept' actions to accept options just like 'deliver'. 2002-02-25 Jason R. Mastaler <[email protected]> * Deliver.py: New module to handle local mail delivery. 2002-02-23 Jason R. Mastaler <[email protected]> * Util.py (pipecmd): New function that runs child processes with error checking. (sendmail): New function to send e-mail with the sendmail program. * MTA.py (MTA.deliver): Use Util.pipecmd() to deliver the message. Also raise an exception rather than sys.exit(75) upon error. * Errors.py: Add DeliveryError for delivery module related errors. * Defaults.py: Remove SENDMAIL path checking; Util.sendmail() will catch any such errors. 2002-02-22 Tim Legant <[email protected]> * Util.py (build_dbm): Fixed bug; DBM was renamed to current directory instead of respecting the path. * FilterParser.py (FilterParser.firstmatch): If no rule is found, return an empty dictionary instead of None. * FilterParser.py (FilterParser.__autobuild_db): New function. (FilterParser.firstmatch): Factored above function out of 'from-/to-file' clause to clean up code. * FilterParser.py (FilterParser.firstmatch): Made autodbm functionality use a surrogate file to determine whether the DBM is up to date. This is because of the varied naming of DBM files across platforms. It was suggested by Matt Armstrong. (FilterParser._actionstr): Fixed bug introduced by new dictionary layout for incoming rules. * Util.py (build_dbm): New function, based on the list2dbm utility. * FilterParser.py (FilterParser): Added -autodbm option to 'from-file' and 'to-file'. (FilterParser.__search_dbm): New function. (FilterParser.firstmatch): Modified 'from-/to-file' clause to support the -autodbm argument. Modified 'from-/to-dbm' clause to use the new __search_dbm function. 2002-02-21 Tim Legant <[email protected]> * FilterParser.py (FilterParser): Modified 'in_action' and 'action_option' regexps to handle new option on 'deliver' action. (FilterParser.__buildactions): Allowed incoming filter actions to have options. 2002-02-21 Jason R. Mastaler <[email protected]> * Defaults.py: raise TMDA.Errors.ConfigError for tmdarc problems instead of using print; sys.exit(75). * Errors.py: Add ConfigError for tmdarc related errors. 2002-02-21 Tim Legant <[email protected]> * FilterParser.py (FilterParser.__readrule): Fixed bug. Last rule was being ignored. 2002-02-20 Tim Legant <[email protected]> * FilterParser.py (FilterParser.__parse): Cleaned up the last of the error handling. Removed self.__exception and added local variable 'exception'. (FilterParser.__adderror): Removed function. No longer needed. (FilterParser.__readrule): Now throws EOFError on end-of-file. Caught in FilterParser.__parse. 2002-02-20 Jason R. Mastaler <[email protected]> * FilterParser.py (FilterParser.read): Partially restore old behavior: allow missing filter files, but not IOErrors. (FilterParser.firstmatch): Correct Python2.2isms. 2002-02-20 Tim Legant <[email protected]> * FilterParser.py (Error): Moved __repr__ and __str__ to descendent ParsingError. (ParsingError): Added __repr__ and __str__ functions. (MatchError): New exception class. Descendent of Error. (FilterParser): Modified 'most_sources' and 'hdrbody_sources' regexps to better support detailed error checking. Added 'arg_option' regexp and 'arguments' dictionary. (FilterParser.__init__): Removed 'checking' parameter. (FilterParser.read): Removed exception handling around file opening. Now, if the file is missing or can't be opened, the exception will propagate up to tmda-filter and cause the mail to be deferred. (FilterParser.__parse): Catch parsing exceptions here and add to singleton ParsingException object. (FilterParser.__parseargs): New function. (FilterParser.__parserule): Rules now have five fields. Raise exceptions directly rather than calling __adderror. Call __parseargs to get the arguments. (FilterParser.__adderror): Removed test for 'checking'. (FilterParser.__buildactions): Change second parameter from 'rule_line' to 'source'. Raise exceptions instead of calling __adderror. Use 'source' in exception error messages. (FilterParser.__search_file): Lowercase the first field on each line before attempting to match. Add 'source' parameter to pass along to __buildactions. (FilterParser.__search_cdb): Add 'source' parameter to pass along to __buildactions. (FilterParser.firstmatch): Hoist invariant 'keys' initialization to beginning of loop. Add autocdb functionality (-autocdb argument) to 'from-/to-file' code. Remove 'from-/to-autocdb' code. 'from-/to-mailman' now use '-attr' arguments to specify which list attribute to search. 'body/headers/body-/headers-file' now all take a '-case' argument to turn on case-sensitivity. Catch exceptions where appropriate and translate to MatchError exceptions. (_rulestr): Updated to include arguments in the string. (_argstr): New function to build argument string. (_cookiestr): Now adds quotes to the second field, if necessary. * Util.py (file_to_list): Removed second parameter (list). Removed lowercasing of first field. (build_cdb): Lowercase first field. (filter_match): Removed 'checking' argument in call to FilterParser.FilterParser. 2002-02-26 Jason R. Mastaler <[email protected]> * tmda-rfilter (main): Run logit() after msg.deliver() has returned, and then mta.stop(). 2002-02-25 Tim Legant <[email protected]> * tmda-inject (main): Allow the default ACTION_OUTGOING to specify options (bare=append, etc.) rather than restricting it to bare, sender, dated. This makes it behave identically to the X-TMDA header. 2002-02-25 Jason R. Mastaler <[email protected]> * tmda-rfilter (main): Support local mail delivery when the ok,accept,deliver action contains an option specifying delivery instructions. (bouncegen): We no longer need to add Return-Path ourselves, as the MTA's local delivery agent should do this for us. 2002-02-23 Jason R. Mastaler <[email protected]> * tmda-inject (inject_message): Send mail with Util.sendmail(). * tmda-pending (release): Ditto. * tmda-rfilter: Ditto. 2002-02-22 Jason R. Mastaler <[email protected]> * tmda-pending (main): Make interactive command summary more intuitive. 2002-02-21 Tim Legant <[email protected]> * tmda-inject: Added <sender> parameter to -M switch. Made filter_match clause use that sender as parameter to Util.filter_match. (inject_message): Changed default cookie option from 'from_address' to None. 'from_address' was bogus. (main): Pass 'from_address' to FilterParser.firstmatch. This enables 'from*' rules in the outgoing filter. * tmda-rfilter (main): The 'actions' dictionary has changed semantic format and this code has been made aware of that. * tmda-inject (inject_message): Custom headers are now written directly to sendmail through 'pipeline' rather than being added to 'message_headers'. This fixes the bug where custom headers should only be added to one recipient's mail but all subsequent recipients were receiving those headers. 2002-02-28 Jason R. Mastaler <[email protected]> * sample.tmdarc: Add CONFIRM_ADDRESS. 2002-02-27 Jason R. Mastaler <[email protected]> * tmda.spec (Source0): Update download link. 2002-02-22 Jason R. Mastaler <[email protected]> * Remove list2cdb and list2bm. 2002-03-01 Jason R. Mastaler <[email protected]> * config-filter.ht: Document the instruction option to the ok,accept,deliver incoming action. 2002-02-28 Jason R. Mastaler <[email protected]> * index.ht (Links): Mention TMDA's local mail delivery agent capability up front. * config-pre.ht: Document how to make Exim add Return-Path to command pipe messages. 2002-02-27 Jason R. Mastaler <[email protected]> * features.ht (Links): Add Maildir and mbox delivery. 2002-02-25 Jason R. Mastaler <[email protected]> * features.ht (Links): Mention filtering language, local mail delivery ability, and -autocdb/-autodbm. Change HMAC link. * resources.ht (TARGET): Link to the TMDA plugin for SquirrelMail. * config-server.ht (Links): Include 'preline' in dot-qmail instructions. 2002-02-22 Tim Legant <[email protected]> * config-filter.ht: Docs and an example for new -autodbm flag on the 'from-file' and 'to-file' sources. 2002-02-21 Tim Legant <[email protected]> * config-filter.ht: Move 'from*' sources to list of incoming and outgoing sources. 2002-02-20 Jason R. Mastaler <[email protected]> * faq.ht: Update link to bbdb-normalize-tmda-addresses. * features.ht (Links): Mention OpenBSD port. * download.ht: Link to OpenBSD port. 2002-02-20 Tim Legant <[email protected]> * config-filter.ht: Documented the new argument syntax for certain sources. _______________________________________________ tmda-announce mailing list http://libertine.org/lists/listinfo/tmda-announce