2002-01-07  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Version.py (TMDA): 0.43+ --> 0.44.

2002-01-06  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDARC): Let tmda-filter catch the exception if
	there is one raised when trying to read the ~/.tmdarc.

2002-01-05  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Errors.py: import of sys and Defaults no longer necessary, and
	leave the exit EX_TEMPFAIL.to tmda-filter.

2002-01-04  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (make_msgid): Add a random integer to the message id to
	strengthen its uniqueness.

2002-01-03  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (LOGFILE_INCOMING): Replaces LOGFILE.

	(LOGFILE_DEBUG): New logfile to hold the tracebacks generated by
	uncaught exceptions.

2001-12-27  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (unixdate): New function to return a date string in the
	same format as the UNIX `date' command.

2001-12-20  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Version.py (TMDA): 0.42+ --> 0.43.
	(TMDA): 0.43 --> 0.43+.

	* Errors.py: New module to hold TMDA custom exceptions.
	
2001-12-17  Matt Armstrong  <matt@lickey.com>

	* Cookie.py (make_keyword_cookie): Substitute '?' for keyword
	chars not part of an RFC2822 atom.  This prevents us from creating
	an invalid keyword address.

2001-12-17  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Cookie.py (make_sender_cookie): Lowercase the address before
	generating the cookie.  Otherwise, mixed or uppercase sender
	addresses will fail verification.
	Patch contributed by Brian Lalor.

2001-12-15  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Version.py (ALL): Change SUMMARY to ALL.

2001-12-14  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* MTA.py (Sendmail.__init__): New class to support Sendmail.  We
	just inherit from the MTA superclass with no method overrides.

	* Defaults.py: Add support for Sendmail.

2001-12-13  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Remove PYTHON_VERSION, PLATFORM, and
	DELIVERY_AGENT.  This info is now kept in Version.py.

	* Version.py: New module to keep all versioning information in one
	easily accessible place.

2001-12-12  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (FINGERPRINT): New list which contains the headers
	to be used to create X-TMDA-Fingerprint.

	* Cookie.py (make_fingerprint): New function to create an HMAC
	from one or more message headers.

2001-12-11  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (PURGED_HEADERS): New variable specifying a list of
	headers to remove before sending outgoing mail.

2001-12-09  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (DELIVERY_AGENT): Modify DELIVERY_AGENT to use
	distutils.util.get_platform() if available which is more
	descriptive than sys.platform.
	
2001-12-08  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py: Only import time once at the toplevel.

	* Defaults.py: Remove TIMEZONE, and import the Util module after
	/etc/tmdarc and ~/.tmdarc are read so TZ can be set there if need
	be.
	
2001-12-07  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (MESSAGE_FROM_STYLE):  Add an `unquoted' option
	which is similar to `angles' except that the fullname is not
	double quoted.

2001-12-04  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.43 development.

	(CONFIRM_ACCEPT_CC): New variable specifying an e-mail address to
	send the confirmation replies.
	Patch contributed by Matt Armstrong.

2001-11-30  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (make_msgid): New function to create and return an
	rfc2822 compliant Message-ID string.

	(make_date): New function to create and return an rfc2822
	compliant Date string.

	* Defaults.py (PID): Store the process id here so all areas of the
	code can access it without having to re-fetch it.

2001-11-28  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* FilterParser.py (FilterParser.firstmatch): Add support for DJB's
	constant databases via M. J. Pomraning's python-cdb extension
	module.  The `to-cdb', and `from-cdb' source specifiers were
	added.

	* Util.py (findmatch): Bugfix for the `@=' handling syntax.  Now
	split on `@=' using only the last `@'.  This is in case you start
	getting spammed from "@="@randomdomain.com, you will be able to
	match this using the current syntax.
	Patch contributed by Ron Bickers.
		
2001-11-26  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* FilterParser.py (FilterParser.firstmatch): Bugfix.  The DBM
	support was broken for DBM backends that store information in
	multiple external files instead of just one.  The
	os.path.exists(match) check was removed to fix this.

2001-11-20  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.42 development.

2001-11-19  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (filter_match): New function to open a filter file and
	try to match the given addresses.  Used to test addresses against
	your filter files with tmda-filter/inject --filter-match.

	* FilterParser.py: Add some exception classes that will be
	utilized only if an instance is created with checking=1, which at
	the moment is only if tmda-filter/inject are using the
	`--filter-match' option.

	Also, 'break' within nested for loops only exits one level.  For
	those cases, added a second break if self.action was set.  This
	oversight was causing to/from-dbm and body/header-file matches to
	be ignored.
	
2001-11-17  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Look for FILTER_INCOMING and FILTER_OUTGOING in the
	environment first, which are set via tmda-inject/tmda-filter
	command-line options.

	* FilterParser.py: Moved filter file documentation into
	config-filter.html.
	
2001-11-15  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Change default location of FILTER_INCOMING and
	FILTER_OUTGOING to ~/.tmda/filters/ instead of ~/.tmda/lists/.

	* Util.py (gethostname): socket module was not returning the FQDN
	on Solaris.  So now we at least attempt to first use
	socket.getfqdn() which does work on Solaris, but only on Python2.
	
2001-11-14  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (BARE_APPEND): New variable specifying the filename
	to append the recipient address of outgoing messages when <action>
	is 'bare=append'.

	* FilterParser.py: Document bare=append <action>.

	* Defaults.py (ACTION_OUTGOING): New variable replacing
	COOKIE_TYPE to specify the default tag on outgoing messages.

	(ACTION_INCOMING): New variable to specify how incoming messages
	are disposed of by default.

2001-11-08  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDARC): Exit(75) to force a deferral if any
	exceptions arise when running execfile on TMDARC.  This is
	necessary for non-qmail MTAs which bounce rather than defer by
	default.

	* Util.py (findmatch): addrs should now be a list to iterate over.
	
	* FilterParser.py: Add support for incoming filter files.

	* Defaults.py: Remove: BOUNCE_BLACKLIST_CC, BOUNCE_CONFIRM_CC,
	BOUNCE_REVOKED_CC BLACKLIST, WHITELIST, SACRED_FILE, REVOKED_FILE,
	BARE_FILE, DATED_FILE, EXP_FILE, EXT_FILE, KEYWORD_FILE,
	SENDER_FILE, WHITELIST_TO_BARE, WHITELIST_AUTO_APPEND

	Add: FILTER_DROP_CC, CONFIRM_CC, FILTER_BOUNCE_CC,
	FILTER_INCOMING, FILTER_OUTGOING, CONFIRM_APPEND

2001-11-07  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* FilterParser.py (FilterParser.firstmatch): Catch the TypeError
	exception which is returned by Python 1.x instead of
	AttributeError when string.split is run on None.

	* Defaults.py (FILTER_INCOMING): New variable specifying the
	location of the 'incoming' filter file.

	* FilterParser.py: Document outgoing <action> aliases: 'as' and
	'explicit' for exp, 'extension' for ext, and 'keyword' for kw.

2001-11-06  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (FILTER_OUTGOING): New variable specifying the
	location of the 'outgoing' filter file.

	* FilterParser.py: New file implementing the parser for TMDA
	filter files.

2001-11-04  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.41 development.

2001-11-01  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TIMEZONE): New variable specifying the timezone
	(TZ) other than that of the local host.

2001-10-31  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Add 'exim' as another option for
	MAIL_TRANSFER_AGENT, and change BOUNCE_ENV_SENDER default if MTA
	is Exim.

	* MTA.py: Move the Postfix instance variables and methods up to
	the MTA superclass.  Subclasses automatically inherit this
	functionality.  The Qmail subclass then overrides all of it since
	it's unique.  Also, add an Exim subclass.

	(TMDA_VERSION): Begin 0.40 development.

2001-10-29  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (findmatch): Downcase each address for case-insensitive
	comparison with list.

2001-10-25  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (MESSAGE_FROM_STYLE): New variable that specifies
	how `From' headers should look on outgoing tagged messages.

	(KEYWORD_FILE): New variable pointing to the list file containing
	destinations that should receive keyword tagged messages.

2001-10-24  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Cookie.py (make_keyword_address): Lowercase keyword before
	creating the keyword address.  E-mail addresses are
	case-insensitive.
	
2001-10-23  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Cookie.py (make_keywordmac, make_keyword_cookie,
	make_keyword_address): New functions to return an HMAC, a cookie,
	and an e-mail address based on a 'keyword'.

2001-10-17  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.39 development.

2001-10-15  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* MTA.py (Postfix.deliver): Bugfix.  The exit code from
	LOCAL_DELIVERY_AGENT was not being propagated to the MTA.  
	(e.g, tmda-filter returns 0 if procmail returns 77.)  
	The fix is to do some more processing on the exitcode before
	passing it to sys.exit.  Patch contributed by Matt Armstrong.

2001-10-10  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* MTA.py (Postfix.deliver): Check whether LOCAL_DELIVERY_AGENT
	actually exists and defer if it doesn't.  Otherwise, pass the
	message to LOCAL_DELIVERY_AGENT for final delivery.

	* Defaults.py (LOCAL_DELIVERY_AGENT): Remove os.path.exists check
	since it's not necessary to verify this upon each import of
	Defaults.
	
2001-10-08  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Removed INJECT & INJECT_FLAGS.

2001-10-05  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* MTA.py (Postfix.deliver): Exit the deliver method by the same
	exit code as that of LOCAL_DELIVERY_AGENT's exit status.

	* Util.py: Replaced ERR_CONFIG and ERR_IO with EX_TEMPFAIL.
	
	* Defaults.py: Replace qmail-specific exit status codes with
	general codes that work under both Postfix and qmail.  An
	"success" code and a "defer" code were all that were necessary in
	the modules anyway.
	
	(LOCAL_DELIVERY_AGENT): New variable to specify the path to the
	local delivery agent, which is necessary if not running qmail.
	
	(MAIL_TRANSFER_AGENT): New variable to specify which mail transfer
	agent software we are running.
	
2001-10-02  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (RECIPIENT_DELIMITER): New variable specifing the
	character used to separate user names and address extensions.
	
	* Cookie.py (make_confirm_address): Replace references to `-' with
	RECIPIENT_DELIMITER.

	(make_sender_address): Ditto.

	(make_dated_address): Ditto.

	* Defaults.py (SENDMAIL): New variable defining the path to the
	sendmail program or sendmail compatibility interface.

2001-09-19  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (GLOBAL_TMDARC): Add a global configuration file
	(/etc/tmdarc) that is read first before ~/.tmdarc.  

	(TMDA_VERSION): Begin 0.38 development.

2001-09-18  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Cookie.py (make_sender_cookie): Support variable length HMACs
	via HMAC_BYTES.

	(confirmationmac): Ditto.

	(datemac): Ditto.

	* Defaults.py (HMAC_BYTES): New variable specifying the number of
	bytes for all HMACs.

2001-09-17  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.37 development.

2001-09-13  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (REVOKED_FILE): New variable pointing to the file
	which contains "revoked" recipient addresses.

	(BOUNCE_REVOKED_CC): New variable specifying the address to CC
	"revoked" bounces.

2001-09-12  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.36 development.

2001-09-10  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (WHITELIST_TO_BARE): Turn on by default.

2001-09-05  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (WHITELIST_AUTO_APPEND): New variable to toggle
	whether tmda-filter should automatically append a confirming
	sender's address to the WHITELIST.

	* Util.py (append_to_file): New function which appends a string to
	a textfile.
	
2001-09-04  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (CONFIRM_MAX_MESSAGE_SIZE): New variable that
	specifies the maximum size the a message can be before its body is
	excluded from the confirmation request/acceptance notices.

	(CONFIRM_MAX_MESSAGE_SIZE): Change default to 50000 bytes.

2001-09-01  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_HOMEPAGE): Use sf.net instead of
	sourceforge.net (shorter alias).

2001-08-29  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.35 development.

2001-08-28  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.34 development.

	(mode): Remove check for VIRTUALDOMAINS for sites that don't have
	any such file.
	
2001-08-27  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (USEVIRTUALDOMAINS): Replaces QMAILVIRTUALDOMAINS.
	
2001-08-24  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (QMAILVIRTUALDOMAINS): New variable to toggle qmail
	virtualdomains support.

	(VIRTUALDOMAINS): New variable pointing to qmail's virtualdomains
	control file.

	* Cookie.py (make_confirm_address): New function to create full
        confirmation-style addresses (both 'accept' and 'done).

	* Defaults.py (TMDA_VERSION): Begin 0.33 development.

2001-08-21  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (SACRED_FILE): New variable pointing to a filename
	which contains a list of sacred keywords, the prescence of which
	automatically zaps the mail into your mailbox.
	Patch contributed by Binesh Bannerjee.

2001-08-15  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (format_timeout): Added `Y' for years, and `M' for
	months.

	(seconds): Ditto.

2001-08-13  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.32 development.

2001-07-26  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.31 development.

	(LOCALS): Variable no longer necessary.

	(USERPREFIX): Ditto.

2001-07-23  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (maketext): Add error checking for template variables.

	* Defaults.py: Remove BOUNCE_DATED_CC, BOUNCE_SENDER_CC, and add
	BOUNCE_CONFIRM_CC.

	(DATED_TEMPLATE_VARS,SENDER_TEMPLATE_VARS): New variables to allow
	'dated' and 'sender' address variables to be included in the
	templates.

2001-07-22  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Remove CONFIRMATION_MODE, BOUNCE_DATED_TEMPLATE,
	BOUNCE_SENDER_TEMPLATE, and add CONFIRM_REQUEST_TEMPLATE.  

2001-07-20  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Change default location of former dot-tmda files to
	lie within DATADIR/lists/. (e.g, ~/.tmda-bare --> ~/.tmda/lists/bare)

2001-07-17  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py: Change default location of dot-tmda files to lie
	within DATADIR.  (e.g, ~/.tmda-bare == ~/.tmda/bare.txt)

2001-07-16  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (CONFIRM_ACCEPT_TEMPLATE): New template for
	notification that a confirmation request was accepted.

	(CONFIRM_ACCEPT_NOTIFY): New variable to toggle generation of
	confirmation acceptance notices.

2001-07-12  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (BOUNCE_DATED_TEMPLATE): Allow for an alternate
	template based on CONFIRMATION_MODE.
	
	(BOUNCE_SENDER_TEMPLATE): Ditto.

	* Util.py (writefile): New function to write contents to a
	new file.
	
2001-07-11  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (CONFIRMATION_MODE): New variable which turns
	confirmation mode on or off. 

	(DATADIR): New variable for TMDA data-manipulation directory.

	* Cookie.py (confirmationmac,make_confirm_cookie): Add two new
	functions for creation of confirmation-style cookies.

	* Defaults.py (TMDA_VERSION): Begin 0.30 development.

2001-07-03  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.23 development.

2001-06-25  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.22 development.

2001-06-13  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (findmatch): Add support for custom matching syntax.
	@=domain.dom matches both @domain.dom and @*.domain.dom.  The
	rationale is that this situation is common enough to justify the
	special syntax.

2001-06-12  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (findmatch): Function re-written to support patterns
	based on Unix style wildcards.

2001-06-07  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.21 development.

2001-06-06  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (BOUNCE_DATED_TEMPLATE): Define the default template
	as ../templates/*.txt.

	(TMDA_VERSION): Update version number.

	(BOUNCE_SENDER_TEMPLATE): Ditto.

2001-06-04  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (maketext): Accept the fullpathname of the template file
	instead of assuming it lies in ../templates/.

	* Defaults.py (BOUNCE_ENV_SENDER): New variable to specify the
	envelope sender of bounce messages.

	(DELIVERY_AGENT): New variable containing TMDA version info.

	(BOUNCE_DATED_TEMPLATE): New variable specifying an optional
	custom template for 'dated' bounce messages.

	(BOUNCE_SENDER_TEMPLATE): New variable specifying an optional
	custom template for 'sender' bounce messages.
	
2001-06-01  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (format_timeout): A more efficient implementation which
	only contains one re.match call.  Also, return the singular
	version of the unit if the value is 1.
		
	(seconds): Ditto, plus fix a bug in the sys.exit() call where
	Defaults wasn't being imported.
	
2001-05-29  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (file_to_list): Allow inline comments in the .tmda-*
	files.  For example:
	friend@fbi.org       # My friend at the FBI

	(substring_match): Ditto.

	* Defaults.py (TMDA_VERSION): Begin 0.16 development.

2001-05-28  Jason R. Mastaler  <jason@mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.15 development.

	* Util.py:  Import Defaults only for functions that need them.
	Fixes tmda-keygen.

2001-05-24  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (ALLOW_MODE_640): New variable to support mode 640
	tmdarc files which are necessary when running TMDA through a qmail
	relay.

2001-05-23  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (USERPREFIX): New variable introduced to support
	"pre-extension" definitions in /var/qmail/users/assign.

	* Util.py (findmatch): New function to facilitate matching
	substrings for the special-case addresses.  Used by tmda-inject.

2001-05-22  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (substring_match): Moved Greylist.py into this function.
	Greylist.py now obsolete.

2001-05-17  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (LOCALS): Introduced new variable to support
	virtualdomain detection.

2001-05-13  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Cookie.py (make_dated_cookie): Support `X-TMDA: dated timeout'
	(to override Defaults.TIMEOUT)

2001-05-10  Jason R. Mastaler  <jason@mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.13 development.

2001-05-02  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.12 development.

2001-05-02  Jason R. Mastaler  <jasonrm@nightshade.acl.lanl.gov>

	* Util.py (maketext): New function to make text from a template file.

2001-05-01  Jason R. Mastaler  <jasonrm@nightshade.acl.lanl.gov>

	* Defaults.py: To speed startup, the user's .tmdarc is now read
	first with default values computed only if necessary.

2001-04-29  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDARC): Add support for alternate config-file.

2001-04-28  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Begin 0.11 development.

2001-04-27  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Util.py (hexlify): New function to convert binary data strings to
	their hexidecimal notation.
	(unhexlify): New function to convert hex back to binary.

	(gethostname): Replaced socket.getfqdn() with
	socket.gethostbyaddr(socket.gethostname())[0] to get the machine's
	FQDN since the former is only available in Python >= 2.0.

	* Cookie.py (datemac): Replace binascii.hexlify with my own binary
	to hex function to support Python < 2.0.
	(make_sender_cookie): Ditto.

	* Defaults.py (mode): Ditto.

	* HMAC.py (_strxor): Python version earlier than 2.0 don't have
	built-in string methods; replace with string.join().

2001-04-26  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Bump up to a new major release level
	(0.10) indicating a major functionality change (HMAC).

	* Cookie.py (datemac): New function to compute an HMAC for a given
	date in time.
	
	* Defaults.py (BLOCK_CIPHER): Now obsolete.
	(CRYPT_IV): Ditto.
	(HASH_FUNCTION): Ditto.
	
	* Cookie.py (make_cipher_object): Function now obsolete.
	(make_sender_cookie): Generate cookies with HMACs.
	(make_dated_cookie): Generate cookies with HMACs.
	(get_cookie_date): Function now obsolete.
	(make_dated_address): New HMAC format.

	* HMAC.py: New module for HMAC implementation.

2001-04-25  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Defaults.py (TMDA_VERSION): Release v0.02.
	Added BOUNCE_BLACKLIST_CC, BOUNCE_DATED_CC, BOUNCE_SENDER_CC

2001-04-24  Jason R. Mastaler  <jasonrm@nightshade.la.mastaler.com>

	* Greylist.py (match): function now takes an extra argument
	`listfile' which is the file containing addresses/regex to match
	against, so that it can be used for both the black and white lists.

