# Legend:
# --- = A new release
#   + = Added a feature (in a backwards compatible way)
#   ! = Changed something significant, or removed a feature
#   * = Fixed a bug, or made a minor improvement

--- 0.200 (2008-03-11 22:00)

  ! Config file has been renamed to "courier-filter-perl.conf" from

  * Fixed a bug that caused crashes when encountering invalid (e.g., non-ASCII)
    characters in raw MIME encoded words.
  * Fixed fallback decoding of raw message headers from non-ASCII, non-UTF-8
    encodings such as ISO-8859-1.  Previously, any non-UTF-8 byte sequences
    would be decoded as the "�" Unicode substitution character.  Now this
    case properly falls back to reinterpreting the entire header as Windows-
    Note:  In the absence of the experimental "UTF8SMTP" SMTP extension,
    non-ASCII characters are formally illegal in raw message headers, so this
    really only affects exceptional cases.
  * Eliminated some corner case "Use of uninitialized value" warnings.

  * Lower-cased and slightly adjusted constant/method names.  Compatibility
    aliases for the old names are provided.
  + Added courier_executable() and courier_version() methods.  See man-page.

  + Added as a utility module for use by other modules of the Courier::Filter

  + Added warn() method for writing warning messages to syslog.

  DNSBL filter module:
  * Ignore messages received via IPv4/IPv6 loopback addresses (i.e., self

  SPF filter module:
  * Use Mail::SPF instead of the old Mail::SPF::Query.  Added new "spf_options"
    option with options for Mail::SPF::Server.
  + The switch to Mail::SPF brings IPv6 support!
  + Support both MAIL FROM and HELO checks separately.
  ! Deprecated "fallback_guess" and "trusted_forwarders" options in favor of
    the "default_policy" and "tfwl" keys to the "spf_options" option.  The old
    options induce a warning when specified but are still supported for now.
    Due to the move from the obsolete Mail::SPF::Query module to the Mail::SPF,
    the (yet unreleased) Mail::SPF::BlackMagic extension module is now required
    when using these non-standard options.
  ! Deprecated the "unknown" and "error" SPF result codes in favor of the new
    "permerror" and "temperror" ones defined in RFC 4408.  The old result codes
    induce a warning when specified in the "match_on" option but are still
    supported for now.
  * Ignore messages with an empty identity of the configured scope (esp. empty
    MAIL FROM, i.e., bounces) or with an identity in the form of an IP address
    literal ("[<ip-address>]").

  SPFout filter module:
  * Use Mail::SPF instead of the old Mail::SPF::Query.  Added new "spf_options"
    option with options for Mail::SPF::Server.
  * Use the IPv6-supporting Net::Address::IP::Local rather than the IPv4-only
    Net::Address::IPv4::Local module for auto-discovery of the local system's
    outbound IP addresses.  Note that auto-discovery does not work from behind
    NATs, in which case outbound IP addresses must be configured manually using
    the "outbound_ip_addresses" option.
  + The switch to Mail::SPF and Net::Address::IP::Local brings IPv6 support!
  ! Deprecated the "unknown" and "error" SPF result codes in favor of the new
    "permerror" and "temperror" ones defined in RFC 4408.  The old result codes
    induce a warning when specified in the "match_on" option but are still
    supported for now.
  * Ignore messages with an empty identity of the configured scope (esp. empty
    MAIL FROM, i.e., bounces) or with an identity in the form of an IP address
    literal ("[<ip-address>]").

  SpamAssassin filter module:
  + Added a "prefs_file" option for easy configuration of Courier::Filter
    specific SpamAssassin preferences.  SpamAssassin now will not read any
    preferences besides its default configuration files unless this option is
  * Eliminated memory leak by properly cleaning up Mail::SpamAssassin::Message

  BlankBody filter module:
  + Added for matching blank message bodies (a stupid spammer symptom).

  FakeDate filter module:
  + Added for matching implausible and malformed date header fields.

  SendCopy filter module:
  + Added for sending message copies to additional recipients.

  + Automatically start and stop courier-filter-perl using Courier's
    `filterctl` post-installation and pre-removal, respectively.
  ! "courier-filter-perl.conf" (previously "pureperlfilter.conf") config file
    is no longer a conffile managed by dpkg.  Migrate seamlessly.
  ! Install courier-filter-perl executable into /usr/lib/courier/filters/
    rather than /usr/lib/.
  > control:
    * Section: mail (was: perl)
    * Standards-Version: 3.7.3
    * Raised debhelper compat level to 5 / Build-Depends: debhelper (>= 5)
    * Build-Depends: debhelper (was: Build-Depends-Indep:)
    * Removed Build-Depends-Indep: libtest-simple-perl (now provided by
    * Recommends: libmail-spf-perl (was: libmail-spf-query-perl)
    * Recommends: libnet-rblclient-perl, libclamav-client-perl (was: Suggests:)
    * Removed Recommends: libdigest-md5-perl (now provided by perl)
    * Removed Recommends: libnet-dns-perl (unused)
    * Suggests: libnet-address-ip-local-perl
      (was: libnet-address-ipv4-local-perl)
  > rules:
    * Run `$(BUILD) distclean` only if $(BUILD) actually exists.

--- 0.17 (2005-11-11 03:00)

  * If socket already exists, check whether it is dead or alive.  If it is
    dead, remove it and start up normally.  If it is alive, die like before.
                                                       (Closes: Debian #326785)
  * Ignore connections that don't send any data.

  * Decode header text as "UTF-8" encoded, not as "utf8" encoded.  Starting
    with Perl 5.8.7, this does make a difference.  "utf8" allows invalid
    Unicode codepoints (such as UTF-16 surrogates), while "UTF-8" (the official
    standard UTF-8) doesn't.  We want to avoid invalid codepoints because they
    tend to cause trouble later.
  * Don't die on invalid characters in encoded-word chunks.  If an encoded-word
    cannot be decoded, retain it undecoded.
  * "authenticated" property: refined parsing of "Received:" header and "AUTH:"
    authentication information.
  + Added "authenticated_user" property.
  * Corrected documentation of "header" property.

  SPFout filter module:
  * Don't be pedantic about what our "public" IPv4 address is vis-à-vis the
    various recipient MXes.  Assume we just have a single public address that
    applies to all recipient MXes.  (Let's see if anyone out there actually has
    a more complex setup...)

  Parts filter module:
  * Requires IO::InnerFile 2.110 or later, Archive::Zip.

  SpamAssassin filter module:
  + Added for SpamAssassin-based spam detection.
  ! Requires Mail::SpamAssassin.

  * Relaxed sender IPv4 address matching in DNSBL, SPF, and SPFout filter
    modules, making the "::ffff:" IPv6 prefix optional and thus supporting
    IPv6-disabled versions of Courier.
  * Courier::Filter::Overview: Updated mention of pythonfilter from version 0.5
    to 0.8.
  * README: Added license statement.
  + INSTALL: Added system requirements and building/installation instructions.
  * Minor documentation fixes.

  * Recommends: libmime-perl, not libmime-tools-perl.  (Closes: Debian #297730)
  ! Recommends: libio-stringy-perl (>= 2.110), libmail-spamassassin-perl,

--- 0.16 (2005-01-17 19:11)

  * Explicitly specify the dependency on Perl 5.8 so upgrades from Woody are
    guaranteed to work smoothly and also to simplify backporting.  This deals
    with Debian bug #289796.
  ! Recommend libnet-dns-perl.  Suggest libnet-rblclient-perl,
    libnet-address-ipv4-local-perl, and libclamav-client-perl (all of which are
    not yet packaged for Debian).

  SPF filter module:
  ! Deprecated the "reject_on" option in favor of the new "match_on" option.
  ! Removed "none" from the default set of result codes to match on.
  ! Changed the documentation to recommend also rejecting on "unknown" results.
  + Added a reference in the documentation to the spf-draft-200406
    specification, to which this module complies.

  SPFout filter module:
  + Added for outbound SPF filtering.

  ClamAVd filter module:
  + Added for malware filtering using a ClamAV `clamd` dameon.

  * Updated the sample configuration file.
  * Minor documentation fixes.

--- 0.15 (2004-10-30 01:13)

  ! Courier::Filter is primarily a plug-in for the Courier MTA, not a library
    of Perl modules intended to be used by other programs or modules.
    ! Renamed the Debian package to "courier-filter-perl".
    ! Install included Perl modules in the private path
      /usr/share/courier-filter-perl/perl5 instead of Perl's configured
      "vendorlib" path (/usr/share/perl5 in Debian).
  * Various minor fixes.

--- 0.14 (2004-10-22 00:10)

  + Added documentation for the test-filter-module and pureperlfilter
  > test-filter-module:
    * Fixed the command-line parsing and handling of control file names.
    * Made the result output format compatible with multi-line results.

--- 0.13 (2004-10-04 23:00)

  + Added Debian package control files.

  > Deprecated the MIMEParts filter module in favor of the new Parts filter
    module, which is compatible but a lot more powerful:
    ! Switched from completely-in-memory processing to using temporary files in
      order to work around two nasty bugs in MIME::Parser and Archive::Zip.
    ! Renamed the "max_size" constructor option to "max_message_size".
      "max_size" is deprecated but still supported for now.
    ! The "max_size" constructor option now defaults to 1024**2 (1MB) instead
      of undef.
    + Added the "max_part_size" constructor option.
    + Added "views" support (as constructor option and signature aspect),
      supporting "raw" and "zip" views for now.
    + Added the "encrypted" signature aspect.

  + Added Envelope filter module.
  + Added etc/pureperlfilter.conf as a default configuration file.

  * Fixed the mysterious ``Can't call method "close" on an undefined value at
    Filter.pm line 299´´ bug that caused Courier::Filter to fail starting up on
    some platforms.  (File descriptor 3 must be opened in write mode, not in
    read mode!)
  * Fixed filter module group handling:
    * Skip the rest of the current module group and treat it as an implicit
      accept if a module in the group states an explicit accept.
    * Log rejections just once, right after a module has stated a reject,
      i.e. avoid logging the rejection for all higher recursion levels of the
      module group structure that contains the rejecting module.
    * Don't try extracting a logger from filter module groups, only from atomic
      filter modules.
  * Fixed the Header filter module:
    * Fixed handling of undefined header fields.
    * Prepend a "Header:" keyword to positive match results.
  * Disabled timestamping for the Syslog logger module, as syslog does its own
  * Reworked configuration file example.
  * Refined Build.PL script.
  * Lots of minor documentation fixes.

--- 0.12 (2004-02-25 01:00)

  * chmod the courierfilter socket to 0660, so the Courier daemon system group
    has write access to the socket.  This solves the "sendmail: Unable to
    submit message" permissions problem that occurred on some platforms..
  * Make Module::Build automatically create a Makefile.PL to facilitate
    auto-installation through the CPAN interface..

--- 0.11 (2004-02-22 22:00)

  * Do not use the proprietary "boolean" pragma module, declare our own boolean
    constants instead.
  * Lots of minor documentation fixes.

--- 0.1 (initial release) (2004-02-16 23:00)

# $Id: CHANGES 211 2008-03-23 01:25:20Z julian $
# vim:tw=79 sts=2 sw=2