2012-09-10 22:10  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.8
    * courier/control.py, courier/quarantine.py: changes
    * filters/clamav.py: changes

2010-08-14 22:22  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.7

2010-08-14 22:18  gordon

    * filters/: auto_whitelist.py, comeagain.py, dialback.py,
    greylist.py: Replace md5 module with hashlib.

2010-08-14 22:09  gordon

    * courier/: config.py, xfilter.py: Replace the use of os.popen with
    subprocess.Popen

2010-08-14 21:23  gordon

    * filters/dialback.py: Use hexdigest() for db value.

2010-01-21 09:11  gordon

    * filters/auto_whitelist.py: Don't allow a whitelist between
    identical addresses.  Users sometimes email themselves a note,
    which creates a path for spam.

2009-09-07 00:33  gordon

    * filters/clamav.py: Temp fail on clamav exceptions.

2009-01-18 19:47  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.6

2009-01-18 19:44  gordon

    * filters/dialback.py: Track md5 hash of addresses in dialback,
    like other filters.

2009-01-18 19:36  gordon

    * pythonfilter: Offer more explanation in the import error message.

2009-01-18 19:30  gordon

    * pythonfilter-modules.conf, filters/TtlDb.py: MySQL support for
    TtlDb.

2009-01-10 23:04  gordon

    * courier/config.py: Log a more specific error if anydbm lacks the
    module to load a dbm file.  This is only likely to happen on Debian
    derivatives.

2009-01-02 21:18  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.5

2009-01-02 21:16  gordon

    * README.hacking, courier/config.py, filters/dialback.py: Add an
    "esmtphelo" function to the config module which returns a value
    similar to the one documented for Courier's configuration file of
    the same name.
    
    This function is now used by the "dialback" module to set an
    appropriate "helo" name for its SMTP sessions.

2009-01-02 20:49  gordon

    * README, pythonfilter.conf, filters/noreceivedheaders.py: Add
    filter which removes AUTH data from message headers.

2009-01-01 21:55  gordon

    * pythonfilter-modules.conf, filters/localsenders.py: Add option to
    require that "localsenders" use authentication.

2008-12-31 20:46  gordon

    * filters/TtlDb.py: Catch IntegrityError thrown by the psycopg2
    module on duplicate key.

2008-12-21 21:00  gordon

    * courier/authdaemon.py, courier/xfilter.py, filters/TtlDb.py: Use
    the default Exception implementation.

2008-12-21 20:58  gordon

    * README, filters/TtlDb.py, tests/testttldb.py: Add support for the
    psycopg2 adapter.

2008-10-19 14:52  gordon

    * filters/comeagain.py: Fix typo.

2008-10-12 01:15  gordon

    * courier-pythonfilter.spec: Include egg info for Python
    installations that install it.

2008-09-19 08:42  gordon

    * README, pythonfilter.conf, filters/log_aliases.py: Add new filter
    which logs information about aliases.

2008-09-17 10:33  gordon

    * courier/xfilter.py: Fix unbound reference to filterName

2008-07-31 16:43  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.4

2008-07-31 15:47  gordon

    * courier-pythonfilter.spec: Don't use dist tag on systems where it
    isn't defined.

2008-07-31 15:36  gordon

    * courier/xfilter.py: Improve loop detection.  Suggested by
    Jérôme Blion.

2008-07-25 14:41  gordon

    * pythonfilter: Log traceback when failing to import filter module.

2008-07-21 10:47  gordon

    * courier-pythonfilter.spec: Improvements suggested by Alan
    Milligan

2008-07-18 10:06  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.3

2008-07-18 10:00  gordon

    * courier/config.py: Don't log an error if the config section is
    missing or commented.

2008-07-17 15:01  gordon

    * filters/greylist.py: Remove greylist-specific whitelisting
    functions in favor of the external whitelist modules.

2008-07-17 15:00  gordon

    * courier/xfilter.py: Fix bug where contents of a filtered message
    may be left dangling at the end of the modified version's data
    file.

2008-07-14 10:09  gordon

    * courier-pythonfilter.spec, setup.py: Release 1.2

2008-07-14 01:17  gordon

    * filters/add_signature.py: Add two headers to the list of items
    which shouldn't be moved when wrapping a message.

2008-07-13 23:47  gordon

    * README, courier-pythonfilter.spec, courier/quarantine.py,
    filters/greylist.py, pythonfilter-modules.conf: Replace /var/state
    with modern FHS compliant /var/lib

2008-07-13 23:25  gordon

    * filters/quota.py: Correct a bug where the result of
    getRecipientsData was passed instead of the first element (the
    recipient's address) as expected.

2008-07-13 23:16  gordon

    * filters/: spfcheck.py, whitelist_spf.py: Rewrite spfcheck.py
    (though it remains deprecated) as a simple blacklist to remove
    functional overlap with whitelist_spf.py.
    
    Both spfcheck.py and whitelist_spf.py were updated to the RFC
    compliant API and proper return codes are now used.

2008-07-07 00:13  gordon

    * pythonfilter-modules.conf, courier/authdaemon.py: Correct errors
    in previous authdaemon config patch.

2008-07-06 23:54  gordon

    * courier/config.py: Use RawConfigParser to avoid unwanted
    interpolation, and log errors loading the module configuration
    file.

2008-06-11 14:32  gordon

    * README, pythonfilter-modules.conf, courier/quarantine.py: Allow
    quarantine notices to be turned off.

2008-06-11 14:15  gordon

    * pythonfilter-modules.conf, courier/authdaemon.py: Allow users to
    specify the authdaemon socket location.

2008-05-27 21:32  gordon

    * courier/xfilter.py: Make sure that any message that passes
    through xfilter ends with a newline character.  Messages without
    newlines can't be delivered by courier's smtp client.

2008-05-26 20:07  gordon

    * README, pythonfilter.conf: Move the spamassassin module later in
    the default list, after the more lightweight modules are run.

2008-05-26 20:04  gordon

    * pythonfilter-modules.conf, filters/spamassassin.py: Extend the
    spamassassin module to allow better control over filtering, and to
    allow the spamassassin headers to incoming messages.  This change
    will allow the spamassassin filter to be used on a server which is
    only a mail relay, and does not have any local accounts.

2008-05-26 20:01  gordon

    * courier/xfilter.py: Add dummy xfilter class to aid testing
    modules.

2008-05-26 19:53  gordon

    * README.hacking: Fix xfilter example in the documentation.

2008-05-26 18:15  gordon

    * pythonfilter: Clean up reject log.

2008-05-26 18:04  gordon

    * pythonfilter: Log refused messages.

2008-05-26 17:49  gordon

    * README.hacking, courier/xfilter.py, filters/add_signature.py:
    Update xfilter.submit() method and documentation to provide better
    behavior for newer versions of Courier.

2008-04-13 15:39  gordon

    * filters/: auto_whitelist.py, comeagain.py, deliveredto.py,
    dialback.py, greylist.py, quota.py: Fix up some exception handling
    and logging.

2008-03-23 01:06  gordon

    * COPYING, pythonfilter, pythonfilter-quarantine,
    courier/authdaemon.py, filters/TtlDb.py, filters/add_signature.py,
    filters/attachments.py, filters/auto_whitelist.py,
    filters/clamav.py, filters/comeagain.py, filters/debug.py,
    filters/deliveredto.py, filters/dialback.py, filters/greylist.py,
    filters/localsenders.py, filters/noduplicates.py,
    filters/nosuccessdsn.py, filters/privateaddr.py, filters/quota.py,
    filters/ratelimit.py, filters/spamassassin.py, filters/spfcheck.py,
    filters/whitelist_auth.py, filters/whitelist_block.py,
    filters/whitelist_dnswl.py, filters/whitelist_relayclients.py,
    filters/whitelist_spf.py, tests/testconfig.py,
    tests/testcontrol.py, tests/testmoduleconfig.py,
    tests/testttldb.py, courier/config.py, courier/control.py,
    courier/quarantine.py, courier/xfilter.py: Update copyright
    information.

2008-03-23 00:31  gordon

    * courier-pythonfilter.spec, setup.py, MANIFEST.in: Import better
    spec file than distutils creates.

2008-03-20 23:57  gordon

    * README, pythonfilter-modules.conf, pythonfilter.conf,
    courier/xfilter.py, filters/add_signature.py: Add a filter that
    will append a signature to messages sent by authenticated users. 
    Logic for signature appending is probably very site-specific, so
    many users should expect to use this filter as a template to write
    their own.

2008-03-20 23:47  gordon

    * README, pythonfilter-modules.conf, pythonfilter-quarantine,
    courier/quarantine.py, filters/clamav.py: Allow the quarantine
    module to notify an administrative address in addition to
    recipients of quarantined messages, and to give users the admin's
    address rather than the release address.

2008-03-19 21:03  gordon

    * setup.py: Release 1.1

2008-03-19 21:03  gordon

    * README, courier/quarantine.py, courier/xfilter.py: Make the
    quarantine module's "release" method use the "local" source, to
    avoid filtering messages on release.

2008-03-19 20:22  gordon

    * pythonfilter-modules.conf, filters/clamav.py: Allow clamav filter
    to quarantine messages.

2008-03-19 20:06  gordon

    * MANIFEST.in, README, pythonfilter-modules.conf,
    pythonfilter-quarantine, setup.py, courier/quarantine.py,
    courier/xfilter.py: Initial support for message quarantine.

2008-03-17 17:33  gordon

    * README: Add simple documentation for TtlDb's SQL support.

2008-03-17 16:54  gordon

    * courier/: authdaemon.py, xfilter.py: Fix exception definitions.

2008-03-17 16:49  gordon

    * filters/TtlDb.py, pythonfilter-modules.conf,
    filters/auto_whitelist.py, filters/comeagain.py,
    filters/dialback.py, filters/greylist.py, tests/testttldb.py,
    tests/configfiles/pythonfilter-modules.conf: Initial revision of
    experimental SQL TtlDb support.

2008-01-04 21:50  gordon

    * filters/: localsenders.py, whitelist_block.py,
    whitelist_dnswl.py, attachments.py, auto_whitelist.py, clamav.py,
    comeagain.py, deliveredto.py, dialback.py, greylist.py,
    noduplicates.py, nosuccessdsn.py, quota.py, spamassassin.py,
    whitelist_auth.py, whitelist_relayclients.py, whitelist_spf.py: Run
    initFilter() before testing, pointed out by Jérôme Blion
    <jerome.blion@free.fr>

2008-01-04 21:38  gordon

    * filters/spamassassin.py, pythonfilter-modules.conf,
    filters/clamav.py: Additional configuration items, suggested by
    Jérôme Blion <jerome.blion@free.fr>

2007-12-12 15:01  gordon

    * filters/quota.py: Another logic fix in quota filter.

2007-12-12 14:55  gordon

    * filters/quota.py: Fix up the quota filter.

2007-12-09 21:17  gordon

    * setup.py: Release 1.0

2007-12-09 21:16  gordon

    * courier/xfilter.py: Fix invocation of email.generator.Generator,
    and make compatible with Python's email package, version 3 and
    version 4.

2007-11-27 08:08  gordon

    * README: Fix "whitelist_relayclients" reference in README.

2007-11-26 10:14  gordon

    * pythonfilter.conf, setup.py, filters/clamav.py,
    filters/comeagain.py: Minor patches from Milan Obuch.

2007-11-24 16:02  gordon

    * MANIFEST.in: Include pythonfilter-modules.conf file

2007-11-24 16:00  gordon

    * setup.py: Release 0.26

2007-11-24 15:35  gordon

    * filters/greylist.py: Add missing call to applyModuleConfig

2007-11-24 15:35  gordon

    * courier/config.py: Fixes from testing: preserve option case, and
    fix behavior when requested section isn't found.

2007-11-24 12:51  gordon

    * README, pythonfilter-modules.conf, setup.py,
    filters/attachments.py, filters/auto_whitelist.py,
    filters/clamav.py, filters/comeagain.py, filters/debug.py,
    filters/deliveredto.py, filters/dialback.py, filters/greylist.py,
    filters/localsenders.py, filters/noduplicates.py,
    filters/nosuccessdsn.py, filters/privateaddr.py, filters/quota.py,
    filters/ratelimit.py, filters/spamassassin.py, filters/spfcheck.py,
    filters/whitelist_auth.py, filters/whitelist_block.py,
    filters/whitelist_dnswl.py, filters/whitelist_relayclients.py,
    filters/whitelist_spf.py: Make use of the new initFilter and module
    configuration functions.

2007-11-24 11:56  gordon

    * README.hacking, pythonfilter, courier/config.py,
    tests/testmoduleconfig.py,
    tests/configfiles/pythonfilter-modules.conf: Add new initFilter()
    function capability, and functions to load configuration files so
    that modules don't need to be modified directly.

2007-11-23 13:13  gordon

    * courier/xfilter.py: Replace use of as_string() with
    email.generator class.  Should reduce memory, and avoid
    misformatting messages.

2007-11-12 12:09  gordon

    * setup.py: Release 0.25

2007-11-12 12:08  gordon

    * courier/xfilter.py: Attempt to use the most efficient submit
    method available.

2007-11-12 11:59  gordon

    * courier/config.py: Add Courier version information, and function
    to check for minimum version of Courier.

2007-10-19 16:12  gordon

    * README, pythonfilter.conf, filters/localsenders.py: Add a filter
    that validates sender addresses, if their domain is locally hosted.

2007-10-19 14:53  gordon

    * README, pythonfilter.conf, filters/deliveredto.py: Added a filter
    that does minimal checking on the Delivered-To header.

2007-10-15 15:41  gordon

    * courier/xfilter.py: Fix the path prefix for submit.

2007-10-12 20:41  gordon

    * MANIFEST.in: Include test files in the source distribution.

2007-10-12 20:35  gordon

    * setup.py: Release 0.24

2007-10-12 20:34  gordon

    * courier/xfilter.py: Experimental "newSubmit" function to test
    changes in courier-0.57.0.20071006

2007-10-12 20:18  gordon

    * courier/xfilter.py: Fix problem with XFilter and xalias
    addresses.

2007-08-18 22:01  gordon

    * pythonfilter, courier/authdaemon.py, courier/config.py,
    courier/control.py, courier/xfilter.py, filters/TtlDb.py,
    filters/dialback.py, filters/greylist.py, filters/privateaddr.py:
    Another set of PEP 8 changes.

2007-08-06 15:48  gordon

    * setup.py: Release 0.23

2007-08-06 15:33  gordon

    * pythonfilter: Use __import__ rather than "exec 'import'" to load
    modules.

2007-08-06 15:25  gordon

    * pythonfilter, courier/config.py, courier/control.py,
    courier/xfilter.py, filters/auto_whitelist.py,
    filters/comeagain.py, filters/debug.py, filters/dialback.py,
    filters/greylist.py, filters/privateaddr.py, filters/ratelimit.py,
    filters/spfcheck.py, filters/whitelist_block.py,
    filters/whitelist_dnswl.py, filters/whitelist_relayclients.py,
    filters/whitelist_spf.py: Replace deprecated string functions with
    string object methods.

2007-08-06 13:22  gordon

    * courier/control.py, tests/testcontrol.py: Return only undelivered
    recipients in getRecipients and getRecipientsData.

2007-08-06 13:05  gordon

    * tests/: queuefiles/control-ldapalias, testcontrol.py: Add new
    control file for test suite.

2007-08-01 12:52  gordon

    * tests/: queuefiles/control-duplicate, testcontrol.py: Add new
    control file for test suite.

2007-08-01 10:54  gordon

    * tests/testcontrol.py: Finish testcontrol.py script.

2007-07-31 16:39  gordon

    * tests/: testconfig.py, testcontrol.py: More work on the test
    suite.

2007-07-27 23:22  gordon

    * tests/: testconfig.py, configfiles/aliases,
    configfiles/defaultdomain, configfiles/hosteddomains,
    configfiles/locallowercase, configfiles/locals, configfiles/me,
    configfiles/smtpaccess, queuefiles/control-xalias,
    queuefiles/data-test1: Add the first bits of a test suite.

2007-07-27 21:59  gordon

    * courier/config.py: Allow control module to be imported in
    non-threaded programs.

2007-07-26 21:16  gordon

    * filters/clamav.py: Support both pyclamav and pyclamd in the
    clamav filter.

2007-07-20 14:25  gordon

    * courier/xfilter.py: Set RELAYCLIENT before calling 'submit'

2007-06-15 09:56  gordon

    * courier/config.py: Avoid a zombie "courier-config"

2007-06-02 22:20  gordon

    * README, filters/spamassassin.py, pythonfilter.conf: Added
    "spamassassin" module contributed by Jérôme Blion
    <jerome.blion@free.fr>

2007-06-02 22:10  gordon

    * filters/whitelist_spf.py: Add default return value.

2007-05-25 22:56  gordon

    * setup.py: Release 0.22

2007-05-25 22:56  gordon

    * README, pythonfilter.conf, filters/quota.py: Add new quota
    checking module

2007-05-25 21:40  gordon

    * courier/authdaemon.py, filters/dialback.py: Bugfix for connection
    errors, and other failure detections

2007-05-25 17:06  gordon

    * courier/authdaemon.py: Initial interface to Courier's authdaemon

2007-05-13 11:33  gordon

    * setup.py, courier/config.py: Release 0.21

2007-05-05 12:29  gordon

    * README, courier/config.py, pythonfilter: Use "courier-config" for
    directory locations

2007-03-05 09:47  gordon

    * .pydevproject: Allow eclipse to add its .pydevproject file

2007-03-03 15:08  gordon

    * README.hacking: Document the new getAuthUser function

2007-03-03 15:02  gordon

    * setup.py: Release 0.20

2007-03-02 14:26  gordon

    * courier/control.py, filters/auto_whitelist.py,
    filters/whitelist_auth.py: Add a function to simplify AUTH
    detection.

2007-02-20 21:17  gordon

    * courier/config.py: Fix loop in isLocal function

2007-02-06 13:20  gordon

    * filters/privateaddr.py: Lowercase recipient address if the system
    is so configured.

2007-01-30 19:31  gordon

    * filters/dialback.py: Fix the notes for the connection process

2007-01-30 19:26  gordon

    * setup.py: Release 0.19

2007-01-30 19:22  gordon

    * filters/dialback.py: Correct the non-blocking connect() logic.

2007-01-25 06:16  gordon

    * courier/config.py: Add sysconf and prefix values for FreeBSD's
    port install.

2007-01-24 10:07  gordon

    * setup.py: Release 0.18

2007-01-24 10:04  gordon

    * filters/dialback.py: Continue to next MX on SMTP exception

2007-01-24 10:01  gordon

    * filters/dialback.py: Fix double-unlocking mutex.

2007-01-23 08:30  gordon

    * pythonfilter: Fix typo.

2007-01-18 15:30  gordon

    * MANIFEST.in: Include the new "hacking" document in releases.

2007-01-18 15:22  gordon

    * README: Document building an exception list for greylisting. 
    Some legit senders don't meet some of the assumptions in the
    greylisting spec.

2007-01-18 15:03  gordon

    * setup.py: Release 0.17

2007-01-17 16:49  gordon

    * README, pythonfilter.conf, filters/whitelist_dnswl.py: Added a
    DNS whitelist module.

2007-01-15 20:30  gordon

    * README, pythonfilter.conf, filters/whitelist_block.py: Add a
    whitelist_block filter to exempt IP addresses and networks from
    filtering.

2007-01-15 20:19  gordon

    * filters/whitelist_spf.py: Add debugging mode to whitelist_spf
    filter

2007-01-15 20:15  gordon

    * courier/config.py: Fix IPv6 smtpaccess lookups.

2007-01-15 19:45  gordon

    * README, pythonfilter.conf, filters/whitelist_spf.py: Add a new
    module to whitelist senders based on the SPF records for their
    domain.

2007-01-15 19:19  gordon

    * README, pythonfilter.conf, filters/whitelist_relayclients.py:
    Rename whitelist module to whitelist_relayclients

2007-01-15 19:09  gordon

    * README.hacking: Note that os.wait() is required when processes
    are spawned.

2007-01-15 15:48  gordon

    * courier/config.py, filters/spfcheck.py: Make sure stderr messages
    end in newline.

2007-01-10 11:08  gordon

    * README, README.hacking, courier/control.py, courier/xfilter.py:
    Documentation updates

2007-01-05 13:58  gordon

    * setup.py: Release 0.16

2007-01-03 09:37  gordon

    * filters/dialback.py: Indicate at what stage of a connection an
    SMTP exception occurs

2007-01-02 13:02  gordon

    * filters/: TtlDb.py, auto_whitelist.py, comeagain.py, dialback.py,
    greylist.py, ratelimit.py: Use try/finally/unlock blocks around all
    mutexes.  This should prevent a mutex from remaining locked where
    uncaught exceptions occur.

2007-01-02 12:06  gordon

    * filters/TtlDb.py: The C based DBM libraries don't expose
    __setitem__ and similar functions, so interface with the db object
    as a dictionary.

2006-12-20 21:36  gordon

    * setup.py: Release 0.15

2006-12-20 21:34  gordon

    * filters/dialback.py: Document a method for refusing mail from
    non-RFC-compliant systems.

2006-12-20 21:32  gordon

    * filters/dialback.py: Implement a readline function that will work
    with non-blocking sockets.

2006-12-19 13:13  gordon

    * setup.py: Release 0.14

2006-12-19 13:11  gordon

    * filters/TtlDb.py: Add delitem method

2006-12-17 13:06  gordon

    * setup.py: Release 0.13

2006-12-17 13:05  gordon

    * filters/: auto_whitelist.py, whitelist_auth.py: Simplify the
    regex for AUTH.

2006-12-15 18:11  gordon

    * filters/clamav.py: Correct mistake on previous checkin.

2006-12-15 15:19  gordon

    * filters/clamav.py: Use the "scanfile" function from pyclamav,
    instead of parsing the message in Python

2006-12-13 14:49  gordon

    * filters/TtlDb.py: Correct typo of "self".

2006-12-12 14:14  gordon

    * setup.py: Release 0.12

2006-12-12 14:13  gordon

    * filters/dialback.py: Bugfixes from testing

2006-12-12 00:56  gordon

    * filters/TtlDb.py: Fixes from testing.

2006-12-11 22:20  gordon

    * INSTALL, MANIFEST.in: INSTALL docs are now in README

2006-12-11 22:18  gordon

    * README, pythonfilter.conf: Remove notes warning users not to use
    dialback.  It *should* be safe now.

2006-12-11 22:17  gordon

    * filters/: comeagain.py, dialback.py: Cleanup: use the getSender
    function in dialback and comeagain

2006-12-11 22:11  gordon

    * filters/dialback.py: Update dialback for TtlDb

2006-12-11 22:02  gordon

    * filters/dialback.py: Clean up previous, ineffective attempt to
    make this module thread-safe.

2006-12-11 16:40  gordon

    * filters/dialback.py: Initial implementation of a non-blocking,
    thread-safe SMTP object.

2006-12-11 14:58  gordon

    * filters/: TtlDb.py, auto_whitelist.py, comeagain.py, greylist.py:
    Moved the db code for TTL tracking into its own helper module.

2006-12-08 16:01  gordon

    * setup.py: Release 0.11

2006-12-08 16:00  gordon

    * README, pythonfilter.conf: Update documentation

2006-12-08 13:24  gordon

    * filters/auto_whitelist.py: Bugfixes from testing

2006-12-07 23:26  gordon

    * filters/auto_whitelist.py: Fleshed out auto_whitelist, ready for
    testing.

2006-12-07 16:24  gordon

    * pythonfilter.conf, filters/auto_whitelist.py: Initial prototype
    for auto_whitelist.  Not yet functional.

2006-12-06 09:02  gordon

    * filters/greylist.py: Use "has_key" instead of "in" for python 2.2
    compatibility.

2006-12-05 14:07  gordon

    * filters/: comeagain.py, dialback.py, greylist.py: Apply
    consistent locking to "anydbm" files.

2006-12-03 23:02  gordon

    * setup.py: 0.10 release

2006-12-03 22:58  gordon

    * filters/greylist.py: Fixes from initial testing.

2006-12-03 22:58  gordon

    * pythonfilter.conf: Add the privateaddr filter

2006-12-01 16:55  gordon

    * pythonfilter.conf, filters/greylist.py: Initial commit of a
    greylist module, based on one by Georg Lutz

2006-12-01 14:32  gordon

    * filters/comeagain.py: Documentation update

2006-12-01 10:59  gordon

    * filters/whitelist_auth.py, pythonfilter, courier/config.py,
    courier/xfilter.py, filters/comeagain.py, filters/debug.py,
    filters/dialback.py, filters/noduplicates.py,
    filters/nosuccessdsn.py, filters/ratelimit.py,
    filters/whitelist_relayclients.py: Update copyright date

2006-12-01 10:58  gordon

    * courier/control.py: Fix bug where IPv6 addresses can't be
    detected.

2006-12-01 10:57  gordon

    * INSTALL: Documentation update

2006-12-01 09:55  gordon

    * .project: [no log message]

2006-12-01 09:55  gordon

    * filters/privateaddr.py: Add a privacy filter written for UW.

2006-12-01 09:55  gordon

    * courier/config.py, filters/attachments.py, filters/clamav.py:
    Patches from Robert Penz, including a fix for Debian's spool path.

2006-09-11 16:22  gordon

    * courier/__init__.py, courier/xfilter.py, filters/__init__.py: Fix
    up __init__.py files

2006-09-11 15:00  gordon

    * filters/whitelist_auth.py, pythonfilter.conf: Rename
    whitelist-auth to whitelist_auth

2006-03-13 11:44  gordon

    * setup.py: 0.9 release

2006-03-13 11:38  gordon

    * courier/xfilter.py: Clean up the submit IO code.

2006-03-13 10:38  gordon

    * courier/: control.py, xfilter.py: Initial implementation of
    message modification class.

2005-10-02 18:05  gordon

    * filters/attachments.py: Fix incorrectly commented line.

2005-10-02 00:13  gordon

    * README: Remove reference to the "order" variable, which was
    previously depreciated.

2005-10-02 00:12  gordon

    * INSTALL, pythonfilter.conf, filters/attachments.py,
    filters/clamav.py: Add clamav and attachments filters.

2004-12-25 15:00  gordon

    * pythonfilter, pythonfilter.conf, filters/debug.py,
    filters/dialback.py, filters/whitelist_auth.py,
    filters/whitelist_relayclients.py: Remove the "order" variable from
    filters.  Filters are now loaded and run in the order that they are
    listed in the pythonfilter.conf file.

2004-12-25 14:57  gordon

    * filters/whitelist_auth.py: New filter that exempts users who
    authenticate from further filtering.

2004-12-21 21:45  gordon

    * setup.py: [no log message]

2004-12-21 21:45  gordon

    * filters/noduplicates.py: New filter that removes duplicate
    canonical addresses from the control file.

2004-12-19 20:11  gordon

    * MANIFEST.in: Include the basic config file the MANIFEST.

2004-12-19 20:09  gordon

    * pythonfilter.conf: [no log message]

2004-12-19 20:01  gordon

    * filters/nosuccessdsn.py: New filter which rewrites control files
    so that no "success" DSNs are sent.

2004-12-19 20:01  gordon

    * courier/control.py: Added functions which add and remove
    recipients from Courier's message control files.

2004-12-19 19:56  gordon

    * courier/config.py: Added setup routine to detect courier
    installation location.

2004-12-19 17:42  gordon

    * courier/control.py: Bugfix getLines and add getRecipientsData
    function.

2004-12-13 00:26  gordon

    * courier/control.py, filters/comeagain.py, filters/ratelimit.py,
    filters/spfcheck.py, filters/whitelist_relayclients.py: Use the
    controlFileList argument in the control module to simplify and make
    interface more consistent.

2004-12-12 21:55  gordon

    * courier/config.py: Added functions to access a few more of
    Courier's configuration files.

2004-12-07 21:03  gordon

    * INSTALL, README, pythonfilter, courier/config.py,
    courier/control.py, filters/__init__.py, filters/comeagain.py,
    filters/debug.py, filters/dialback.py, filters/ratelimit.py,
    filters/spfcheck.py, filters/whitelist_relayclients.py: Reformat
    according to Python standard code format (mostly).

2004-12-02 20:15  gordon

    * INSTALL, pythonfilter, setup.py, filters/__init__.py: Always
    distribute all modules.  Load only modules indicated by
    configuration file.

2004-12-02 20:14  gordon

    * filters/debug.py: Add missing gid print.

2004-12-02 18:33  gordon

    * filters/: debug.py, whitelist_relayclients.py: Added a debugging
    module which prints some of the process parameters and information
    about the body and control files to stderr.

2004-11-28 21:29  gordon

    * filters/: comeagain.py, dialback.py: Fix the arguments to
    anydbm.open()

2004-11-28 21:25  gordon

    * pythonfilter: Explicitly set the permissions on the filter socket
    to make sure that all users who invoke sendmail can submit messages
    for filtering.

2004-02-10 22:50  gordon

    * filters/: spf.py, spfcheck.py: Renamed spf.py to spfcheck.py to
    avoid module name conflicts.

2004-01-28 16:50  gordon

    * filters/spf.py: Added the SPF module from Jon Nelson.

2004-01-28 16:42  gordon

    * pythonfilter: Fix typo.

2003-09-27 22:22  gordon

    * setup.py: Bumped version number for release containing the
    ratelimit filter.

2003-09-17 13:18  gordon

    * filters/ratelimit.py: Completed the ratelimit filter.

2003-09-11 16:04  gordon

    * pythonfilter: Correct attempt to use the wrong function to
    examine a module's attributes.

2003-09-11 14:47  gordon

    * setup.py: Bumped the version number for new release.

2003-09-11 14:44  gordon

    * MANIFEST.in: Add ChangeLog to the list of files distributed.

2003-09-11 14:42  gordon

    * filters/: comeagain.py, dialback.py, ratelimit.py: Cleaned up the
    state cleanup variables in several modules.

2003-09-11 14:36  gordon

    * filters/dialback.py: [no log message]

2003-09-11 14:36  gordon

    * README: Clean up resource leak in the dialback module.

2003-09-11 14:09  gordon

    * courier/config.py: [no log message]

2003-09-11 14:09  gordon

    * INSTALL, pythonfilter: Moved the values of "prefix" and "spool"
    into the courier config module.

2003-09-10 19:13  gordon

    * filters/: comeagain.py, dialback.py: Removed individual whitelist
    check in favor of the whitelist module.

2003-09-10 19:09  gordon

    * COPYING, INSTALL, MANIFEST.in, README: Added GPL license file,
    and common documentation files.

2003-09-10 14:38  gordon

    * pythonfilter: Added an "order" parameter to modules, so that they
    can run in a specified sequence.

2003-09-10 14:38  gordon

    * filters/whitelist_relayclients.py: Added a whitelist module which
    will prevent other modules running on messages sent from clients
    that the server relays for.

2003-08-27 15:02  gordon

    * filters/: comeagain.py, dialback.py: Use a common state dir for
    filters.

2003-08-27 14:08  gordon

    * courier/control.py: Updated the Courier control module, reduced
    repetitive code.

2003-08-27 13:13  gordon

    * filters/comeagain.py: Added new module that forces any previously
    unknown sender to send their message a second time.  Most spamware
    and virusware won't do this, so the filter should cut down on the
    amount of unwanted traffic into the domain.  Some mailing lists
    won't put up with this behavior, though.

2003-08-27 13:10  gordon

    * MANIFEST.in, setup.py: Improvements to the build system.

2003-08-27 10:23  gordon

    * courier/control.py: Fix spelling in courier control module.

2003-08-27 10:20  gordon

    * courier/config.py: Bugfixes in the courier config module.

2003-08-14 20:36  gordon

    * courier/config.py, filters/dialback.py: Added "me" and
    "read1line" methods to the courier.config module, both of which
    emulate the courier library functions.

2003-08-14 19:57  gordon

    * filters/dialback.py: Dual thread mechanism for SMTP session
    timeouts.  Mechanics are odd to compensate for Python's F*CKED
    thread model.

2003-08-10 09:09  gordon

    * pythonfilter: Increase the listen backlog to help prevent 432
    errors in Courier.

2003-08-07 16:45  gordon

    * pythonfilter: Close and delete filter socket before waiting for
    filters to finish so as to avoid rejecting email.

2003-08-07 14:32  gordon

    * MANIFEST.in, pythonfilter, setup.py, courier/__init__.py,
    courier/config.py, courier/control.py, filters/dialback.py,
    filters/ratelimit.py: Initial revision

2003-08-07 14:32  gordon

    * MANIFEST.in, pythonfilter, setup.py, courier/__init__.py,
    courier/config.py, courier/control.py, filters/dialback.py,
    filters/ratelimit.py: Initial import.

