IMAPFilter 2.8.3 - Apr 27, 2025
  - Include body transfer encoding in fetch_structure() return value.
  - Bug fix; minor incompatibility with Lua 5.3 and 5.4

IMAPFilter 2.8.2 - Dec 26, 2023
  - Add IMAP support for UTF-8 (RFC 6855) when "charset" is set to "UTF-8"
  - Don't use FETCH FAST macro use for better compatibility
  - Bug fix; recovery mechanism error on Lua 5.1

IMAPFilter 2.8.1 - Jan 8, 2023
  - Add support for non-write actions on read-only mailboxes.
  - Add new parameter to write process ID (PID) to file.

IMAPFilter 2.8.0 - Jan 6, 2023
  - New, more advanced, robust, and flexible recovery mechanism, replaces the
    old automatic recovery functionality. Note that, the config must be updated
    to use the new mechanism, otherwise no recovery will take place on errors.
  - Bug fix; potential failure when deleting mailbox while mailbox is selected.

IMAPFilter 2.7.6 - Aug 6, 2022
  - Support building with OpenSSL 3.0.0 and later.
  - Several minor improvements to documentation and example code.
  - Removed deprecated CRAM-MD5 mechanism.
  - Bug fix; session was destroyed incorrectly on login failures.
  - Bug fix; potential session management problems.

IMAPFilter 2.7.5 - Dec 5, 2020
  - New "hostnames" option can be used to disable hostname validation.
  - Bug fix; "certificates" option incorrectly controlled hostname validation.

IMAPFilter 2.7.4 - Nov 18, 2020
  - Bug fix; incorrect argument to regular expression compile function.

IMAPFilter 2.7.3 - Nov 14, 2020
  - Bug fix; incorrect free of compiled pattern.
  - Unexpected network errors and IMAP BYE are now logged.

IMAPFilter 2.7.2 - Nov 10, 2020
  - Makefile is back to being Lua version agnostic.

IMAPFilter 2.7.1 - Nov 9, 2020
  - Makefile now builds with Lua 5.4 and PCRE2.

IMAPFilter 2.7 - Nov 8, 2020
  - Lua 5.4 compatibility (the codebase can still be compiled with versions
    5.3, 5.2 and 5.1).
  - PCRE2 compatibility (version 10.00 and later)
  - New error code is returned if certificate verify fails.
  - Bug fix; add missing truststore option from brief usage message.

IMAPFilter 2.6.16 - Nov 23, 2019
  - Bug fix; escape the double-quote character in passwords.

IMAPFilter 2.6.15 - Nov 14, 2019
  - Bug fix; try to setup both a CA file and path for SSL validations.

IMAPFilter 2.6.14 - Nov 1, 2019
  - Bug fix; OpenSSL version mess up for SSL hostname validation.

IMAPFilter 2.6.13 - Sep 17, 2019
  - Support for SSL hostname validation.

IMAPFilter 2.6.12 - Oct 3, 2018
  - Support for Server Name Indication (SNI).
  - The searching methods return values are described in the config man page.
  - Example of using the enter_idle() function in the sample extend file.

IMAPFilter 2.6.11 - Nov 19, 2017
  - Support for interrupting IDLE mode with SIGUSR1/SIGUSR2.
  - New "persist" option to try to recover a connection indefinitely.
  - New "range" option to limit messages included in a range.
  - Bug fix; always close selected mailbox before check_status().
  - Bug fix; closing of selected mailbox twice with fetch_message().

IMAPFilter 2.6.10 - Dec 16, 2016
  - Bug fix; segmentation fault on some OpenSSL builds.

IMAPFilter 2.6.9 - Dec 6, 2016
  - Bug fix; possible problem during STARTTLS negotiation.

IMAPFilter 2.6.8 - Nov 26, 2016
  - Support building with OpenSSL 1.1.0.

IMAPFilter 2.6.7 - Jun 7, 2016
  - A dry-run mode that disables all actions that modify data.
  - Bug fix; handle IDLE untagged responses that are received in pieces.

IMAPFilter 2.6.6 - Jan 23, 2016
  - Bug fix; print an error message if "ssl" has been set to "ssl3".

IMAPFilter 2.6.5 - Jan 18, 2016
  - Possible to build again with OpenSSL when support for SSL 3.0 is disabled.

IMAPFilter 2.6.4 - Dec 8, 2015
  - Support for OAuth 2.0 and the XOAUTH2 authentication mechanism.

IMAPFilter 2.6.3 - Sep 30, 2015
  - Support for loading a default CA certificates file.
  - A new has_unkeyword() method to search messages without a keyword flag set.
  - Bug fix; double quotation around keyword sent by the has_flag() method.

IMAPFilter 2.6.2 - Jun 30, 2015
  - Bug fix; drop connection on local certificate mismatch.

IMAPFilter 2.6.1 - Jun 29, 2015
  - Support for loading the system's CA certificates from a file.
  - Bug fix; flusing of standard output/error in a some cases.

IMAPFilter 2.6 - Jun 16, 2015
  - Optimizations that vastly improve performance of the meta-searching
    functionality, by making subsequent search requests limit their scope based
    on the results already returned by previous requests (previously this was
    the case only for the match_*() methods).
  - Lua 5.3 compatibility (the codebase can still be compiled with versions 5.2
    and 5.1).
  - A new "limit" option can be used as a work-around for problems that some
    servers have with long requests.
  - The documentation now clarifies how to make the client block indefinitely.
  - Bug fix; the check_status() method now returns 4 numbers on error as
    described in the documentation (just negative values in this case).
  - Bug fix; flushing of default output on password prompt.
  - Bug fix; program fault when very long requests were to be sent.

IMAPFilter 2.5.7 - Nov 16, 2014
  - Support for automatic validation of SSL connections, using the operating
    system's installed trusted CA certificates (usually from authorities that
    are shipped with web browsers).
  - A new "wakeonany" option makes it possible to end IDLE mode on any event,
    not just on new messages.
  - A new "reenter" option controls whether IDLE mode should be re-entered,
    after the recovery of the session, which makes it possible to continue with
    the execution of the next line in the configuration file.
  - The documentation now mentions that the contain_*() methods do
    case-insensitive searching (an IMAP limitation).
  - The documentation now has a better explanation of the arrived_*() and
    sent_*() methods.
  - Bug fix; the value returned by the copy method was incorrect in some cases.

IMAPFilter 2.5.6 - Oct 27, 2013
  - Possible to build again with OpenSSL older than version 1.0.1 (was a
    requirement for the previous release due to new protocols TLS 1.1/1.2).
  - Support for reading the configuration from the standard input stream.
  - New makefile dist target, which can be used to create distribution archives.

IMAPFilter 2.5.5 - Jun 8, 2013
  - Work-around for some servers that send an unexpected APPEND response.
  - The serial number of the certificates is taken into account, because some
    servers send different certificates with the same subject and issuer.
  - Details of the stored certificates are written to the certificates file, in
    order to make it easier to distinguish each of them.
  - Support for TLS versions 1.1 and 1.2 for secure connections.

IMAPFilter 2.5.4 - Apr 9, 2013
  - Some server responses are now parsed less stricly.
  - More detailed information is now printed when there's an error.
  - Bug fix; various corrections in the recovery mechanism.

IMAPFilter 2.5.3 - Jul 22, 2012
  - New implementation for international mailbox names.
  - Bug fix; wrong variable name in one of the examples on extending.
  - Bug fix; an OpenSSL compilation warning.

IMAPFilter 2.5.2 - Feb 29, 2012
  - Persistent errors or connection failures are now ignored when running in
    daemon mode, and a reconnection is attempted during the next loop iteration.
  - Bug fix; problems with failure handling during login/logout.

IMAPFilter 2.5.1 - Feb 27, 2012
  - Support for recovery of a session after a BYE response is received.
  - Option to control in which cases a terminated session will be restored.
  - Bug fix; a BYE response could sometimes get incorrectly ignored.

IMAPFilter 2.5 - Feb 23, 2012
  - Support for recovery of a session when a network failure is encountered,
    and other robustness improvements.
  - Informational messages are printed also for the fetch and append methods.
  - Lua 5.2 compatibility, while the codebase can still be compiled with
    version 5.1.
  - The OpenSSL library is now a mandatory build requirement.
  - Bug fix; unrecoverable login failures did not result in aborting of the
    execution of the configuration.
  - Bug fix; when messages were appended to a mailbox that did not exist, it
    failed to create the mailbox and then retry the appending.
  - Bug fix; misleading errors were printed on some SSL failures.
  - Bug fix; protected call of the commands to execute in the daemon function
    could hide important failures.
  - Bug fix; the man page had an incorrect description of the -d option.
  * Support for the old deprecated 1.x configuration format has been removed,
    and the current 2.x format can only be executed from now on.

IMAPFilter 2.4.2 - Jan 19, 2012
  - Bug fix; some ASCII characters in mailbox names were incorrectly converted
    to UTF-7.

IMAPFilter 2.4.1 - Dec 8, 2011
  - Bug fix; become_daemon() failure.

IMAPFilter 2.4 - Dec 6, 2011
  - Support for non-ASCII mailbox names.
  - New environment variable to set the configuration directory.
  - Bug fix; parsing of some server responses was broken since the previous
    release.
  - Bug fix; the match_field() method matched on the whole header field,
    instead of only the header field body.
  - Bug fix; debug file check caused printing of a misleading error message.
  - Bug fix; typo error in a configuration man page example.

IMAPFilter 2.3 - Aug 6, 2011
  - Support for appending/uploading messages to mailboxes.
  - Debug file option now takes filename argument.
  - New simplified configuration and building procedure.
  - Bug fix; in some cases a mailbox was incorrectly assumed selected.
  - Bug fix; in some cases server capabilities needed update after login.
  - Bug fix; timeout problem with CRAM-MD5 authentication.
  - Bug fix; some servers send non-ASCII characters in their responses.

IMAPFilter 2.2.3 - Mar 6, 2011
  - Project moved to GitHub.
  - Changed file and directory structure.
  - The next UID is returned as an additional return value of check_status().
  - All processing methods now return a boolean based on their success.
  - Bug fix; a lost connection is now handled better by trying to reconnect.
  - Bug fix; in some cases in IDLE a message had arrived but was ignored.
  - Bug fix; in some servers the initial IDLE reply wasn't handled correctly.
  - Bug fix; typo errors in the documentation.

IMAPFilter 2.2.2 - Jan 23, 2010
  - Bug fix; a couple of errors in the extending examples file.

IMAPFilter 2.2.1 - Jan 20, 2010
  - A global option for the IDLE refreshing interval was added.
  - Bug fix; more detailed reporting when SSL socket errors occur.

IMAPFilter 2.2 - Dec 30, 2009
  - Support for combining searching methods in multiple mailboxes at the same
    or different accounts and processing of the results in bulk.
  - Support for meta-searching that allows searching on the previous searching
    results.
  - The processing and fetching methods were enhanced to reflect the new
    changes and the documentation was updated.
  - Global options for the message cache and the certificates were added.
  - Bug fix; questions for certificates are not asked while in daemon mode, but
    instead an error is printed.
  * A different format is used for the returned structures of the searching
    methods, due to the introduction of multiple mailbox searching and
    meta-searching, and thus any configuration files that rely on them should
    be updated.  Consequently, the processing and fetching methods have been
    also enhanced and the relevant documentation updated, and while these
    changes are backwards compatible, an update of the configuration file is
    still recommended.

IMAPFilter 2.1.2 - Dec 3, 2009
  - Bug fix; cache for message parts didn't work correctly.
  - Bug fix; documentation error.

IMAPFilter 2.1.1 - Nov 24, 2009
  - Bug fix; global option timeout and enter_idle() didn't play well together.

IMAPFilter 2.1 - Nov 23, 2009
  - Support for the IMAP IDLE extension (RFC 2177) through the enter_idle()
    method.
  - Support for fetching of a message's body structure through the
    fetch_structure() method, and of a message's specific body part through the
    fetch_parts() method.
  - Addition of a global option that controls the character set used for all
    the searching methods.
  - Bug fix; fetching of non-existent messages.
  - Bug fix; no trailing end-of-line characters in the results of
    fetch_fields().

IMAPFilter 2.0.11 - Sep 20, 2009
  - Bug fix; fetching of messages with empty body.
  - Workaround for problematic IMAP server sending non-compliant mailbox status
    information.

IMAPFilter 2.0.10 - Feb 16, 2008
  - Bug fix; failed a great number (tens of thousands) of commands were
    exchanged with an IMAP server.
  - Bug fix; failed to fetch the body of some messages in some extremely rare
    occasions.
  - Bug fix; the description for the contain_header() method was clarified.

IMAPFilter 2.0.9 - Dec 26, 2007
  - Bug fix; the match_*() methods failed to match messages.
  - Bug fix; the match_*() methods failed with an error when no messages
    matched.
  - Bug fix; note added in the documentation about the need to use double
    backslashes inside of regular expression patterns.

IMAPFilter 2.0.8 - Dec 23, 2007
  - Bug fix; on some platforms it is necessary to link against the math library.

IMAPFilter 2.0.7 - Dec 22, 2007
  - Bug fix; the match_*() methods failed with an error message.

IMAPFilter 2.0.6 - Oct 7, 2007
  - Bug fix; the search query that was sent with the select_all() method had an
    incorrect format and this caused an error in some mail servers.

IMAPFilter 2.0.5 - Oct 4, 2007
  - Bug fix; an error in the sample extensions file.
  - Bug fix; typo errors in the manual page.
  - The documentation was updated with details and examples on how to access
    mailboxes inside folders.
  - Examples were added on how to define composite filters that include
    multiple searching rules.

IMAPFilter 2.0.4 - Sep 27, 2007
  - Bug fix; the send_query() method didn't return the special form of table
    that the rest of the searching methods did.
  - An additional searching method has been added to search for keyword flags
    set.
  - A new variable that was added to the Makefile makes it possible to set an
    alternative environment for the installation path.

IMAPFilter 2.0.3 - Jul 27, 2007
  - Bug fix; part of the program's functionality didn't seem to work at all.
    (did nothing), due to problem when providing the results from searching
    methods to processing methods.

IMAPFilter 2.0.2 - Jun 30, 2007
  - Bug fix; message cache problem due to non-use of message UIDs.

IMAPFilter 2.0.1 - Jun 29, 2007
  - Bug fix; character set problem with 1.x configuration files.
  - Bug fix; typo errors in the documentation.

IMAPFilter 2.0 - Jun 27, 2007
  - New, more powerful, feature rich and yet simpler configuration file.
  - Easier object oriented view of accounts and mailboxes.
  - Simpler approach to filters, with infix logical or/and/not operators.
  - No more need to mess with server search queries.
  - More and simpler functions instead of few and complicated ones.
  - More feature complete interface that can now even manipulate mailboxes.
  - Regular expressions integrated into the searching interface.
  - Effective caching subsystem when fetching message parts.
  - Can still read old version 1.x configuration files for compatibility.
  - Lua 5.1 and the PCRE library are now requirements.
  * The configuration file format has changed.  The new format is not backwards
    compatible, and thus it should not be mixed with the old format.
    Nevertheless, configuration files that employ the old, and now deprecated,
    format can still be read and executed as before.

IMAPFilter 1.3 - Feb 13, 2007
  - Perl Compatible Regular Expression (PCRE) support.
  - Compile against Lua 5.1 by default.
  - Bug fix; program fault in some cases and when namespace prefix was empty.
  - Bug fix; program fault on some platforms when running in verbose mode.

IMAPFilter 1.2.2 - Aug 1, 2006
  - Bug fix; a mix up of connections could happen in certain circumstances,
    when a hostname and/or username was a prefix of another hostname and/or
    username respectively, or when the same hostname and username was used to
    connect to a different port.
  - Bug fix; the list()/lsub() functions parsed mailboxes/folders whose names
    contained spaces incorrectly.
  - The list() function now does not return the folder itself, when listing
    mailboxes inside a specific folder.
  - It is now possible to define new user keywords for messages inside a
    mailbox, apart from the standard system flags.

IMAPFilter 1.2.1 - Mar 9, 2006
  - Buf fix; program fault when using the fetch*() family of functions.

IMAPFilter 1.2 - Mar 2, 2006
  - IPv6 support.
  - Lua 5.1 compatibility.
  - Bug fix; handle messages containing binary data.
  - Bug fix; problems with CPU utilisation when the inactivity timeout timer
    was set.

IMAPFilter 1.1.1 - Nov 11, 2005
  - Bug fix; minor memory leak.
  - Bug fix; on some systems, failure resulted while disconnecting from all the
    servers, during the shutdown phase just before exiting.

IMAPFilter 1.1 - Aug 24, 2005
  - Addition of the list() and lsub() commands, that make it possible to get a
    list of the available mailboxes or only of those that are subscribed.
    Implementation of the IMAP LIST/LSUB commands, with additional support for
    the IMAP CHILDREN (RFC 3348) and IMAP NAMESPACE (RFC 2342) extensions.
  - New program option to execute a string from the command line, without
    loading a configuration file.
  - New program option to enter interactive mode after executing the
    configuration file or the command line.
  - Servers that reply with multiple SEARCH responses are taken into
    consideration.
  - Bug fix; failure to parse the response to fetchfast() that some mail
    servers sent.
  - Bug fix; in some systems and when in debug mode, an empty namespace caused
    program fault.

IMAPFilter 1.0.1 - Aug 22, 2004
  - Bug fix; in some cases processing of messages with an empty body caused
    failure.
  - Bug fix; an invalid namespace prefix was inserted in mailbox names of some
    mail servers.
  - Unique message identifiers are now used by default, instead of message
    sequence numbers, when accessing messages in a mailbox.
  - Sequence set ranges are generated and sent to the mail server instead of
    enumerations, when this is possible.
  - The client now limits the length of the command lines it generates to
    approximately 1000 octets, by splitting the request into multiple commands.
  - Systems that have no limit on the number of bytes in a pathname are now
    considered.
  - Debug files are now written in $HOME/.imapfilter/ instead of /tmp/.

IMAPFilter 1.0 - May 23, 2004
  - Initial release of IMAPFilter with extension language Lua.
