======================================================================

If you are upgrading from a release of TMDA < 0.52:

* For its Python 2.x dependency, tmda.spec now has RPM look for the
  file "/usr/bin/python2" instead of the package "python2".

======================================================================

If you are upgrading from a release of TMDA < 0.50:

* Messages in the pending directory are no longer deleted after they
  are confirmed (or released) and delivered.  Now they are simply
  noted in the DELIVERED_CACHE file.  

* BOUNCE_TEXT_ALREADY_CONFIRMED has been deprecated.

* The confirm_accept.txt template has been modified.  The message body
  of the notification is no longer hardcoded, but rather stored in
  %(confirm_accept_text)s, which comes from one of the following
  tmdarc variables depending on context:

  CONFIRM_ACCEPT_TEXT_INITIAL
  CONFIRM_ACCEPT_TEXT_ALREADY_CONFIRMED
  CONFIRM_ACCEPT_TEXT_ALREADY_RELEASED

======================================================================

If you are upgrading from a release of TMDA < 0.49:

* Custom templates are now referred to by a template directory rather
  than individually.  Any templates found in this directory will be
  used, otherwise the default templates will be used.  You can specify
  a custom template directory in one of two ways:

  A TEMPLATE_DIR setting in your tmdarc.  This replaces use of
  CONFIRM_ACCEPT_TEMPLATE and CONFIRM_REQUEST_TEMPLATE.

  tmda-filter's -t option, which replaces both -A and -R.

* The 'unquoted' and 'parens' options to MESSAGE_FROM_STYLE have been
  deprecated.  'angles' now double-quotes the fullname only when
  necessary.

======================================================================

If you are upgrading from a release of TMDA < 0.48:

* 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.

======================================================================

If you are upgrading from a release of TMDA < 0.47:

* tmda-clean has been removed from the distribution.  The new
  tmda-pending script can be used to provide identical functionality
  by combining its `-q', `-b', `-d', and `-O' options.  tmda-pending's
  `-h' option provides an example of this.

======================================================================

If you are upgrading from a release of TMDA < 0.46:

* Python version 2.0 or greater is now required.

======================================================================

If you are upgrading from a release of TMDA < 0.45:

* Filter file rules must now start at the beginning of a line.  e.g,

  # invalid
    from johndoe ok

  # valid
  from johndoe ok

  See the documentation for more details on filter file syntax.

* 'headers' and 'body' filter file rules now use quotes (single or
  double) rather than parentheses to delimit the regular expression in
  the match field.

  # invalid
  headers (Subject: Site Down:.*) reject

  # valid
  headers "Subject: Site Down:.*" reject
  headers 'Subject: Site Down:.*' reject

* tmda-filter no longer looks for the `X-Originally-To' header by
  default.  If you need to retain this feature, set the following in
  your tmdarc:
  
  RECIPIENT_HEADER = "x-originally-to"

  See the related documentation for RECIPIENT_HEADER in Defaults.py.

======================================================================

If you are upgrading from a release of TMDA < 0.44:

* LOGFILE has been renamed LOGFILE_INCOMING.

* tmda-address has replaced tmda-dated-address, tmda-keyword-address,
  and tmda-sender-address.  Run `tmda-address -h' to get a list of
  available options.

* tmda-address now prints a newline after the tagged address by
  default.  Use the `-n' option to prevent this behavior.

======================================================================

If you are upgrading from a release of TMDA < 0.43:

* The TIMEZONE configuration setting has been removed.  If you need to
  specify a timezone for TMDA different than that of the local system,
  set the `TZ' environment variable directly from /etc/tmdarc or
  ~/.tmdarc.  e.g,

  import os
  os.environ['TZ'] = "Europe/Moscow"

======================================================================

If you are upgrading from a release of TMDA < 0.41:

Version 0.41 introduced TMDA filter files which are used to control
both incoming and outgoing mail (one filter file for incoming, and a
second for outgoing).  These obsolete all files in ~/.tmda/lists/*

TMDA filter file support necessitates several configuration changes.
You will also need to rename/add/delete several variables in your
tmdarc:

* BLACKLIST, WHITELIST, SACRED_FILE, and REVOKED_FILE were replaced by
  FILTER_INCOMING.  Create your ~/.tmda/filters/incoming filter file
  as explained in "TMDA Server Configuration" (config-server.html).

* BARE_FILE, DATED_FILE, EXP_FILE, EXT_FILE, KEYWORD_FILE,
  SENDER_FILE, were replaced by FILTER_OUTGOING.  Create your
  ~/.tmda/filters/outgoing filter file as explained in "TMDA Client
  Configuration" (config-client.html).

* WHITELIST_TO_BARE was removed as it is no longer relevant.  You can
  retain this functionality by adding the following line to your
  ~/.tmda/filters/outgoing filter file:

  to-file ~/.tmda/lists/whitelist bare

* BOUNCE_BLACKLIST_CC, BOUNCE_CONFIRM_CC, and BOUNCE_REVOKED_CC were
  replaced by FILTER_DROP_CC, CONFIRM_CC, and FILTER_BOUNCE_CC.

* WHITELIST_AUTO_APPEND was replaced by CONFIRM_APPEND.  The value for
  CONFIRM_APPEND should be the path to a filename rather than an
  integer.

* COOKIE_TYPE was replaced by ACTION_OUTGOING.

* X-TMDA headers should now contain only one field.  Separate
  multi-word entries with `='.  e.g,

  X-TMDA: ext=mlists

======================================================================

If you are upgrading from a release of TMDA < 0.38:

* The local copy of the documentation is now in `htdocs'.

* The `X-Confirmed' header is now `X-TMDA-Confirmed'.

* You can remove INJECT and INJECT_FLAGS from your .tmdarc as they are
  no longer used.

======================================================================

If you are upgrading from a release of TMDA < 0.36:

* The `setup' script was renamed `compileall'.

======================================================================

If you are upgrading from a release of TMDA < 0.35:

* Be aware that `WHITELIST_TO_BARE' is now turned on by default.

======================================================================

If you are upgrading from a release of TMDA < 0.33:

* If you maintain your own templates, make sure to replace all
  instances of `envelope_recipient' with `recipient_address'.

======================================================================

If you are upgrading from a release of TMDA < 0.31:

* You can remove LOCALS and USERPREFIX from your .tmdarc as they are
  no longer used.

======================================================================

If you are upgrading from a release of TMDA < 0.30:

Version 0.30 introduced "confirmation mode" where instead of just
bouncing the message, it will be stored in a pending-queue until the
sender responds to a confirmation request.  This replaces the old
behavior.  Some configuration changes are necessary:

* If you don't have a catch-all `.qmail-default', you will need to
  make a link from `.qmail-confirm-default' to `.qmail'.

* confirm_request.txt is the template used when generating
  confirmation requests.  This obsoletes bounce_dated.txt and
  bounce_sender.txt.  confirm_accept.txt is the template used to
  generate confirmation acceptance notices.

* BOUNCE_CONFIRM_CC replaces both BOUNCE_DATED_CC and BOUNCE_SENDER_CC.

* The copy of the original message is now added through the template
  instead of the code.

* The pending message queue will be maintained under ~/.tmda/ by
  default, and it will be created automatically if it doesn't exist.
  Set "DATADIR" in your .tmdarc to something else if you want to use a
  different directory.

* The default locations for the former 'dot-tmda' files are now within
  ~/.tmda/lists/:

  ~/.tmda-bare      -->  ~/.tmda/lists/bare
  ~/.tmda-blacklist -->  ~/.tmda/lists/blacklist
  ~/.tmda-dated     -->  ~/.tmda/lists/dated
  ~/.tmda-exp       -->  ~/.tmda/lists/exp
  ~/.tmda-ext       -->  ~/.tmda/lists/ext
  ~/.tmda-sender    -->  ~/.tmda/lists/sender
  ~/.tmda-whitelist -->  ~/.tmda/lists/whitelist

======================================================================

If you are upgrading from a release of TMDA < 0.21:

Starting with version 0.21, the syntax for .tmda-* files changed from
simple substring matching to supporting matching patterns based on
Unix shell-style wildcards.  The benefits are more matching
flexibility and better matching precision.  

As a result, your global patterns will need to be modified to support
the new syntax.  For example, `@domain.dom' will no longer match
anyone@domain.dom.  See `FAQ' for further explanation and examples
using the new syntax.

======================================================================

If you are upgrading from a release of TMDA < 0.10:

Starting with version 0.10, TMDA's crypto-cookie generation and
verification scheme switched to using HMACs instead of block cipher
encryption, which invalidated all previous tagged addresses.  For the
motivations behind this, see `CRYPTO'.

* The amkCrypto package is no longer necessary as HMAC uses Python's
  built-in `sha' module for hashing.

* You need to generate a new CRYPT_KEY by running bin/tmda-keygen and
  replace your current key in .tmdarc.

* You can remove BLOCK_CIPHER, CRYPT_IV, and HASH_FUNCTION from your
  .tmdarc as they are no longer used.

* Again, the new 'dated' and 'sender' addresses are not compatible
  with those generated prior to v0.10, so re-issue addresses as
  necessary with bin/tmda-dated-address and bin/tmda-sender-address.

======================================================================

^L
Local Variables:
mode: text
End:
