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