Sophie

Sophie

distrib > Mageia > 7 > i586 > media > core-updates > by-pkgid > c43d99b5f4a2e8d76a58d7d3790db733 > files > 228

cyrus-imapd-2.5.11-7.1.mga7.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org" />
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Changes to the Cyrus IMAP Server</title>
</head>
<body>

<h1>Changes to the Cyrus IMAP Server since 2.5.9</h1>
<h2>Dependency changes</h2>
<ul>
<li>Jansson versions &gt;= 2.3 are now supported (was &gt;= 2.7)</li>
<li>Restored support for AutoConf 2.63</li>
<li>GCC 6 is now supported</li>
</ul>
<h2>Other changes</h2>
<ul>
<li>master(8) now supports a "-V" (print version and exit) option</li>
<li>version information is now based on git describe, not hard-coded strings</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>Fixed Issue #34: imapd in murder no longer crashes on MOVE to nonexistent folder
(thanks Wolfgang Breyha)</li>
<li>Fixed Issue #15: replication no longer crashes on mailboxes that are too old to be
replicated.  Instead, it fails with an error and logs a warning that they need to be
reconstructed</li>
<li>Fixed Issue #45: extended LIST doesn't lose options when proxied to backend</li>
<li>Fixed Task #142: extended LIST response no longer missing \HasNoChildren flag on last
mailbox</li>
<li>Fixed Issue #49: httpd no longer crashes with assertion failure on shutdown after
CardDAV has been used</li>
<li>Fixed Issue #31: the ldap_timeout setting is now used correctly</li>
<li>Fixed bugzilla #3909: idled(8) no longer runs as root (thanks Carlos Velasco)</li>
<li>Fixed Issue #5: renaming folder with annotations no longer increases annotation quota usage</li>
<li>Fixed: URLFETCH crash when section is NULL</li>
<li>various build system improvements</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.8</h1>
<h2>Dependency changes</h2>
<ul>
<li>Libical 2.0.0 is now supported.</li>
<li>preliminary support for OpenSSL 1.1.0 (not yet released)</li>
</ul>
<h2>Other changes</h2>
<ul>
<li>ipurge(8) now supports a &#8220;-n&#8221; (dry run) option (thanks Valentin Vidic)</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>Fixed: imapd now proxies LIST (special-use) to backend (thanks John Capo)</li>
<li>Fixed: sync_client handles its shutdown file more reliably (thanks John Capo)</li>
<li>Fixed: httpd no longer crashes with assertion failure on shutdown after
CalDAV has been used</li>
<li>Fixed bugzilla #3938: squat search now handles pre-2.5 cyrus.squat data</li>
<li>Fixed Issue #5: twoskip database I/O performance in unlocked foreach</li>
<li>various build system improvements</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.7</h1>
<h2>Murder changes</h2>
<ul>
<li>Allow replicated backends in a discrete Murder to both actively
participate in the Murder.</li>
<li>When choosing between ANNOTATEMORE and METADATA, favour what the
client used.</li>
</ul>
<h2>Other changes</h2>
<ul>
<li>cyr_dbtool now supports improved_mboxlist_sort (-M)</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>Fixed: master on pselect systems no longer chokes on repeated interrupts
(thanks Jens Erat and team)</li>
<li>Fixed: better iOS CalDAV support (don&#8217;t announce VPOLL)</li>
<li>Fixed: backported version detection code to detect future versions</li>
<li>Fixed bug #3927: don&#8217;t break cyrus.index on XFER of mailbox with annotations
(thanks Wolfgang Breyha)</li>
<li>Fixed: replication/XFER of mailbox names containing &#8216;&#64;&#8217;</li>
<li>Fixed: METADATA and GETMETADATA pattern/list recognition</li>
<li>Fixed bug #3862: don&#8217;t leave behind inconsistent mailboxes when
mupdate fails during mailbox rename</li>
<li>Fixed compilation with Sun Studio 12 C Compiler (thanks Marty Lee)</li>
<li>Fixed bug #3765: ctl_cyrusdb now uses database paths from imapd.conf
(thanks Simon Matter)</li>
<li>Fixed T227: service processes no longer crash with &#8216;-T 0&#8217; argument
(thanks Ian Batten and Jens Erat)</li>
<li>various build system fixes</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.6</h1>
<h2>Security fixes</h2>
<ul>
<li>CVE-2015-8077, CVE-2015-8078: protect against integer overflow in urlfetch range checks</li>
</ul>
<h2>SSL changes</h2>
<ul>
<li><p>Support for legacy SSLv2 and SSLv3 protocols has been removed</p>
    <p>These protocols were previously enabled by default, but could be disabled by
    removing them from tls_versions in imapd.conf(5). They are now completely unsupported.</p>
    <p>Administrators needing to support these protocols may find a patch in
    contrib/allow-broken-sslv23.patch. With this patch, SSLv2 and SSLv3 will be disabled
    by default, but can be enabled by adding them to tls_versions. Users of this patch do
    so at their own risk.</p>
</li>
<li><p>Support for TLS compression has been removed (thanks Ondřej Surý)</p>
    <p>This was previously disabled by default, but could be enabled with tls_compression
    in imapd.conf(5). It is now completely unsupported.</p>
</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>Fixed: crash in sync_server when built with buggy Sun CC (thanks Jens Erat)</li>
<li>Fixed bug #3908: crash in ctl_mboxlist -m</li>
<li>Fixed: setrlimit error on startup</li>
<li>Fixed T216: don’t break quotas when transferring mailboxes between backends</li>
<li>Fixed: idled shutdown on platforms without pselect (thanks Thomas Jarosch)</li>
<li>Fixed: autocreate_sieve now uses sievedir setting correctly</li>
<li>Fixed bug #3907: cyradm --cadir option is now called --capath, and works (thanks Leena Heino)</li>
<li>Fixed bug #3905: fix segfault in all daemons when built with -DUSE_SETPROCTITLE</li>
<li>Fixed: pop3d no longer applies plaintextloginpause to TLS connections</li>
<li>Fixed bug #3866: lmtpd now consults local mailboxes.db first, before mupdate master (thanks Michael Menge)</li>
</ul>
<h2>Debian patches</h2>
<p>A number of patches from Debian’s repository have been merged. Thanks to the various
developers who contributed them to the Debian project, and to Ondřej Surý for collating
and sending them upstream.</p>

<h1>Changes to the Cyrus IMAP Server since 2.5.5</h1>
<h2>New imapd.conf options</h2>
<ul>
<li>tls_required (default: 0). Set this to 1 to require a TLS session for ALL authentications,
not just plain ones (thanks Carlos Velasco)</li>
</ul>
<h2>New cyradm options</h2>
<ul>
<li>--tlskey keyfile: use certificate with keyfile to authenticate with server</li>
<li>--notls: disable StartTLS negotiation</li>
<li>--cafile cacertfile: Use CA certificate file to validate server certificate</li>
<li>--cadir cacertdirectory: Use CA certificate directory to validate server certificate</li>
<li>Thanks Leena Heino and Carlos Velasco</li>
</ul>
<h2>Bug fixes</h2>
<ul>
<li>Fixed: cyr_synclog checks its arguments more strictly to avoid producing junk sync loc entries</li>
<li>Fixed: reconstruct no longer segfaults on failure on Solaris 10 (thanks Marty Lee)</li>
<li>Fixed: cyradm metadata implementation cleaned up and output made consistent (thanks Leena Heino)</li>
<li>Fixed: timsieved no longer discloses name/version if ServerInfo is Off or Min (thanks Carlos Velasco)</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.4</h1>
<ul>
<li>Security fix: compiling with --enable-autocreate no longer allows arbitrary mailbox creation</li>
<li>Fixed T207: don't segfault on mboxutil -d of MBTYPE_DELETED mailboxes (thanks Chris Stromsoe)</li>
<li>Fixed lock management over rename (thanks Thomas Jarosch)</li>
<li>Miscellaneous other fixes (thanks Thomas Jarosch)</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.3</h1>
<ul>
<li>Security fix: handle urlfetch range starting outside message range</li>
<li>Fixed bug: better error messages when reading corrupted twoskip databases</li>
<li>Fixed bug: treat autocreate_quota_messages:0 as unlimited</li>
<li>Fixed T203: make autocreate_quota:0 work as documented</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.2</h1>
<ul>
<li>Fixed T183: don't crash on login when event notifications are enabled</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.1</h1>
<ul>
<li>Fixed T179: ptloader should no longer crash in ptsmodule_standard_root_dn</li>
<li>Improved consistency of event notification parameters</li>
<li>Fixed bug: no longer run out of memory in mupdate with twoskip (mmap leak)</li>
<li>Fixed bug: no longer crash on ctl_mboxlist -d for remote mailboxes</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.5.0</h1>
<ul>
<li>Fixed: allow SYNC_CRC to be optional, making upgrades easier in future</li>
<li>Fixed: XFER deletes source mailbox less aggressively, avoiding data loss under pathological conditions</li>
<li>Fixed T163: XFER no longer bails out on header CRC mismatch</li>
<li>Fixed T117: now error out silently on non-TLS connections to services with implicit TLS</li>
<li>Fixed reconstruct bug: upgrading mailbox format now adds GUIDs to shared folders (Thanks Norbert Warmuth)</li>
<li>Fixed T165: xfer no longer fails due to bad version comparison</li>
<li>Fixed xfer bug: version 2.5 is now detected properly</li>
<li>Fixed T109: XLIST behaviour is now compatible with Outlook 2013 (Thanks Leena Heino)</li>
<li>Fixed T116: LIST now correctly handles domains starting with "inbox."</li>
<li>Fixed T120: admin users can now SETANNOTATION correctly</li>
<li>Fixed T118: imapd no longer crashes when selected mailbox is listed</li>
<li>Fixed T156: LMTP no longer incorrectly rejects messages delivered using 'deliver'</li>
<li>Fixed T76: lmtpd no longer crashes when delivering to a shared mailbox (Thanks Leena Heino)</li>
<li>Fixed quota bug: no longer crash when setting quotas on shared folder hierarchies</li>
<li>Fixed compilation problem on Solaris 10 (Thanks Leena Heino)</li>
<li>Fixed bug: QuotaChange event notification now always includes maxMessages parameter</li>
<li>Fixed bug: event notifications now include paths for shared folders</li>
<li>Fixed bug: GETMETADATA now handles mailbox patterns correctly</li>
<li>Various fixes to compiling and tool chains</li>
<li>cyradm changes:
<ul>
<li>createmailbox command now accepts –specialuse flag if server supports CREATE-SPECIAL-USE</li>
<li>listmailbox command now returns special-use attribute if server supports SPECIAL-USE</li>
<li>listmailbox command now accepts –specialuse flag to list only mailboxes with special-use attribute</li>
<li>cyradm now uses LIST and REMOTE rather than RLIST if server supports LIST-EXTENDED</li>
<li>mboxconfig now accepts –private flag to switch from default shared to private version of an annotation</li>
<li>getmetadata: new command</li>
<li>setmetadata: new command</li>
<li>Cyrus::IMAP::Admin::getinfo now returns a different data structure to support the above</li>
<li>Cyrus::IMAP::Admin new ACL flag for modifying annotations</li>
</ul></li>
</ul>

<h1>Changes from 2.4 to 2.5</h1>
<ul>
<li>Check the release notes online at <a href="https://docs.cyrus.foundation/imap/release-notes/2.5.0.html">https://docs.cyrus.foundation/imap/release-notes/2.5.0.html</a></li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta10</h1>
<ul>
<li>Properly do time range filtering on a recurring event where the
  recurring component isn't the first component in the iCalendar
  stream.</li>
<li>Properly do time range filtering on an uncompleted task with no
  due time.</li>
<li>Added short-circuits to calculation of recurring event time span.</li>
<li>Faster free/busy calculation for non-recurring events.</li>
<li>Added <tt>caldav_mindatetime</tt> and <tt>caldav_maxdatetime</tt>
  options.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta9</h1>
<ul>
<li>DAV DB changes now occur in the mailbox API which means
  that replication works for calendars and addressbooks.</li>
<li>IMAP XFER is now based on replication.</li>
<li>Added support for free/busy query URL to CalDAV.</li>
<li>Authentication for GET/HEAD requests is now done on-demand so that
  free/busy queries and/or calendar subscriptions can be done
  anonymously (subject to ACL).</li>
<li>Added support for VAVAILABILITY, VPOLL, RSCALE to CalDAV based on
  current drafts (requires libical from git).</li>
<li>Updated http_timezone.c to be compliant with current draft.</li>
<li>Numerous other CalDAV fixes/enhancements.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta8</h1>
<ul>
<li>Fixed bug in parsing of Accept header (now accepts <tt>*/*</tt>
  and <tt>type/*</tt>).</li>
<li>Fixed telemetry logging bug (old garbage appearing in log).</li>
<li>Added a workaround for the DELETE bug in MacOS X 10.9.0 Calendar
  client.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta7</h1>
<ul>
<li>Added Timzone Service module along with associated admin tools
  (ctl_zoneinfo, vzic).</li>
<li>Added support for accepting/returning jCal (requires Jansson) and
  xCal data wherever iCalendar data is allowed.</li>
<li>Proxied responses (including chunked) are now piped to client
  rather than being buffered and forwarded.</li>
<li>Better handling of COPY/MOVE between backends (including
  LOCKs).</li>
<li>Fixed "annotation truncation" bug where the largest allowed
  annotation value was slightly less than 4k (solves problem reading
  CalDavZAP settings).</li>
<li>GET on ./well-known now returns a list of /.well-known/ URLs on
  the server.</li>
<li>Added support for X-HTTP-Method-Override header in POST requests.</li>
<li>Added replacement functions for those not present in libxml2 &lt;
  v2.8.0</li>
<li>Plugged a few more memory leaks found by Valgrind.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta6</h1>
<ul>
<li>Plugged several memory leaks found by Valgrind</li>
<li>Less verbose reconnect communication between frontend and
  backend</li>
<li>GET on calendar-home-set now returns a list of subscribe-able
  calendars</li>
<li>Auto-provisioning of calendars/addressbooks now works via a
  frontend proxy</li>
<li>Fixed several conformance bugs detected by CalDAVTester</li>
<li>Added support for optionally adding Content-MD5 header to
  responses (see <tt>httpcontentmd5</tt> option)</li>
<li>Fixed time-based queries for components other than VEVENT</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta5</h1>
<ul>
<li>RSS module now produces Atom 1.0 output rather than RSS 2.0 (we
  prefer IETF standards)</li>
<li>PROPFIND/REPORT allprop/propname requests are now supported</li>
<li><tt>unixhierarchysep</tt> is now supported by all HTTP
  modules</li>
<li>Completely rewrote write_body() - Range requests are now supported
  on non-chunked Content-Encoded data</li>
<li>Added cache control response headers where appropriate to make
  Redbot happy</li>
<li>Fixed handling of telemetry log file descriptors and
  truncation</li>
<li>Allow GET on calendar collections for "exporting" entire
  calendar</li>
<li>Fixed POST on calendar collection (add-member)</li>
<li>Fixed parsing of calendar-query filter</li>
<li>Added several CalDAV/iCalendar validation checks based on
  CalDAVTester results</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta4</h1>
<ul>
<li>Always verify authorization credentials supplied by the client (a
  proxy may be reusing an existing connection as a different user)</li>
<li>Don't bother supporting Digest qop=auth-int since no clients seem
  to use it</li>
<li>Don't show addressbook mailboxes in IMAP LIST output</li>
<li>Plugged leaked memory found by Valgrind</li>
<li>Better handling of request/response bodies</li>
<li>Added <tt>httpprettytelemetry</tt> option</li>
<li>Added <tt>httpallowcors</tt> option (Cross-Origin Resource Sharing)</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta3</h1>
<ul>
<li>Plugged leaked memory found by Valgrind</li>
<li>Rewrote list_feeds() to not use memmem()</li>
<li>OPTIONS method can be used without authentication</li>
<li>Better handling of Connection:keep-alive</li>
<li>Added <tt>httpallowedurls</tt> option</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta2</h1>
<ul>
<li>Fixed security bug where a user-agent could access files
  outside of <tt>httpdocroot</tt>.
<li>Changed annotation entry name scheme to be
  "/vendor/cmu/cyrus-httpd/<" ns-href ">" prop</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17-caldav-beta1</h1>
<ul>
<li>Fixed Bug #3792: Build failures on Solaris 10</li>
<li>Path to user's DAV DB will be created, if necessary</li>
<li>Fixed bug where calendars and addressbooks were using the same
  mailbox type flag</li>
<li>Fixed [un]signed int / size_t mismatches in formatted output</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.17</h1>
<ul>
<li>Added httpd service with CalDAV, CardDAV, RSS, and iSchedule
  modules</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.16</h1>
<ul>
<li>A bunch of cleanups and fixes to compiling</li>
<li>A bunch of sieve cleanups</li>
<li>Fixed bug #3691: unixhierarchysep is now obeyed when printing the
    mailbox name in unexpunge</li>
<li>Fixed bug #3718: crashes fetching message parts</li>
<li>Fixed bug #3719: pop3 seen update of final message in a mailbox</li>
<li>Improved documentation of "proxyservers" option</li>
<li>Fixed bug #3737: lost emails in XFER delivery race</li>
<li>Fixed bug #3725: inefficient statuscache use in some cases</li>
<li>Fixed bug #3484: use of sasl property types (compile fix)</li>
<li>Fixed bug #3754: failure to support binary append.  This was
    found by a popular library switching to using binary appends</li>
<li>Fixed bug #3735: user prefix searching now works with fulldirhash</li>
<li>Fixed bug #3696: can no longer rename the same mailbox twice, which
    left things in a corrupted state if you caught the race.</li>
<li>Fixed bug #3715: using berkeley for mailboxes.db was very
    broken.  It now works.</li>
<li>Fixed bug #3733: reconstruct with missing cyrus.index will use
    file timestamps for internaldate rather than setting it to NOW if 
    internaldate_heuristic is set to standard</li>
<li>Fixed bug #3729: better documentation for xlist-* in 2.4.</li>
<li>Fixed bug #2717: fetches of individual messages or short ranges
    no longer need to parse over the entire index.</li>
<li>Fixed bug #3742: reconstruct can now fix multiple folders
    with the same uniqueid again (regression from 2.3) and also
    sync_client avoids a crash in that broken case.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.15</h1>
<ul>
<li>Bug #3651 - 64 bit dirhash breaks existing systems. NOTE this includes a fix to
  the re-written rehash tool released with 2.4.15</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.14</h1>
<ul>
<li>Bug #3664, #3665 - Sieve filters don't work if mailbox contains dots</li>
<li>Bug #3651 - 64 bit dirhash breaks existing systems.  NOTE - this includes a complete
    rewrite of tools/rehash, making it much simpler and more reliable.  Check the usage
    statement</li>
<li>Bug #1228 - mailbox dumps need to dump quotaroots</li>
<li>Bug #3613 - CATENATE command returns BADURL</li>
<li>Bug #3627 - enabling improved_mboxlist_sort documentation mention subscription files</li>
<li>Bug #3661 - Memory leaks in sync_server, nntpd, popd</li>
<li>Bug #3621 - quota bug involving nested quota roots</li>
<li>Bug #3667 - FLAGS.SILENT needs to return new MODSEQ if QRESYNC enabled</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.13</h1>
<ul>
<li>Bug #2685 - folder delete and annotations</li>
<li>Bug #3381 - tools/rehash script is not 64bit safe</li>
<li>Bug #3405 - Cyrus IMAP  tls support for ctl_mboxlist</li>
<li>Bug #3485 - cyr_expire tries to delete parent directories that are not empty</li>
<li>Bug #3582 - Extra LF+SP characters been inserted in the middle of the XML attachments</li>
<li>Bug #3598 - lmtp auditlog for murder proxy mode</li>
<li>Bug #3623 - OpenBSD (and other platforms without working mmap) multiple bugs</li>
<li>Bug #3626 - Renaming a mailbox doesn't remove old folder</li>
<li>Bug #3628 - folders with spaces and subfolders with same prefix as parent folder don't show up</li>
<li>Bug #3634 - RENAME INBOX no longer works</li>
<li>Bug #3635 - cmd_rename() fails to check error codes</li>
<li>Bug #3636 - unexpunge locks mailbox until all output is emitted</li>
<li>Bug #3637 - imapd and ipop3d in 2.4 no longer log expunge events to syslog</li>
<li>Bug #3638 - sessionid logging improvements for murder environments</li>
<li>Bug #3640 - LMTP accepts NULL bytes in headers, resulting in incorrect header/mail size in meta-data</li>
<li>Bug #3642 - iPhone 5 expects SPECIAL-USE in LIST output</li>
<li>Bug #3649 - unable to remove mailbox</li>
<li>Bug #3650 - ENVELOPE contains unexpected CRLF</li>
<li>Bug #3645 - Ability to delete folder "shared"</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.12</h1>
<ul>
<li>Bug #3565 - fix gcc compiler warnings - thanks
    Dilyan Palauzov &lt;dilyan.palauzov@aegee.org&gt;</li>
<li>Bug #2685 - rename annots in delayed folder delete.
    Avoids annotations "reappearing" when a folder is
    recreated</li>
<li>Bug #3566 - actually fix in a backward compatible
    way.  2.4.12 broke older versions of bison</li>
<li>Lots of small cleanups from CMU as they prepared
    to build RSS into their 2.4 build.  Thanks Ken</li>
<li>Bug #3591/#3609 - fix crash in mupdate on partition move</li>
<li>Bug #3610 - fix replication of partition move</li>
<li>Bug #3564 - document the way prefork interacts
    with multiple network protocols</li>
<li>Bug #3586 - allow rename of "\Noselect" if
    subfolders exist</li>
<li>A handful of small cleanups (#3593, #3594, #3595)
    from David Carter &lt;dpc22@cam.ac.uk&gt;.  Very
    much appreciated</li>
<li>Disabled duplicate_check DEBUG level log messages
    by default.  Thanks Philip Prindeville
    &lt;philipp@redfish-solutions.com&gt;</li>
<li>Bug #3608 - log mailbox name in more sync
    failure cases</li>
<li>Bug #3615 - fix proxyd_disable_mailbox_referrals.
    Thanks Andrew Morgan &lt;morgan@orst.edu&gt;</li>
<li>Bug #3611 - fix crash in sync_mailbox_full if
    expunge fails</li>
<li>Backported some nice fixes from master, including
    safer thread/sort (there were some crashes on bad
    messages before)</li>
<li>Fixed infinite loop on suppress_capabilities with
    substrings of other capabilities.  Ouch.</li>
<li>Fixed LIST and LSUB again - this time to make
    LIST "" "*%" work without breaking other things</li>
<li>Bug #3588 - make XFER not break if the wrong server
    name was used.  The start of making murder safer</li>
<li>Bug #3603 - tidied up usage of kick_mupdate so it
    never gets called on standard murder backends</li>
<li>Bug #3604 - always suppress the DELETED.* mailbox
    names, even if delete_mode is immediate.  It means
    a config change or different frontend won't show
    undeletable mailboxes</li>
<li>Bug #3602 - allow UpperCase in service names to work</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.11</h1>
<ul>
<li>Bug #3150 - fix issue with overview and messages without
    a References header</li>
<li>fixed nntp login with tab and space in password</li>
<li>Bug #3501 - be more relaxed about names of DELETED folders</li>
<li>Bug #3553 - fix QRESYNC passing to murder backend - thanks
    alec &lt;alec@alec.pl&gt;</li>
<li>Bug #3554 - only show ENABLED response the first time each
    option is ENABLEd</li>
<li>Lots of cleanup of build process and backporting of APIs</li>
<li>Bug #3502 - make configure.in more portable - thanks
    OBATA Akio &lt;obata@lins.jp&gt;</li>
<li>Bug #3533 - add missing break statements in sieve -
    thanks Thomas Jarosch &lt;thomas.jarosch@intra2net.com&gt;</li>
<li>Bug #3550 - support wildcards for ACLS in cyradm -
    thanks &lt;mark.cave-ayland@siriusit.co.uk&gt;</li>
<li>Bug #3556 - print remote server in mbpath -
    thanks Wolfgang Breyha &lt;wbreyha@gmx.net&gt;</li>
<li>Bug #3559 - make XFER work with unlimited quota -
    thanks Wolfgang Breyha &lt;wbreyha@gmx.net&gt;</li>
<li>Bug #3547 - use strconcat() in writefile()</li>
<li>fixed a case where skiplist library could write error
    messages directly to stdout</li>
<li>Bug #3545 - fix sign extension in squat_decode_64</li>
<li>Bug #3558 - return error if backend doesn't support
    LIST-EXTENDED</li>
<li>Bug #3565 - clean up in preparation for automake</li>
<li>fixed incomplete authentication checks in nntpd,
    reported by Secunia as SA46093 - thanks Stefan Cornelius,
    Secunia Research</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.10</h1>
<ul>
<li>fixed replication recovery from different messages
    at the each end</li>
<li>Bug #3489 - fixed quotalegacy handling of prefixes so
    only exact subfolders match</li>
<li>Bug #3498 - fixed deletion of users quota files
    with unixheriarchysep enabled, thanks Leena Heino</li>
<li>Bug #3491 - NOOP and UNAUTHENTICATE for timsieved,
    thanks Dilyan Palauzov</li>
<li>Bug #3492 - better response codes for timsieved,
    thanks Dilyan Palauzov</li>
<li>Bug #3497 - fix cmd syslog from master,
    thanks Kristof Katus</li>
<li>Bug #3503 - compilation of perl libraries on
    dragonfly and freebsd, thanks OBATA Akio</li>
<li>Bug #3451 - allow CC to have spaces</li>
<li>Bug #3505 - fix sync_reset,
    thanks David Carter</li>
<li>Bug #3506 - use literal+ for sync_(client|server),
    thanks David Carter</li>
<li>Bug #3300 - use portable function for TCP constants,
    thanks OBATA Akio</li>
<li>Bug #3507 - fix replication recovery with non-delayed
    expunge, thanks Julien Coloos</li>
<li>Bug #3495 - improved duplicate suppression,
    thanks Kristof Katus</li>
<li>Bug #2772/3463 - fixed crashes in THREAD by correcting
    folding of references headers</li>
<li>Bug #3439 - fix ugly syslog message for vacation</li>
<li>Bug #3499 - options to disable namespaces to reduce
    load on big servers with no shared folders.  Thanks
    Olivier ROLAND</li>
<li>Changed skiplist to truncate old files after checkpoint,
    which can save disk space on tmpfs or small ssds when
    old copies were held open by other processes</li>
<li>Made Cyrus more robust against corruption in
    mailboxes.db data, so it will return an error rather
    than crashing on invalid entries</li>
<li>Fix for CVE-2011-3208, a remotely exploitable buffer
    overflow in nntpd - thanks Coverity</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.9</h1>
<ul>
<li>fixed handling of unparsable emails during append (which
    would cause invalid cyrus.index records otherwise)</li>
<li>quota: fix a pile of bugs.  #1801, virtdomain support;
    #2728, slow user delete; #3178, "file name too long" with
    big mailbox names; #3179, quota -f doubles usage.</li>
<li>Bug #3043 - parse multiple groups in headers correctly</li>
<li>Bug #3158 - lmtp backend connection timeout</li>
<li>Bug #3223 - limit MIME parsing depth to avoid stack overflows</li>
<li>Bug #3273 - add SORT=DISPLAY support (but note: still questions
    about correctness of unicode sorting)</li>
<li>Bug #3504 - convert all sieve scripts to \r\n line endings
    on upload</li>
<li>Bug #3402 - options to munge 8bit characters in headers
    during lmtp delivery to avoid backscatter</li>
<li>sync_client: fix broken keepalive TCP options (I doubt anyone
    ever tried to use it)</li>
<li>Bug #3482 - add "-o" option to ipurge to only purge messages
    with \Deleted flag set</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.8</h1>
<ul>
<li>fixed crashes in seen handling</li>
<li>Bug #3453 - fixed LSUB replication</li>
<li>Bug #3442 - allow disabling PCRE if it's buggy at your site</li>
<li>Bug #3443 - LSUB response fixes</li>
<li>Bug #3448 - XFER error handling (murder)</li>
<li>Bug #3437 - fixed regression: quotaroot wasn't being updated on rename</li>
<li>Bug #3456 - fixed crash on rename user.foo user.foo without partition
    change</li>
<li>config update: database paths for most databases are now configurable
    in imapd.conf</li>
<li>Bug #3303 - fixed index lock breaking on XFER (thanks Julien Coloos)</li>
<li>Bug #3457 - fixed ESEARCH parsing (was breaking iPhones)</li>
<li>Bug #3188 - fixed XFER with unlimited quota (thanks again Julien
    Coloos)</li>
<li>Misc other quota fixes (there are still known bugs with the quota
    system)</li>
<li>Bug #3169 - fixed GETQUOTAROOT for domain quotaroots</li>
<li>Bug #3465 - fixed compilation with Perl 5.14 (thanks hsk@imb-jena.de, and
    also thanks to Ondrej Sury who reported it separately)</li>
<li>Bug #3464 - fix for sendmail exec failure.  This was a nasty one, and
    sat with a patch for years.  Big thanks to Jes&uacute;s Roncero for the
    original patch, and to Donald Buczek for re-reporting it.</li>
<li>Bug #3467 - compilation fix for stricter compilers</li>
<li>Bug #3466 - fix FUD client handling of 64 bit time datatypes</li>
<li>Bug #3477 - this is a replay of 3444 and 3446 which only got fixed on
    master, not in stable (thanks Leena Heino for the patch this time)</li>
<li>Bug #3470 - finally fix the underlying logic for LIST/LSUB and
    children matches, which has been bandaid-fixed a few times in the past
    few stable releases</li>
<li>Bug #3438 - fix authentication (-a option) for deliver command</li>
<li>Bug #3431 - actually an enhancement - look for config files in
    $ENV{CYRUS_PREFIX} first</li>
<li>Bug #3430 - fractional days and other units in cyr_expire</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.7</h1>
<ul>
<li>Bug #3428 - allow charset argument to "thread" to be
  quoted</li>
<li>Bug #3429 - fixed mupdate crash</li>
<li>Bug #3404 - had crept back in!  Fix LIST "" user
  properly</li>
<li>Bug #3388 - fix reconstruct internaldate flap
  when file hardlinked with different internaldates</li>
<li>Bug #3410 - don't require a partition on murder
  frontends</li>
<li>Bug #3406 - fix compile on FreeBSD</li>
<li>Bug #3415 - fix nntpd</li>
<li>Bug #3390 - add 'proc_path' config variable</li>
<li>Bug #3364 - allow setting unlimited quota
  through a proxy server</li>
<li>Bug #3433 - append '0.' file rather than deleting
  in reconstruct</li>
<li>Fixed bug in reconstruct where a record rewrite
  lost the cache pointer until you did a SECOND
  reconstruct (no bug number)</li>
<li>Bug #3440 - fixed cyr_expire crash if run with -x</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.6</h1>
<ul>
<li>Fixed Bug #3357 - lmtpd offering STARTTLS in
  pre-authorized mode.</li>
<li>Fixed Bug #3392 - allowing INBOX.INBOX to be
  created if the case didn't match</li>
<li>Fixed Bug #3404 - incorrect LIST "" "user"
  response</li>
<li>Fixed Bug #3417 - crash on zero-byte quota file</li>
<li>Fixed numberous bugs with mailbox upgrades</li>
<li>Fixed replication errors, which have been reported many
  times on the mailing list, but don't have bug numbers.</li>
<li>Increated "paranoia" about record ordering in mailbox,
  which would have detected some bad bugs in replication
  that caused the infinite runaway mailbox filling reported
  in 2.4.6 and below</li>
<li>Increased syslogging detail about replication issues</li>
<li>Fixed reconstruct crash with zero-byte index file</li>
<li>Fixed cyradm perl library path finding</li>
<li>Fixed incorrect use of LITERAL+ formats in our
  responses to clients.  Unreported, but could be
  causing wierd hard-to-track-down bugs out there</li>
<li>Fixed append immediately on create</li>
<li>Upgraded Unicode database to version 6.0</li>
<li>Fixed reconstruct crash on folder names with many
  digits (i.e. ebay auction numbers)</li>
<li>Fixed reconstruct crash with file called '0.'</li>
<li>Made reconstruct '-n' option actually exist, as
  advertised in the man page</li>
<li>Fixed bug #3423 - STARTTLS plaintext command
  injection vulnerability</li>
<li>Bug #3382 Added "failedloginpause" config option</li>
<li>Bugs #3383/3385 Removed some obsolete config options</li>
<li>Bug #3389 $confdir/proc not created on the fly</li>
<li>Bug #3394 fix imtest parsing of MECHLIST</li>
<li>Bug #3399 fix with_ldap option default</li>
<li>Bug #3307 fix mbpath crash on remote mailbox</li>
<li>Bug #3420 use getpassphrase on Solaris, now passwords
  over 8 characters long work with cyrus tools</li>
<li>Bug #3400 and others - lots of bugs with XFER between
  different versions in murder clusters fixed, including
  a bug that caused only mailboxes with zero messages to
  be rejected for upgrade</li>
<li>Bug #3391 fix rename which just moves between
  partitions</li>
<li>Bug #3103 fix imtest using plain authentication when
  it must not</li>
<li>Bug #3426 fix TLS on sockets other than stdin</li>
<li>Added support for BDB versions 5 and above</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.5</h1>
<ul>
<li>Fixed Bug #3370 - corruption on OpenBSD and other
  systems without a reliable mmap</li>
<li>Fixed Bug #3360 - race condition which could lose
  seen data on XFER with upgrade</li>
<li>Lots of documentation updates</li>
<li>Fixed Bug #3355 - added an option to suppress
  items from the capability response (and bug #3356
  when the first attempt was buggy)</li>
<li>Fixed Bug #3357 - crash when calling ctl_mboxlist
  on mailboxes with annotations</li>
<li>Fixed Bug #3369 - crash when undumping mailbox
  during XFER</li>
<li>Fixed Bug #3361 - shared folders not listing in
  LSUB "" % - only with unixheirsep and altnamespace</li>
<li>Fixed Bug #3362 - "too many open files" when doing
  XFER of a user with too many sub mailboxes.  Makes
  XFER less "atomic", but now it works, which is good!</li>
<li>Fixed Bug #3313 - md5 library usage.  Properly this
  time!</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.4</h1>
<ul>
<li>Tidy up of the git version number added to the ID response</li>
<li>Fixed incorrect time field in date searches (Bug #3339)
 - thanks Greg Banks for noticing this one</li>
<li>Fixed reconstruct crash and other potential issues (Bug #3353)
 - first reported Paul Dekkers</li>
<li>Fixed ACL passing for rename/delete on murder backends (Bug #3342)
 - first reported by Robert Spellman</li>
<li>Fixed corruption of long (&gt;1024 byte) seen records on replica
 (Bug #3344) - found at FastMail by Bron Gondwana</li>
<li>Made all perl utilities use /usr/bin/perl in the #! line (Bug #2275)
 - reported by Yann Rouillard over 5 years ago!</li>
<li>Fixed crash on message with incomplete final boundary (Bug #3345)
 - found at FastMail by Bron Gondwana</li>
<li>Regression: sync_crc was being set to 00000000 on repack - introduced
 in 2.4.4 (Bug #3347)  - first found at FastMail, but also seen at
 multiple other sites</li>
<li>Always print [CLOSED] response when selecting a new mailbox, even
 if a CONDSTORE enabling command has not been sent (Bug #3352) - reported
 by Jan Kundr&aacute;t, author of the Trojita IMAP client</li>
<li>Fixed crash with reconstruct -rf and missing mailboxes.db entries
 (Bug #3351) - reported by Giles Malet</li>
<li>Made sync_server report errors earlier if there are extra records
 on the master which aren't present on the replica (Bug #3355)
 - thanks to David Carter for finding it and a first pass at a fix</li>
<li>Stopped expunges to never-reported-messages being showed (basically
 if the 'EXPUNGE' command was run, and it expunged a message that the
 client had never even seen - seriously rare race condition, Bug #3356)
 - discovered by Bron Gondwana hammering a testbed with Dovecot's
 imaptest tool</li>
<li>Fixed compile with old PCRE (Bug #3358) - found and fixed by
 Simon Matter</li>
<li>Fixed missing quota usage after XFER (Buf #3349) - found by
 Dave McMurtrie</li>
</ul>


<h1>Changes to the Cyrus IMAP Server since 2.4.3</h1>
<ul>
<li>Rewrite index_upgrade to always parse the message
  files and re-create cyrus.cache, to avoid upgrade
  upgrade failures where cache errors occured.</li>
<li>Fixed sync_reset handling of user deletions</li>
<li>Fixed proc file handling of LOGIN and
  folder unselect</li>
<li>use cyrus.expunge file (if still present) to
  delete bogus records from a failed index upgrade
  (cause by bugs in earlier version)</li>
<li>detect version 2.5 in XFER to support use with
  master git branch in a murder</li>
<li>made pop3 expunge much more efficient</li>
<li>handle missing seen file in XFER</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.2</h1>
<ul>
<li>Many fixes to replication edge case handling</li>
<li>Added missing flags to reconstruct</li>
<li>Replicate DELETED.user folders in sync_client -u
  (matches XFER behaviour now)</li>
<li>Make sync_client only connect after forking
  in rolling mode.  Fixes two things - ssl crashes
  due to shared resource conflicts, and also means
  master will start up even if the replica is not
  contactable</li>
<li>Fixed crash on cyr_expire and ipurge annotation
  based expiry</li>
<li>Many XFER fixes for compatibility across versions:
 <ul>
 <li>allowing XFER in from delayed_expunge mailboxes</li>
 <li>allowing XFER back all the way to Cyrus 2.2.12.
  This was accomplished by adding logic that can
  generate backwards-compatible older version indexes,
  and version detection from the imapd banner.</li>
 <li>correctly fixing seen information for
  sub-mailboxes on XFER in</li>
 </ul></li>
<li>Multi-target replication.  Strictly this is a new
 feature - there was a broken implementation in 2.4.0,
 which is how this snuck in to the bugfix release.
 It's not super-well documented yet, but it works by
 creating a separate log file for each destination
 "channel", and then running one sync_client process
 per channel, so replication can fall behind on one
 without affecting replication to the other.</li>
<li>Fixed some crashes and errors which occured when
 upgrading and opening corrupted mailboxes</li>
<li>Modified AFS ptloader configure options to allow
 building on more modern systems</li>
</ul>


<h1>Changes to the Cyrus IMAP Server since 2.4.1</h1>
<ul>
<li>Fix build on Solaris</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.4.0</h1>
<ul>
<li>Fix cyrdump to work with -C for alternate config</li>
<li>Change master to process all pending child messages once per
  loop, which fixes a DoS situation if there is too much message churn
  in a slower box - thanks to Henrique de Moraes Holschuh
  &lt;hmh@debian.org&gt;</li>
<li>Reconstruct added flags -R, -U, -o, -O to give options
  handling corrupt or missing files</li>
<li>Reconstruct fixed a pile of bugs, including a nasty one
  which created mailboxes with a UIDVALIDITY of 0</li>
<li>Fixed EXPUNGE in murder</li>
<li>Fixed LSUB where subscribed mailboxes are on
  different murder backends</li>
<li>New build system using git commit ID rather than CVS
  date information to uniquely identify a release or
  development build via the "ID" command.  Also changes
  the CYRUS_VERSION string for builds directly from git.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.x</h1>
<ul>
<li>All databases are now default skiplist, and ctl_cyrusdb
  will automatically convert database type on startup.</li>
<li>make_sha1 and make_md5 are removed (replaced by GUID and
  reconstruct changes)</li>
<li>Charset subsystem rewritten - Unicode 5.2 rather than
 Unicode 2, and UTF-8 support in sieve.</li>
<li>Core mailbox handling code largely rewritten with new APIs, CRC
  checksums, new locking mechanisms, merging of cyrus.index and
  cyrus.expunge, inclusion of user \Seen flag, and much more.</li>
<li>Replication code largely rewritten to provide better performance,
  consistency checking, and recovery from "split-brain" scenarios.</li>
<li>Added support for LIST-EXTENDED IMAP extension.  Removed
support for deprecated (compile-time) LISTEXT IMAP extension.
<i>Based on work by Martin Konold &lt;martin.konold@erfrakon.de&gt;</i></li>
<li>Added support for ESEARCH IMAP extension.</li>
<li>Added support for WITHIN extension to IMAP SEARCH.</li>
<li>Added support for ENABLE IMAP extension.</li>
<li>Added support for QRESYNC IMAP extension.</li>
<li>Added support for URLAUTH=BINARY IMAP extension.</li>
<li>Removed legacy IMAP[2|3|4] cruft.  We now only support IMAPrev1 +
  extensions.</li>
<li>Added support for marking QoS on traffic. (courtesy of Philip
  Prindeville &lt;philipp@redfish-solutions.com&gt;)</li>
<li>Modified <tt>user_deny.db</tt> code to open database once at
  service startup time.</li>
<li>... and hundreds of tiny things too numerous to mention in
  a short change log ...</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.17</h1>
<ul>
<li>Fix for incomplete authentication checks in nntpd,
    reported by Secunia as SA46093 - thanks Stefan Cornelius,
    Secunia Research</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.16</h1>
<ul>
<li>Fix for CVE-2011-3208, a remotely exploitable buffer
    overflow in nntpd</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.15</h1>
<ul>
<li>Added <tt>user_deny.db</tt> to be able to selectively deny users
  access to Cyrus services.</li>
<li>Added <tt>disconnect_on_vanished_mailbox</tt> option.
  See <tt>imapd.conf(5)</tt> for details</li>
<li>Reworked SQL detection code in configure.
  See <a href="install-upgrade.html">install-upgrade.html</a> for more
  details.</li>
<li>Added <tt>popuseimapflags</tt> option which enables setting and
  obeying IMAP flags in the POP server.</li>
<li>Added optimized method of handling an empty maildrop in pop3d.
  Requires <tt>statuscache</tt> to be enabled. (based on work of
  Cyril Servant &lt;elfejoyeux@gmail.com&gt;) </li>
<li>Added <tt>annotation_definitions</tt> option for specifying
  external (third-party) annotations. (courtesy of Thomas
  Viehmann &lt;tv@beamnet.de&gt;)</li>
<li>Added <tt>sync_compress</tt> option to compress replication traffic</li>
<li>Added <tt>user_folder_limit</tt> option to limit the number of
  folders a non-admin user is allowed to create.</li>
<li>Added <tt>-x</tt> option to <tt>cyr_expire</tt> to disable expunge</li>
<li>Track idle state so a shutdown doesn't leave idled killing random other
  processes on a busy system</li>
<li>Fix missing closedir() - bug #3159 (thanks Simon Matter)</li>
<li>Make Cyrus compile with older GCC (thanks Simon Matter)</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.14</h1>
<ul>
<li>Fixed
 CERT <a href="http://www.kb.cert.org/vuls/id/336053">VU#336053</a>
 - Potential buffer overflow in Sieve.</li>
<li>Added new <tt>cyr_df</tt> tool for reporting Cyrus spool partition
disk space usage.</li>
<li>Fixed a crash when selecting a folder after using the SCAN command</li>
<li>Split mupdate_synchronize() into network scarfing and mailbox
  comparision pieces.  This allows us to not lock out the
  mailboxes.db and mupdate clients while scarfing the UPDATE
  response, which can be quite time consuming over slow links.</li>
<li>Added support for MUPDATE COMPRESS and IMAP COMPRESS commands
  which help speed up bulk data commands over slow links.
  <i>Inspired by work of Dave Cridland &lt;dave@cridland.net&gt;</i></li>
<li>Allow frontend servers in a Murder to proxy the CREATE, DELETE,
  SETACL, SETQUOTA, and GETQUOTA commands for toplevel mailboxes.  In
  order for a frontend to know where to CREATE a toplevel mailbox,
  either the <tt>defaultserver</tt> option must be set (ALL new
  toplevel mailboxes are created on this particular server), or
  the <tt>serverlist</tt> option must be set (new toplevel mailboxes
  are created on whichever server has the most available spool space).</li>
<li>Use delayed expunge in ipurge to avoid corrupting cache file
  and as a bonus make it unexpungable.</li>
<li>Run daily tasks at the same time each day instead of exactly
  24 hours apart to detect daylight savings changes</li>
<li>Fixed Bug #2727 by immediately expunging old messages on INBOX
  to INBOX.sub rename</li>
<li>Fixed incorrect quota calculations on sync_server when replicating
  unexpunged messages (thanks David Carter)</li>
<li>Allow user rename to succeed even if the user is over quota</li>
<li>Fixed a skiplist foreach bug and various datatype size issues that
  caused problems on some 64 bit architectures</li>
<li>Added additional logging of mailbox events if condstore is enabled
  to ensure modseq values are always correctly replicated</li>
<li>Fixed "DBERROR db4: environment reference count went negative" by
  forking idled before opening the database environment.</li>
<li>Fixed a squatter bug where any short search term (&lt; 4 characters)
  would cause squatter to return all messages regardless of the other
  filters being applied</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.13</h1>
<ul>
<li>Fixed incompatibility between older ManageSieve clients and newer
servers that issue an auto-capability response after AUTH with a
SASL security layer.</li>
<li>Fixed quota calculation to ignore files not mentioned in the
  index</li>
<li>Correct cache truncation after an aborted append (was leaving
  empty holes in the cache file>)</li>
<li>Fixed ACLs copying when renaming users</li>
<li>Fixed TLS session reuse</li>
<li>Log more detail about changes done by a reconstruct (indicating
  that there were problems with the mailbox before hand - mainly
  as a debugging aid)</li>
<li>Ensured that the longest possible named mailbox can still be
  deleted when delayed delete is enabled by increasing buffer sizes</li>
<li>Add configuration option mailbox_default_options allowing
  (for example) modsequences to be turned on for all new mailboxes</li>
<li>Replication:
<ul>
  <li>added -R option to sync_client to do rolling replication in the
   foreground (to run under supervise or similar)</li>
 <li>made cyr_synclog run as cyrus user if started as root</li>
 <li>Changed ADDSUB/DELSUB replication to replicate current state
   rather than log explicit changes, avoiding a bug where if multiple
   subscription changes happened in one sync run, the replica could
   be incorrect</li>
 <li>Changed replication logging related to user creation and mailboxes
   to ensure correct replication of delayed delete of entire users</li>
 <li>Always overwrite the seen DB on the replica with the full DB from
   the master on "setseen_all" to guarantee consistency</li>
 <li>Sync all mailbox annotations, not just condstore, ensuring
   mailbox is consistent on both ends (solves POP3_NEW_UIDL bug)</li>
</ul></li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.12</h1>
<ul>
<li>Added an experimental "sql" backend for cyrusdb.  Currently MySQL,
PostgreSQL, and SQLite are supported.  See the new <tt>sql_*</tt>
options for details.</li>
<li>Added support for IMAP [CAPABILITY] response code to client-side
of Murder proxies.</li>
<li>Added support for ManageSieve auto-capability response after
STARTTLS and after AUTH with a SASL security layer.</li>
<li>Made <tt>MAXWORD</tt> and <tt>MAXQUOTED</tt> sizes configurable
  via <tt>imapd.conf</tt> <i>-- courtesy of Fastmail.fm</i>.</li>
<li>Rewrote <tt>cyrusdb_quotalegacy.c</tt> to use <tt>readir()</tt>
  rather than <tt>glob.c</tt>.  This avoids a potential crash due to
  conflicts between glibc and Heimdal implementations of <tt>glob()</tt>.</li>
<li>Added support for <tt>fulldirhash</tt> to <tt>ctl_mboxlist -v</tt>.</li>
<li>More skiplist transaction fixes <i>-- courtesy of Fastmail.fm</i>.</li>
<li><tt>cyr_expire</tt> no longer has a default of 0 (zero)
  for <tt>-X</tt> and <tt>-D</tt>.  These options must be used
  explicitly in order to have the desired effect.</li>
<li>Added <tt>sieve_utf8fileinto</tt> option.</li>
<li>Added <tt>sieve_sasl_send_unsolicited_capability</tt>
  and <tt>sieve_sasl_expect_unsolicited_capability</tt> options.</li>
<li>Several 32/64-bit compatibility fixes.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.11</h1>
<ul>
<li>Added <tt>statuscache.db</tt> to cache IMAP STATUS data which
significantly reduces the amount of I/O necessary when neither the
mailbox nor \Seen state has changed
<i>-- courtesy of Fastmail.fm</i>.</li>
<li>Added option to <tt>unexpunge</tt> to restore messages by time
interval
<i>-- courtesy of David Carter</i>.</li>
<li>Implemented undocumented IMAP SCAN extension, which allows
Pine/Alpine to do cross-mailbox searches
<i>-- based on work of David Carter</i>.</li>
<li>Implemented incremental squat updates (see <tt>squatter.8</tt>)
<i>-- courtesy of David Carter</i>.</li>
<li>Fixed major bugs in <tt>reconstruct -k</tt> implementation
<i>-- courtesy of David Carter</i>.</li>
<li>Added code to promote transaction safety and to track the lock
status of skiplist databases <i>-- courtesy of Fastmail.fm</i>.</li>
<li>Added option to <tt>mbexamine</tt> to compare quota usage in
cyrus.index to the actual message file sizes.</li>
<li>Allow long lines in <tt>imapd.conf</tt> to be split across
multiple lines by using backslash as a continuation character.</li>
<li>The Sieve compiler now translates UTF-8 mailbox names used in
<tt>fileinto</tt> to modified UTF-7 so that messages will be
successfully inserted into the mailbox.</li>
<li>Use a more appropriate argument with LHLO command.</li>
<li>Added <tt>serverinfo</tt> option to control the information
displayed in banner greetings and capability responses.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.10</h1>
<ul>
<li>Fixed several skiplist bugs <i>-- courtesy of Fastmail.fm</i>.</li>
<li>Add robustness to skiplist recovery <i>-- courtesy of
Fastmail.fm</i>.</li>
<li>Added support for modification sequences to replication protocol
(for CONDSTORE) <i>-- courtesy of David Carter</i>.</li>
<li>Fixed delayed delete replication <i>-- courtesy of Fastmail.fm</i>.</li>
<li>Allow [un]deleting of user INBOXes (renaming to/from deleted
hierarchy) to work when using delayed delete
<i>-- courtesy of Simon Matter</i>.</li>
<li>Fixed interaction with removal of rights and
<tt>implicitownerrights</tt>.</li>
<li>Fixed parsing of single FETCH item when using FETCH
modifiers.</li>
<li>Prevented SSL_accept() from blocking indefinitely when using
TLS/SSL.  This should eliminate a lot of hung SSL-wrapped processes.</li>
<li>Allow STARTTLS to be used to externally preauth'd LMTP
connections.</li>
<li>Allow a TLS client certificate to be sufficient authentication for
LMTP.</li>
<li><tt>timsieved</tt> now automatically sends CAPABILITY response
after STARTTLS.  This code was reintroduced after being mistakenly
removed as part of bug #1338.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.9</h1>
<ul>
<li>Added support for "delayed" delete, in which mailboxes are renamed
to a special admin-only "deleted" hierarchy at the time of the DELETE
(hiding them from the client), rather than immediately removing them
from the filesystem.  This allows messages/mailboxes to be recovered
by the admin in case of user error.  The mailboxes and messages can be
removed at a later time by <tt>cyr_expire</tt>.  The new
<tt>delete_mode</tt> and <tt>deletedprefix</tt> options in
<tt>imapd.conf</tt> controls whether deletes are "immediate" or
"delayed" and the mailbox hierarchy for "delayed" deletes.
<i>-- courtesy of David Carter and FastMail.fm</i>.</li>
<li>Fixed the special case of RENAMEing an Inbox, so that it doesn't
keep the same mailbox uniqueid, thus allowing it to replicate
properly (seen state is still preserved).</li>
<li>Disabled <a
href="http://en.wikipedia.org/wiki/Nagle's_algorithm">Nagle's
algorithm</a> in <tt>sync_client</tt> and <tt>sync_server</tt> to
increase the throughput of the replication protocol.
<i>-- courtesy of Wes Craig</i>.</li>
<li>Added support for a shared \Seen flag on messages (must be
enabled on a per-mailbox basis with the
<tt>/vendor/cmu/cyrus-imapd/sharedseen</tt> mailbox annotation.</li>
<li>Added <tt>-g</tt> and <tt>-G</tt> options to <tt>reconstruct</tt>
<i>-- courtesy of David Carter</i>.</li>
<li>Added <tt>SETUIDVALIDITY</tt> command to the replication protocol
<i>-- courtesy of David Carter</i>.</li>
<li>Finally fixed (again?) alignment issues on 64-bit SPARC.</li>
<li>Changed message GUIDs used by replication to be the SHA1 hash of
the messages <i>-- based on work of David Carter and Fastmail.fm</i>.</li>
<li>Improve the performance of commands that operate on
sequence-sets.  The sequence-set is now parsed only once, and the
commands operate on a sorted list of seq-ranges.</li>
<li>Added new <tt>cyr_synclog</tt> utility for adding events to the
replication log <i>-- courtesy of Fastmail.fm</i>.</li>
<li>Added support for PCRE library <i>-- courtesy of Fastmail.fm</i>.</li>
<li>Added support for disabling duplicate delivery suppression
on a per-folder basis with the
<tt>/vendor/cmu/cyrus-imapd/duplicatedeliver</tt> mailbox annotation
<i>-- courtesy of Fastmail.fm</i>.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.8</h1>
<ul>
<li>Added support for BDB 4.5 and 4.6.</li>
<li>Fixed bug in frontend handling of CREATE for both proxying and
referring. <i>-- courtesy of Gary Mills</i></li>
<li>Fixed local deletion during XFER from a unified server. <i>-- courtesy
of Gary Mills</i></li>
<li>Fixed XFER bug which prevented sieve scripts from being
migrated. <i>-- courtesy of Gary Mills</i></li>
<li>Allow utilities to be run as root (acquiring 'cyrus' uid
on-the-fly).</li>
<li>Changed the default value of the <tt>allowplaintext</tt> option to
disabled (0).</li>
<li>Finally fixed 64-bit alignment problem with HIGHESTMODSEQ.</li>
<li>Fixed initialization of UUID subsystem for replication. <i>-- courtesy
of Fastmail.fm</i></li>
<li>Added <tt>-a</tt> option to <tt>cyr_expire</tt> to ignore to skip
annotation check. <i>-- courtesy of Fastmail.fm</i></li>
<li>Set the mtime of synchronized message files to INTERNALDATE (makes
reconstruction a little friendlier). <i>-- courtesy of Fastmail.fm</i></li>
<li>Fixed a bug in <tt>sync_client</tt> which caused it to bail when a
message was deleted out from under it.</li>
<li>Allow <tt>sync_server</tt> to accept unauthenticated connections
from <tt>sync_client</tt> on a UNIX socket.</li>
<li>Drastically reduced the amount of time it takes for a
<tt>mupdate</tt> slave to synchronize with a master.</li>
<li>Added URI contained in the <tt>Content-Location</tt> header to the
<tt>BODYSTRUCTURE</tt> response (per RFC 3501). <i>-- inspired by
Fastmail.fm</i></li>
<li>Fixed <tt>flushseenstate</tt> bug which was causing unsolicited
EXPUNGE responses during FETCH/STORE. <i>-- courtesy of David
Carter</i></li>
<li>Added option to <tt>ctl_mboxlist</tt> to verify the consistency of
the mailbox list database and the spool  partition(s).  See
<tt>ctl_mboxlist.8</tt> for details.</li>
<li>RENAME now copies <tt>cyrus.expunge</tt> index file as well as
expunged message files.</li>
<li>Fixed replication of 64-bit quotas.  <i>-- courtesy of David
Carter</i></li>
<li>Fixed miscellaneous bugs, memory leaks, and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.7</h1>
<ul>
<li>Added <tt>improved_mboxlist_sort</tt> option which fixes LIST/LSUB
problem with characters like <tt>'-'</tt> and <tt>' '</tt> in mailbox
names.  See <tt>imapd.conf.5</tt> for details</li>
<li>Fixed problem with mupdate randomly spinning.</li>
<li>Fixed problem with DELETEing mailboxes with split metadata
directories.</li>
<li>Fixed compatibility problem with RFC 4314 ACLs and mixed 2.2/2.3
environments.</li>
<li>Fixed problem with replication and COPYing \Seen messages.</li>
<li>Fixed problem with replication and XFER.</li>
<li>Added options to reconstruct to preserve cyrus.expunge and to
synchronize changes to a replica server.</li>
<li>Removed (broken) support for proxying of pipelined IMAP commands.</li>
<li>Added new <tt>cyr_dbtool</tt> utility for manipulating Cyrus
databases (courtesy of Fastmail.fm).</li>
<li>Better sanity checking of IMAP URLs.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.6</h1>
<ul>
<li>Fixed problems with replication and virtual domains.</li>
<li>Fixed problems with newer cyrus.index files on 64-bit
machines.</li>
<li>Added '<tt>-p &lt;ssf&gt;</tt>' option to services so
that PLAIN authentication can be used without TLS in secure
environments.</li>
<li>Added <tt>munge8bit</tt> to control whether unencoded 8-bit
characters in headers are changed to 'X' or are left alone.</li>
<li>Added <tt>sieve_allowreferrals</tt> option to control whether
<tt>timsieved</tt> issues referrals or proxys traffic to backends.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.5</h1>
<ul>
<li>Fixed COPY code so that clients display new messages (added MODSEQ).</li>
<li>Fixed imtest to be compatible with SASL 2.1.22.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.4</h1>
<ul>
<li>Fixed append/delivery code so that clients display new messages.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.3</h1>
<ul>
<li>Added support for BINARY APPEND (including CATENATE).
<i>Based on contributions from Tom Esh &lt;esh@lucent.com&gt;</i>.</li>
<li>Added support for CONDSTORE (must be enabled on a per-mailbox
basis with the <tt>/vendor/cmu/cyrus-imapd/condstore</tt> mailbox
annotation.</li>
<li>Fixed bug in reconstruct using bad name for cyrus.header.</li>
<li>Fixed bug with replication and default partition.</li>
<li><tt>ctl_mboxlist</tt> now dumps/undumps the mailbox type flags,
making it useful for remote mailboxes.</li>
<li>Better logging to facilitate message tracking (Wes Craig
&lt;wes@umich.edu&gt;).</li>
<li>Implemented CAPABILITY response in banner and after authentication.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.2</h1>
<ul>
<li>Fixed broken berkeley (btree) backend.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.1</h1>
<ul>
<li>Added more extensive output to arbitron.</li>
<li>Allow responses of any length from backend when proxing
IMAP/POP3/NNTP traffic.</li>
<li>Properly handle timeouts when proxying.</li>
<li>Added plaintextloginalert option.</li>
<li>Fixed segfault in deliver.</li>
<li>Only allow mbpath to be run as Cyrus user.</li>
<li>Added nntptimeout option for nntpd.</li>
<li>Added berkeley_hash and berkeley_hash_nosync cyrusdb backends
(seem to perform better under heavy loads).</li>
<li>Added TLS support to cyradm.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.3.0</h1>
<ul>
<li>Updated ACL code to RFC 4314 (separate rights for message delete,
mailbox delete, and expunge).</li>
<li>Fixed IDLE to use idled for local mailboxes.</li>
<li>Fixed miscellaneous build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.x</h1>
<ul>
<li>Added support for "unified" and "replicated" Murders.  A Murder no
longer has to have discrete frontend and backend servers; any one
"unified" server can both proxy and serve local mailboxes (proxy
functionality in <tt>proxyd</tt> and <tt>lmtpproxyd</tt> has been
merged with <tt>imapd</tt> and <tt>lmtpd</tt> respectively), or all
"replicated" servers can serve the same mailboxes from a shared
filesystem.  The new <tt>mupdate_config</tt> option in
<tt>imapd.conf</tt> is used to determine whether a Murder is using a
"traditional", "unified" or "replicated" configuration.</li>
<li>Ported/rewrote/integrated David Carter's mailspool replication
code.  <i>Development sponsored by Columbia University</i>.</li>
<li>Added support for "delayed" expunge, in which messages are
removed from the mailbox index at the time of the EXPUNGE (hiding them
from the client), but the message files and cache entries are left
behind, to be purged at a later time by <tt>cyr_expire</tt>.  This
reduces the amount of I/O that takes place at the time of EXPUNGE and
should result in greater responsiveness for the client, especially
when expunging a large number of messages.  The new <tt>expunge_mode</tt>
option in <tt>imapd.conf</tt> controls whether expunges are
"immediate" or "delayed".  <i>Development sponsored by FastMail</i>.</li>
<li>Added support to place some/all mailbox metadata files (cyrus.*
files) on a separate (probably high-speed) partition.  See the new
<tt>metapartition</tt> and <tt>metapartition_files</tt> options for
details.  <i>Development sponsored by FastMail</i>.</li>
<li>Added support for accessing subfolders of INBOX via POP3.  See the
new <tt>popsubfolders</tt> option for details.  <i>Development
sponsored by FastMail</i>.</li>
<li>Added support to <tt>lmtpd</tt> to do "fuzzy" mailbox matching
on user+detail addresses.  See the new
<tt>lmtp_fuzzy_mailbox_match</tt> option for details.  <i>Development
sponsored by FastMail</i>.</li>
<li>Added new <tt>sieve_extensions</tt> option to allow individual
Sieve extensions to be enabled/disabled.</li>
<li>The Sieve "include" extension is now supported.  This also allows
for global sieve scripts.  See the new <tt>sieve_extensions</tt>
options to enable it.</li>
<li>The Sieve "body" extension is now supported.  See the new
<tt>sieve_extensions</tt> option to enable it.  <i>Development
sponsored by FastMail</i>.</li>
<li>The $text$ variable for Sieve notify messages is now supported.
<i>Development sponsored by FastMail</i>.</li>
<li>The MIME structure of a new message destined for multiple
recipients is now only parsed once rather than once per delivery,
resulting in better performance.  <i>Development sponsored by
FastMail</i>.</li>
<li>Support 64-bit quota usage (both per mailbox and for the entire
quotaroot), based on a patch from Jeremy Rumpf.  <i>Development
sponsored by FastMail</i>.</li>
<li>Added new <tt>flushseenstate</tt> option which causes imapd to
immediately flush changes in \Seen state to disk rather than caching
them until the mailbox is closed.  Enabling this option may fix \Seen
state weirdness with MS Outlook, at the expense of
performance/scalability.  <i>Based on a patch by John A. Tamplin
(jtampli@sph.emory.edu).</i></li>
<li>The Sieve "copy" extension is now supported.</li>
<li>The IMAP "CATENATE" and "URLAUTH" extensions are now supported.</li>
<li>Updated Sieve "vacation" extension to draft-ietf-sieve-vacation-04.</li>
<li>Added support for Sieve scripts on shared mailboxes via the
/vendor/cmu/cyrus-imapd/sieve annotation.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.13</h1>
<ul>
<li><tt>ctl_mboxlist</tt> now dumps/undumps the mailbox type flags,
making it useful for remote mailboxes.</li>
<li>Added <tt>sieve_allowreferrals</tt> option to control whether
<tt>timsieved</tt> issues referrals or proxys traffic to backends.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.12</h1>
<ul>
<li>Allow sieve scripts to be run on shared mailboxes (via <tt>sieve</tt>
annotation).</li>
<li>Updated <tt>nntpd</tt> to be compliant with latest draft (soon to be
RFC3977).</li>
<li>Updated IMAP UIDPLUS extension to be compliant with latest
specification (RFC4315).</li>
<li>Performance improvements to <tt>quota</tt> utility.</li>
<li>Fixed possible race condition in IMAP IDLE.</li>
<li>Made <tt>ptloader</tt> runtime configurable.</li>
<li>Added more extensive output to <tt>arbitron</tt>.</li>
<li>Allow responses of any length from backend when proxing
IMAP/POP3/NNTP traffic.</li>
<li>Added <tt>plaintextloginalert</tt> option.</li>
<li>Only allow <tt>mbpath</tt> to be run as Cyrus user.</li>
<li>Added <tt>berkeley_hash</tt> and <tt>berkeley_hash_nosync</tt>
cyrusdb backends (seem to perform better under heavy loads).</li>
<li>Added <tt>lastpop</tt> mailbox annotation.</li>
<li>Added subscribe/unsubscribe support to <tt>cyradm</tt>.</li>
<li>Fixed miscellaneous bugs and build issues.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.11</h1>
<ul>
<li>Revert index change which wasn't supposed to make it into 2.2.11</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.10</h1>
<ul>
<li>Fix possible single byte overflow in mailbox handling code.</li>
<li>Fix possible single byte overflows in the imapd annotate extension.</li>
<li>Fix stack buffer overflows in fetchnews (exploitable by peer news server),
backend (exploitable by admin), and in imapd (exploitable by users though only on platforms where a filename may be larger than a mailbox name).</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.9</h1>
<ul>
<li>Fix 0 termination in mysasl_canon_user.</li>
<li>Check for imap magic plus buffer overflow in proxyd also (CAN-2004-1015).</li>
<li>Only send an over quota ALERT on SELECT if the quotaroot is different
from the last ALERT, or we haven't sent an ALERT in over 10 min.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.8</h1>
<ul>
<li>Change ACLs correctly when renaming a user</li>
<li>Do not abandon std{in,out,err} file descriptors; syslog assumes it can
use stderr if syslogd isn't running.</li>
<li>Clean up imap magic plus to avoid buffer overrun (CAN-2004-1011)</li>
<li>Fix lack of bounds checking in PARTIAL and FETCH (CAN-2004-1012, CAN-2004-1013)</li>
<li>Do not attempt to reuse a freed connection in lmtpproxyd.</li>
<li>Allow login without authentication with -N switch in proxyd.</li>
<li>Fix use of xrealloc and fold pointers in lmtpengine.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.7</h1>
<ul>
<li>Fix a double-free bug in the notify code</li>
<li>Fix a problem with idled and an empty mailbox list</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.6</h1>
<ul>
<li>Fix handling of PARTIAL command and partial body fetches</li>
<li>A large number of portability fixes supplied by Albert Chin
&lt;china@thewrittenword.com&gt;</li>
<li>Added <tt>client_timeout</tt> option to control connect() timeouts
for proxy code</li>
<li>Added <tt>popuseacl</tt> option</li>
<li>Fix a number of issues with the <tt>quota -f</tt> tool</li>
<li>Fix thread safety issue in saslserver()</li>
<li>Fix possible stage file leak in append code</li>
<li>Fix bugs in handling of MULTIAPPEND introduced in 2.2.3</li>
<li>Fixed regression bug in Sieve vacation</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.5</h1>
<ul>
<li>Fix a bug in the proxy code where a backend connection might get closed
twice</li>
<li>Improved consistancy checking in <tt>chk_cyrus</tt></li>
<li>Fix segfault in APPEND code</li>
<li>Fix a bug with an interaction between sieve and unixhierarchysep</li>
<li>Fix a file descriptor leak in the quotadb code</li>
<li>Fix a triggered assertation in service-thread services</li>
<li>Add a number of internal consistancy checks to the skiplist code</li>
<li>Allow <tt>mbpath</tt> to handle virtual domains</li>
<li>Fix various MANAGESIEVE client authentication issues</li>
<li>Other minor fixes</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.4</h1>
<ul>
<li>Bug fixed in hash table code that could sometimes cause crashes with
the quotalegacy database</li>
<li>Net-SNMP compatibility</li>
<li>Significantly improved com_err detection</li>
<li>Assorted minor NNTP improvements</li>
<li>Assorted other minor bugfixes</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.3</h1>
<ul>
<li>Quota now uses the cyrusdb interface (<tt>quotalegacy</tt> by
default).</li>
<li>All incoming messages are now staged to disk before locking the
destination mailbox (locks are no longer held during a network
read).</li>
<li>Fixed off-by-one error in <tt>fetchnews</tt> (articles are no longer
skipped).</li>
<li><tt>nntpd</tt> now uses the Followup-To: header (if exists) instead of
the Newsgroups: header when constructing post address(es) and adds them
to the Reply-To: header instead of the To: header.</li>
<li>Added <tt>berkeley_locks_max</tt>, <tt>berkeley_txns_max</tt> and
<tt>berkeley_cachesize</tt> options.</li>
<li>Added <tt>imapmagicplus</tt> option.</li>
<li>Substantial work on afspts/ptloader canonicalization code</li>
<li>Much improved LDAP ptloader code (no more internal OpenLDAP dependencies)</li>
<li>Fixed a number of IPv6 related bugs</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.2</h1>
<ul>
<li>Berkeley DB 4.2 Support - note that the Cyrus Berkeley
enviroment needs to be reset (db_recover) before
a Berkeley DB version upgrade or you need to remove all berkeley dbs.
Special care needs to be taken when berkley db is used for mboxlist.</li>
<li>Runtime configuration of the Cyrus databases.  The cyrudb backend
used for each database can be specified with an <tt>imapd.conf</tt>
option.  <b>NOTE:</b> You MUST convert the database using
<tt>cvt_cyrusdb</tt> BEFORE changing the backend in <tt>imapd.conf</tt>.</li>
<li>Sendmail socket map support (<tt>smmapd</tt>) for verifying that
mailboxes exist and are deliverable before accepting the message and
sending it to Cyrus.</li>
<li>New <tt>userid</tt> mode for virtual domains, which does NOT do
reverse lookups of the IP address.</li>
<li><tt>nntpd</tt> now supports the Xref header.</li>
<li><tt>nntpd</tt> can now use the POST command to feed articles to
upstream servers.</li>
<li><tt>fetchnews</tt> can now be used with NNTP servers which don't support
the NEWNEWS command.</li>
<li><tt>lmtpd</tt> now initializes <tt>duplicate.db</tt> only when it
is necessary (when using Sieve or <tt>duplicatesuppression</tt>).</li>
<li>Sieve now verifies that text strings are valid UTF-8.</li>
<li>Sieve now verifies that address tests and envelope tests are done
on headers which contain addresses (can be disabled with
<tt>rfc3028_strict: no</tt>).</li>
<li>Services will now notice that a new binary has been installed and
will restart using the new binary once the existing connection is
closed.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.1</h1>

<ul>
<li>Major bugfixes in murder altnamespace/unixhierarchysep/virtdomain
support (Thanks in large part to work by Christian Schulte &lt;cs@schulte.it&gt;)</li>
<li>Improved master process accounting (Henrique de Moraes Holschuh
&lt;hmh@debian.org&gt;)</li>
<li>Significantly improved message header caching (based in large part
on code supplied by David Carter &lt;David.Carter@ucs.cam.ac.uk&gt; from
the University of Cambridge)</li>
<li>The sieve bytecode format has been updated once more, to correctly
handle short-circuiting of the allof and anyof operators</li>
<li>Support for warning quota based on absolute mailbox size</li>
<li>Correct handling of annotations during XFER operations</li>
<li>Simple support for IMAP BINARY extension</li>
<li>Support for Automake 1.7 and Autoconf 2.57</li>
<li>Support for IMAP initial SASL response (the SASL-IR extension)</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.2.0</h1>

<ul>
<li>The improved directory hashing (fulldirhash) is now a runtime
configuration option.</li>
<li>The netnews.db has been integrated into deliver.db.</li>
<li>Full r/w ANNOTATEMORE support, including more annotations that
allow the control of operations such as message expiration.
ANNOTATEMORE is also always enabled now.</li>
<li><tt>expirenews</tt> has been replaced by <tt>cyr_expire</tt> which
uses annotations for fine-grained mailbox expiration.</li>
<li><tt>squatter</tt> can now use annotations for fine-grained mailbox
indexing.</li>
<li>Many nntpd enhancements including: reader-only and feeder-only
modes, support for LIST NEWSGROUPS (via mailbox annotations) and
gatewaying news to mail (via mailbox annotations).</li>
<li><tt>fetchnews</tt> can now authenticate to the remote server.</li>
<li>Removed deprecated LAST command from pop3d.</li>
<li>Sieve Bytecode is now stored in network byte order, meaning that
bytecode files can be freely moved between different platforms</li>
<li>Sieve relational extension now working again.</li>
<li>Sieve vacation now uses the correct subject.</li>
<li>A large number of bugs involving virtual domain support have been
fixed, including issues with the Murder, and with Sieve.</li>
</ul>

<h1>Changes to the Cyrus IMAP Server since 2.1.x</h1>

<ul>
<li>There have been extensive performance and consistancy changes to
the configuration subsystem.  This will both ensure greater consistancy
between the documentation and the code, as well as a more standard format
for specifing service-specific configuration options in imapd.conf.  Important
changes are detailed here:
<ul>
  <li> The tls_[service]_* configuration options have been removed.  Now
use [servicename]_tls_*, where servicename is the service identifier from
cyrus.conf for that particular process.</li>
  <li> Administrative groups (e.g. admins and lmtp_admins) no longer union,
service groups completely override the generic group. </li>
  <li> lmtp_allowplaintext is no longer a defined parameter and must
be specified using the service name of your lmtp process if you
require a specific value</li>
</ul></li>

<li> libcyrus has been split into libcyrus_min and libcyrus, so as to allow
sensative applications (such as master) include the least amount of code
necessary for operation </li>

<li> Virtual domain support.  See the <a
href="install-virtdomains.html">virtual domains</a> document for
details.</li>

<li> Users can now be renamed (even across domains).  Note that this
is not atomic and weirdness may occur if the user is logged in during
the rename.  See the <tt>allowusermoves</tt> option in
<tt>imapd.conf(5)</tt> for details.</li>

<li> The <tt>db3</tt> and <tt>db3-nosync</tt> database backends have
been renamed to <tt>berkeley</tt> and <tt>berkeley-nosync</tt>
respectively (to avoid confusion over whether or not db4 is supported).</li>

<li> The default mailbox list and seen state database formats have changed
to skiplist from Berkeley and Flat, respectively. </li>

<li> ptloader is now a regular cyrus service.  This has several implications,
see <a href="install-upgrade.html">install-upgrade.html</a> for more details.</li>

<li> NNTP support.  Usenet news can now be fed to and read from Cyrus
directly via NNTP, without the need for a local news server.  See <a
href="install-netnews.html">netnews</a> document for details.</li>

<li>IPv6 support, provided by Hajimu UMEMOTO &lt;ume@mahoroba.org&gt;</li>

<li> Sieve scripts are now compiled to bytecode to allow for faster
execution (and lmtpd no longer needs lex or yacc).  See
<a href="install-upgrade.html">install-upgrade.html</a> for more details.</li>

<li> The functionality of pop3proxyd has been merged into pop3d.  Be
sure to update <tt>cyrus.conf</tt> on your frontend machines accordingly.</li>

<li> The functionality of <tt>ctl_deliver -E</tt> has been moved to
<tt>cyr_expire -E</tt>.  Be sure to update <tt>cyrus.conf</tt> on your
machines accordingly.</li>

</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.14</h2>
<ul>
<li>Correct a potential DOS attack in the fud daemon.</li>
<li>Arbitron now works again</li>
<li>Telemetry logging for mupdate</li>
<li>Duplicate Suppression logging for redirect sieve actions</li>
<li>A number of bugs in reconstruct have been fixed. also added the -p and -x
options</li>
<li>Better stubbing out of user_deleteacl</li>
<li>No longer log any shutdown() failures</li>
<li>Improved IPv6 support (for systems with two getnameinfo implementations)</li>
<li>Misc Documentation Improvements</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.13</h2>
<ul>
<li>Be more forgiving in the parsing of MIME boundary headers, specifically
    those generated by Eudora where the outer boundaries are substrings of
    the inner boundaries.  This feature can be disabled by enabling the
    <tt>rfc2046_strict</tt> option.</li>
<li>Allow cyradm to handle aggregate mailbox sets for ACL and DELETE
    operations.</li>
<li>Add a lmtp_downcase_rcpt option to force the lowercasing of
    recipient addresses (Henrique de Moraes Holschuh &lt;hmh@debian.org&gt;).</li>
<li>Include more MIME headers in sieve rejection notices</li>
<li>Add an mbexamine command for debugging purposes</li>
<li>LMTP will now fatal error if we cannot initialize the duplicate
    delivery database.</li>
<li>Continued audit by Security Appraisers and Bynari</li>
<li>Correctly terminate the processes by calling service_abort even on
    successful exit (helps to fix a db3 lockers problem)</li>
<li>Fix some murder+altnamespace/unixhiersep issues</li>
<li>Fix imclient's handling of literals.</li>
<li>Add support for the windows-1256 character set</li>
<li>Don't log 'could not shut down filedescriptor' messages when the
    socket is already not connected</li>
<li>Now include a script to convert sieve script names to the altnamespace
    format</li>
<li>Added a <tt>--with-extraident</tt> configure option to make it easier
    to set the extra version information that is compiled into the binary.</li>
<li>Minor build fixes.</li>
<li>Minor other bug fixes.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.12</h2>
<ul>
<li>Add maxfds= option in cyrus.conf</li>
<li>&quot;The shutdown() Patch&quot; by
Henrique de Moraes Holschuh &lt;hmh@debian.org&gt; and
Jeremy Howard &lt;jhoward@fastmail.fm&gt;</li>
<li>Now report both built-with and running-with OpenSSL versions</li>
<li>Misc other small bugfixes</li>
<li>Security Appraisers and Bynari review of the majority of the modules
in <tt>imap/</tt></li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.11</h2>
<ul>
<li>Master now will forcibly exit if a service is not executable</li>
<li>Master now has a daemon mode and pidfile support (-d and -p options)</li>
<li>Berkeley DB Configuration methods have changed.  Hopefully they're
more generic now.  You can still use --with-dbdir, or you can use
--with-bdb-libdir and --with-bdb-incdir</li>
<li>timsieved now handles usernames with dots (when unixhierarchysep is active)</li>
<li>tugowar has been removed from the distribution.</li>
<li>Squatter now has an option to skip unmodified mailboxes.</li>
<li>Properly hash username to remove a user's sieve scripts when their INBOX
is removed.</li>
<li>Reset output buffer when prot_flush returns EOF.</li>
<li>Minor Makefile improvements with use of $(srcdir)</li>
<li>Remotepurge improvement for empty mailboxes</li>
<li>Fix for AFS overwriting the canonicalized username in ptloader</li>
<li>Security audit of imapd.c performed by SecurityAppraisers and Bynari</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.10</h2>
<ul>
<li>Fixed some potential buffer overflows in the sieve code, as well
as a pre-login buffer overflow in the IMAP parsing code.</li>
<li>ipurge can now skip flagged messages</li>
<li>Fix a problem with the flat backend and tracking new files</li>
<li>Fix a problem with the memory pool routines on 64-bit machines</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.9</h2>
<ul>
<li>support Berkley DB 4.1</li>
<li>more portable use of errno throughout</li>
<li>timsieved now does telemetry logging</li>
<li>libcyrus.a no longer supplies fs_get() and fs_give()</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.8</h2>
<ul>
<li>Fix a strlcpy() off-by-one error.</li>
<li>Better handling of errors in connecting to LMTP servers for deliver and
lmtpproxyd.</li>
<li>Fix bug in pop3proxyd's pop3s handling.</li>
<li>Fix Exim install documentation.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.7</h2>
<ul>
<li>Fix a severe locking problem during failed CREATEs</li>
<li>Change default locking method to fcntl from flock</li>
<li>Don't cleanup the original mailbox during a RENAME while holding the
mailbox list lock</li>
<li>Quoting fixes in cyradm</li>
<li>Small pathname fix in rehash script</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.6</h2>
<ul>
<li>Correct some minor version number errors.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.5</h2>
<ul>
<li>Better locking of the mailbox list during mupdate operations for
CREATE and RENAME</li>
<li>Permissions fixes for annotations.</li>
<li>pop3proxyd now does telemetry logging</li>
<li>Cleanup a number of leaks in the murder code</li>
<li>Correct semantics of our provided strlcpy().  Fix places where strlcpy()
was being used incorrectly.</li>
<li>Correct a significant memory leak in the memory pool routines</li>
<li>OpenSSL is now handled correctly for the perl modules</li>
<li>Small documentation cleanups</li>
<li>The normal assortment of small bugfixes</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.4</h2>

<ul>

<li> Sieve is no longer dependent on duplicate delivery suppression
(it still uses the duplicate delivery database however). </li>

<li> Sieve now supports <tt>draft-segmuller-sieve-relation-02.txt</tt></li>

<li> <tt>imtest</tt> now includes all the functionality previously
kept in pop3test, lmtptest, smtptest, and mupdatetest.  imtest will
notice if it is invoked with one of these names and do the right
thing.  The -P  flag can be used to force a particular protocol.  As
part of this, the default install location for mupdatetest has changed
to be the same as the other test utilities.  <tt>imtest</tt> also
includes new MANAGESIEVE functionality (sivtest) as well as the
ability to reconnect to the same server multiple times (useful for testing
SSL/TLS session caching and DIGEST-MD5 fast reauth).</li>

<li>snmpgen generates stubbed out code so we don't waste resources on
something that just doesn't work. At some point in time, we'll make it
work again as it would be useful to gather aggregate statistics on
what commands are being used so we can better tune the server.  This
change closes bug #1191. New bug 1267 opened to re-enable the feature.</li>

<li>Added the chk_cyrus program to help point out missing message
files and/or mailboxes</li>

<li>ANNOTATEMORE improvements.  Server annotation support has been added.
We are also now using the /vendor/cmu/cyrus-imapd hierarchy.
The "info" command in cyradm now returns annotations for the given mailbox
(provided that ANNOTATEMORE support is compiled into the server)</li>

<li>The RENAME command has been almost entirely rewritten.  Now we rely
on mailbox-level locking instead of locking the entire mailboxes file
for the duration of the rename.  <tt>ctl_cyrusdb -r</tt> now also
cleans up "reserved" mailboxes that may appear in the event of a crash.</li>

<li><tt>ctl_mboxlist</tt> can now dump only a particular partition</li>

<li>The configuration subsystem now uses a hash table to speed up lookups
of options.  Additionally, the hash table implementation has been updated
to possibly take advantage of memory pools.</li>

<li>Many bugfixes related to the Cyrus Murder.  Includes improvments to
subscription handling as well as correct merging of seen state on
mailbox moves.</li>

<li>Can now configure an external debugger (<tt>debug_command</tt> option
in imapd.conf.</li>

<li>Misc. autoconf-related fixes (most notably those related to sasl_checkapop
and O_DSYNC).</li>

<li>Misc. locking-related fixes.</li>

<li>Security fixes related to handling large literals in getxstring(), as
well as correct usage of layers in timsieved.</li>

</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.3</h2>

<ul>
<li> All "MAIL" and "SIEVE" notifications are now handled by
<tt>notifyd</tt> which is a daemon that supports multiple notification
methods.  The <tt>mailnotifier</tt> and <tt>sievenotifier</tt> options
have been added to <tt>/etc/imapd.conf</tt> to configure
notifications. (Ken Murchison) </li>

<li> Many feature enhancements and bugfixes for the Cyrus Murder.  The
code now supports live (but not transparent) moving of mailboxes from
one server to another. </li>

<li> Some warning fixes. </li>

<li> <tt>fdatasync()</tt> is no longer required. </li>

<li> Fixed a bug in <tt>imap/append.c</tt> that would show itself if a
message was being delivered to five or more different
partitions. </li>

<li> Deliveries now don't create a redudant temporary file using
<tt>tmpfile()</tt>; the staging directory is used instead. (Ken
Murchison) </li>

<li> Fix a possible crashing bug in <tt>squatter</tt>.  (Ken
Murchison) </li>

<li> Deleting a user now also removes their Sieve scripts. </li>

<li> <tt>cyrusdb_skiplist</tt>: release locks during iteration.
Should prevent denial of service attacks and possibly increase
performance. </li>

<li> <tt>cyrusdb_skiplist</tt>: introduce a new mode using
<tt>O_DSYNC</tt> writes which is possibly faster on Solaris.
Currently off (it seems to hurt performance on Linux). </li>

<li> <tt>master</tt> has preliminary code to avoid forking
storms. </li>

<li> <tt>sieveshell</tt> should now loop through all available SASL
mechanisms before conceding defeat. </li>

<li> <tt>sieveshell</tt> can now upload a file to a different name. </li>

</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.2</h2>

<ul>
<li> fud now runs from the Cyrus master process; more generally, the
Cyrus master process can deal with UDP services. (Amos Gouaux,
<tt>amos@utdallas.edu</tt>)</li>

<li> Sieve has been updated to be compliant with RFC 3028 and
draft-martin-sieve-notify-01.  All <tt>notify</tt> actions and any
<tt>fileinto</tt> and/or <tt>redirect</tt> actions using stringlists
will have to be updated/changed. </li>

<li> added <tt>cvt_cyrusdb</tt> for quick conversions between
different cyrusdb backends. </li>

<li> fixed a bug in the Sieve header cache, where legal header names
were being rejected. </li>

<li> many Murder-related fixes </li>

<li> suppress a bogus TLS session reuse DBERROR message </li>

<li> make the list of acceptable TLS ciphers configurable in
<tt>/etc/imapd.conf</tt> </li>

<li> <tt>cyrusdb_skiplist</tt> fixes; it's now suitable for using in
production environments though there are still performance problems
outstanding </li>

</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.1</h2>

<ul>
<li> now compatible with Berkeley DB4 (Larry M. Rosenbaum,
<tt>lmr@ornl.gov</tt>) </li>

<li> timsieved now supports proxying via <tt>loginuseacl</tt> (Amos
Gouaux, <tt>amos@utdallas.edu</tt>) </li>

<li> Sieve <tt>vacation</tt> now does a case-insensitive comparison of
<tt>:addresses</tt> </li>

<li> Warning-related bug fixes from Henrique de Moras Holschuh
<tt>hmh@debian.org</tt></li>

<li> automatic archival of db3 files so that filesystem backups are
always consistent (Ken Murchison, <tt>ken@oceana.com</tt>)</li>

<li> added a skiplist database backend, still needs more testing </li>

<li> further work on the Cyrus Murder </li>

<li> fixed bug in <tt>remotepurge</tt> dealing with mailboxes with
characters that need to be escaped inside quoted-strings </li>

<li> Cyrus::IMAP::Admin now supports referrals </li>

<li> <tt>cyradm</tt>, via Cyrus::IMAP::Shell, now can remove
quotaroots </li>

<li> <tt>timsieved</tt>, <tt>sieveshell</tt>, and the MANAGESIEVE
protocol extended with referrals </li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.1.0</h2>

<ul>
<li> now compatible with Cyrus SASL 2.1.0 </li>

<li> fixed a problem with LMTP AUTH and unix domain sockets </li>

<li> make deleting users faster </li>

<li> add a "-n" switch to <tt>remotepurge</tt></li>

<li> cyradm now does implicit SASL authorization </li>

<li> fix for Sieve <tt>:matches</tt> comparator </li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.16</h2>

<ul>
<li>migrated to SASLv2 (Rob Siemborski)</li>

<li>altnamespace: it is now possible to display user mailboxes as
siblings to the INBOX at the top-level (Ken Murchison)</li>

<li>unixhierarchysep: it is now possible possible to use slash as
the hierarchy seperator, instead of a period. (Ken Murchison,
inspired by David Fuchs, <tt>dfuchs@uniserve.com</tt>)</li>

<li>SSL/TLS session caching (Ken Murchison)</li>

<li>support for IMAP CHILDREN &amp; LISTEXT extensions (Ken
Murchison, work in progress)</li>

<li>check recipient quota &amp; ACL at time of RCPT TO: in
<tt>lmtpd</tt> (Ken Murchison)</li>

<li>support for LMTP STARTTLS &amp; SIZE extensions (Ken
Murchison)</li>

<li>unified deliver.db, using cyrusdb interface, hopefully
improving concurrency and performance (Ken Murchison)</li>

<li>fixed STORE FLAGS () bug (Ken Murchison)</li>

<li>fixed SEARCH SUBJECT vs. SEARCH HEADER SUBJECT bug (Ken
Murchison)</li>

<li>users without an INBOX can have subscriptions (Ken Murchison;
noticing a trend here?)</li>

<li>added cyrusdb_db3_nosync backend, used for duplicatedb and
session cache, to postpone non-critical writes. (Ken
Murchison)</li>

<li>support for STARTTLS and AUTH=ANONYMOUS for timsieved (Ken
Murchison)</li>

<li>do setgid and initgroups in master (as urged by several
people)</li>

<li>added more config info to IMAP ID (in a vain attempt to improve
debugging)</li>

<li>configure now checks for DB3.3</li>

<li>SQUAT (Rob O'Callahan, <tt>roc@cs.cmu.edu</tt>)</li>

<li>change SEARCH HEADER <i>x</i> to SEARCH <i>x</i> utilizing
internal cache where possible (Rob O'Callahan,
<tt>roc@cs.cmu.edu</tt>)</li>

<li>an improved directory hashing option (Gary Mills,
<tt>mills@cc.UManitoba.CA</tt>)</li>

<li>use of EGD for SSL/TLS (Amos Gouaux,
<tt>amos@utdallas.edu</tt>)</li>

<li>separate certs/keys for services (Henning P. Schmiedehausen,
<tt>hps@intermeta.de</tt>)</li>

<li>ability to force ipurge to traverse personal folders (Carsten
Hoeger, <tt>choeger@suse.de</tt>)</li>

<li>fixed zero quota bugs in cyradm (Leena Heino,
<tt>liinu@uta.fi</tt>)</li>

<li>ignore trailing whitespace in imapd.conf</li>

<li>Received: header (with TLS and AUTH info)</li>

<li>added '-i' switch to sendmail command line for SIEVE reject,
redirect and vacation</li>

<li>small fixes to notify_unix</li>

<li>added "<tt>duplicatesuppression</tt>" switch to imapd.conf for
enabling/disabling duplicate delivery suppression (Birger Toedtmann,
<tt>birger@takatukaland.de</tt>)</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.15</h2>

<ul>
<li>fixed a longstanding bug in <tt>quota</tt> that would affect
people with unusual top-level hierarchy, fix by John Darrow,
<tt>John.P.Darrow@wheaton.edu</tt>.</li>

<li>some important fixes to db3 interface code, by Walter Wong
<tt>wcw@cmu.edu</tt>, prompted by complaints from Scott Adkins
<tt>adkinss@ohio.edu</tt>.</li>

<li>fixed some memory leaks in imclient and in the Perl IMAP
module, prompted by Toni Andjelkovic <tt>toni@soth.at</tt>.</li>

<li>fixed a longstanding authentication error in the Perl IMAP
module, should remove pesky extra Password: prompt.</li>

<li>fixed some allocation bugs in the managesieve perl module.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.14</h2>

<ul>
<li>fixed memory management bugs in <tt>imapd</tt>, <tt>lmtpd</tt>
that were being hit due to the connection reuse code and causing
subtle and annoying problems.</li>

<li>we now clean up better when deleting a user</li>

<li>fixed an endian bug in <tt>ipurge</tt></li>

<li><tt>pop3d</tt> now can also reuse processes.</li>

<li>fix a bug in <tt>imclient</tt> that would strike when
<tt>cyradm</tt> specifies a mechanism on the command-line. (SASL
mechanism names aren't case sensitive.)</li>

<li>fix some bugs in handling SIGHUP in <tt>master</tt></li>

<li>fix a couple of goofs in <tt>Admin.pm</tt></li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.13</h2>

<ul>
<li>fixed a silly bug with reusing SSL connections</li>

<li><tt>lmtpd</tt> can now service multiple clients in sequence,
hopefully improving performance</li>

<li>changed how Berkeley db databases are opened, hopefully
lessening the chance of deadlock and improving performance</li>

<li>fixed a couple of memory leaks</li>

<li>lessened the chance of a race condition during
<tt>index_check()</tt></li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.12</h2>

<ul>
<li>refactored code so less duplication</li>

<li>added alternate config file for partial virtual domain
support</li>

<li><tt>pop3d</tt> can now disable USER/PASS commands.</li>

<li>STARTTLS now accepts a SSLv23 hello but doesn't allow SSLv23 to
be negotiated.</li>

<li><tt>imtest</tt> no longer buffers to aid use as an automated
layer.</li>

<li><tt>master</tt> now supports maximum number of service
processes via the "maxchild" modifier.</li>

<li>fixed a bug in the Sieve string lexer.</li>

<li>one <tt>imapd</tt> process can now service multiple clients in
sequence, eliminating a large number of forks.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.11</h2>

<ul>
<li>portability fixes involving <tt>setrlimit()</tt></li>

<li>fixed compiler warnings</li>

<li>the STARTTLS command will only accept TLSv1 now, not SSLv2/v3.
The <tt>imaps</tt> port is unaffected by this change.</li>

<li><tt>timsieved</tt> no longer returns garbage strings.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.9</h2>

<ul>
<li>some small memory savings</li>

<li>the "fud" daemon once again works correctly</li>

<li>the IDLE extension now uses signals correctly</li>

<li>problems with libwrap have been resolved</li>

<li><tt>imapd</tt> and <tt>pop3d</tt> now log connections protected
via TLS.</li>

<li>efficiency improvements when searching for a particular
message-id</li>

<li>fixed an envelope-parsing bug affecting SORT and THREAD</li>

<li>made RENAME keep the same mailbox uniqueid, preserving seen
state across renames</li>

<li>STOREing flags to multiple messages in one command is now more
efficient</li>

<li>RENAME now preserves the ACL</li>

<li>LIST is now as efficient as Cyrus v1.6, modulo Berkeley DB
issues.</li>

<li>Sieve zephyr notifications are now correct.</li>

<li>crash in <tt>reconstruct</tt> now fixed.</li>

<li>man pages added for <tt>cyrus.conf</tt>, <tt>master</tt>,
<tt>lmtpd</tt>, <tt>idled</tt>, <tt>ctl_mboxlist</tt>, and
<tt>ctl_deliver</tt>.</li>

<li><tt>master</tt> can now listen on specific interfaces</li>

<li><tt>master</tt> can now reread <tt>/etc/cyrus.conf</tt> on
SIGHUP.</li>

<li><tt>timsieved</tt> now uses symlinks instead of hard
links.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.8</h2>

<ul>
<li>remembered to update this file</li>

<li>bug in <tt>Cyrus::IMAP</tt> perl module affecting cyradm's
setquota fixed</li>

<li>portability fix with <tt>socklen_t</tt></li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.7</h2>

<ul>
<li>preliminary implementation of the IDLE extension (Ken
Murchison, <tt>ken@oceana.com</tt>).</li>

<li>THREAD=REFERENCES now part of the normal build.</li>

<li>tweaks to the installation documentation and suggested Sendmail
configuration</li>

<li>portability fixes and other small bugfixes</li>

<li>added "<tt>-a</tt>" flag to <tt>lmtpd</tt></li>

<li>master process can now export statistics about running
processes via UCD SNMP AgentX</li>

<li>many fixes to Cyrus Murder-related code</li>

<li>fixes to perl code, especially the Sieve interface. added an
IMSP interface to the perl code, but it still needs work.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.6</h2>

<ul>
<li>some number of random static variables eliminated, to save on
memory footprint</li>

<li>recursive RENAME was a little to eager; fixed. RENAME will also
give the client a hint that a sub-RENAME failed. (mostly probably
useful for cyradm, but cyradm doesn't take advantage of it
yet.)</li>

<li>THREAD=X-JWZ has turned into THREAD=REFERENCES (Ken
Murchison)</li>

<li>DELETE wasn't failing cleanly in database code; fixed.</li>

<li>off-by-one bug in seen_db fixed.</li>

<li>starting/committing/aborting transactions now logged more
correctly in cyrsudb_db3</li>

<li>master will now accept port numbers instead of just service
names in cyrus.conf. also logs even more verbosely (see bug
#115.)</li>

<li>libwrap_init() is now inside the loop, since i don't quite
understand the semantics of libwrap calls.</li>

<li>setquota in cyradm now behaves more sanely (and gives correct
usage message).</li>

<li>bugfixes to the managesieve client perl api. (still needs
work.)</li>

<li>small fixes in timsieved.</li>

<li>added a "make dist" target so i won't dread releases as
much.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server since 2.0.5</h2>

<ul>
<li>APPEND now honors the \Seen flag.</li>

<li>mailboxes file can once again be a flat text file.
(compile-time choice)</li>

<li>subscriptions file can be flat text or berkeley db. likewise
for seen state.</li>

<li>unfortunately, the format of the mailboxes file has
changed.</li>

<li>implementation of "JWZ" threading, a first pass on the
forthcoming THREAD=REFERENCES.</li>

<li>bugfixes in libacap.</li>

<li>bugfixes in other Murder related functionality.</li>

<li>removal of dead code.</li>

<li>will now look in CYRUS_PREFIX/etc/imapd.conf if there's no
/etc/imapd.conf.</li>

<li>more paranoid implementation of ID.</li>

<li>more descriptive lmtp errors.</li>

<li>finished implementation of LMTP 8BITMIME.</li>

<li>fixed minor bugs in pop3d.</li>

<li>small test suite for cyrusdb backends added in
<tt>lib/test/</tt>.</li>

<li>added <tt>-DPERL_POLLUTE</tt> to the perl compilation to deal
with Perl 5.6.</li>

<li>small additions to the Sieve library.</li>

<li>As usual, owe lots of thanks to Ken Murchison for his hard work
and awesome implementations.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server SINCE 2.0.4</h2>

<ul>
<li>Now should work with Berkeley DB 3.1, but does <b>not</b>
auto-upgrade 3.0 databases (and, in fact, I haven't written any
upgrade software yet).</li>

<li>SORT and THREAD should now function correctly.</li>

<li>Some configure fixes.</li>

<li>Some fixes for possible race conditions in initializing
services and database structures.</li>

<li>Some non-gcc compile fixes with structure initialization.</li>

<li>Some non gcc compile fixes with structure initialization.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server SINCE 2.0.3</h2>

<ul>
<li>fixed <tt>mbpath</tt> and <tt>ipurge</tt>. Thanks to Alain
Turbide for the bug report.</li>

<li>configure: removed <tt>mmap_private.c</tt>; it was buggy, and
not worth supporting.</li>

<li>configure: improvements in detecting libwrap, typos fixed in
detecting libsasl.</li>

<li>Merged the acapsieve library into libacap.</li>

<li>improvements to the ACAP API.</li>

<li>invariant checks added to the skiplist code.</li>

<li>bugfix in TCL cyradm.</li>

<li>acapmbox.c: bugfixes in handling acap connections.</li>

<li>fix the size given for a unix socket address (changes
throughout the code), patch thanks to Vladimir Kravchenko,
<tt>jimson@null.ru</tt>.</li>

<li>rewrote <tt>deliver</tt> to use the generic LMTP API in
lmtpengine.c. Likewise, implemented the client-side API in
lmtpengine.c. (Still need to implement AUTH.)</li>

<li>added SORT and THREAD support (Ken Murchison,
<tt>ken@oceana.com</tt>.)</li>

<li>In checking an APPEND command, we were rejecting valid system
flags and accepting invalid ones.</li>

<li>minor bug fixes to <tt>proxyd</tt>.</li>

<li>large amount of debugging code added to
<tt>target-acap</tt>.</li>

<li>build fixes to Perl programs.</li>

<li>allow plaintext authentication to <tt>timsieved</tt>.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server in 2.0</h2>

<ul>
<li>The mailboxes file is now a transaction-protected Berkeley
database.</li>

<li>The core delivery process has been moved to <tt>lmtpd</tt>.
<tt>deliver</tt> is now a simple wrapper to create an LMTP
transaction.</li>

<li>master process, responsible for spawning services
(<tt>imapd</tt>, <tt>lmtpd</tt>, etc.) and for routine
housekeeping. Optionally, it can use <tt>libwrap</tt> to allow or
deny connections.</li>

<li>ACAP (Application Configuration Access Protocol) support for
Cyrus Murder: IMAP Aggregator.</li>

<li>Sieve enhancements: regular expressions, notifications,
automatically setting IMAP flags.</li>

<li>SNMP (Simple Network Management Protocol) support for
monitoring usage (e.g. number of users logged in) as well as for
instrumenting protocol usage (e.g. number of times CREATE has been
called).</li>

<li>Perl version of <tt>cyradm</tt> contributed by Brandon Allbery
(<tt>allbery@ece.cmu.edu</tt>). Eventually we expect to transition
to the Perl version away from the TCL version.</li>

<li>Bugfix in modified UTF-7 processing (for mailbox names). Bugfix
in <tt>index_searchcacheheader()</tt>.</li>

<li>Implemented the extension MULTIAPPEND.</li>

<li>RENAME is now hierarchical.</li>

<li>The right that controls whether a mailbox may be deleted is now
"c". (It used to be "d".)</li>

<li>An additional backend for seen state has been created,
<tt>seen_db</tt>. It stores seen state in a per-user database.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.20</h2>

<ul>
<li>Some fixes to the TLS support to gracefully degrade
service.</li>

<li>Sieve now correctly re-sieves messages that are received with
identical message-ids, but different envelopes. It also obeys
plus-addressing on keep actions. (Fixes by Ken Murchison,
<tt>ken@oceana.com</tt>.)</li>

<li>The server wasn't correctly calculating the percentage of quota
used when deciding whether or not to issue a warning.</li>

<li>Implemented single-instance store: deliver, when using LMTP,
will only store one copy of a message per partition, and hard link
it among multiple users. Sites with a large number of partitions
could see a performance decrease.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.19</h2>

<ul>
<li>Added STARTTLS support; requires OpenSSL.</li>

<li>Sieve now uses MDNs to reject messages instead of DSNs,
conforming to the latest Sieve specification. (Ken Murchison)</li>

<li>The duplicate delivery database expiration (deliver -E) was
deleting all entries; fixed.</li>

<li>imtest is now a little smarter about parsing the protocol to
avoid synchronization errors prior to authentication.</li>

<li>timsieved's parser is now written in C; should be no noticeable
changes, but should make compiling it much easier.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.16</h2>

<ul>
<li>Fix to enclosed message parsing (thanks to John Myers).</li>

<li>When trying to skip over non-synchronizing literals during
error recovery, the IMAP server never stopped eating. Fixed.</li>

<li>Added <tt>with-sasldir</tt> as a configure option.</li>

<li>Fixed a bug in cyradm when it got the CAPABILITY list.</li>

<li>Fixed bugs relating to the incomplete SASLfication of
deliver.</li>

<li>Fixed bugs in deliver relating to duplicate delivery
suppression and Sieve vacation functionality.</li>

<li>Fixed a memory leak in deliver.</li>

<li>When looking for SASL options, imapd wasn't defaulting to the
option without the plugin name requesting it. This caused PLAIN
authentications to incorrectly fail.</li>

<li>Changed the expiration time of pts entries to 3 hours; only
affects sites using krb_pts as the authorization method.</li>

<li>Fixed some bugs in imclient; mostly affects cyradm.</li>

<li>Fixed a bug in the Sieve lexer and improved the usefulness of
the Sieve test program.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.13</h2>

<ul>
<li>An annoying memory management bug in imclient was fixed and
it's efficiency was improved somewhat.</li>

<li>Added the sieve client (<tt>installsieve</tt>) and server
(<tt>timsieved</tt>) for getting sieve scripts onto the server and
managing them once they are there.</li>

<li>The default Sieve script layout has changed to
sievedir/u/user/default; this supports multiple Sieve scripts per
user with the ability to switch between them.</li>

<li>Fixed the kerberos-to-local-host bug (patch by Greg Hudson,
<tt>ghudson@mit.edu</tt>).</li>

<li>Started changes to deliver to support LMTP AUTH.</li>

<li>Improved the error messages logged when authentication
fails.</li>

<li>Fixed a bug dealing with argument processing in the arbitron
program.</li>

<li>pop3d now correctly supports SASL AUTH.</li>

<li>imtest will no longer prompt for authentication or
authorization names; instead, it defaults to the current Unix user.
Override on the command line.</li>

<li>Likewise, cyradm will no longer prompt. It now accepts "-m" to
specify what SASL mechanism to use, and the pwcommand option to
authenticate should once again work when used
non-interactively.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.10</h2>

<ul>
<li>Changed the sieve option in the configure script to
<tt>--disable-sieve</tt>.</li>

<li>Updated reconstruct and quota to check for hashed imap spool
directories correctly.</li>

<li>deliver now will not use Sieve if duplicate delivery
suppression is disabled. There was also a bug that caused the
duplicate delivery database to be checked even if dupelim was
disabled.</li>

<li>deliver now uses tm_gmtoff if available to check for the local
timezone.</li>

<li>The default format for reading information from INN has
changed. If you use INN to feed imapd news, you must change your
"<tt>newsfeeds</tt>" file to contain

<pre>
collectnews!:*:Tf,WO:collectnews
</pre>
</li>

<li>The dohash script now takes a "<tt>-i</tt>" option to run
interactively and the "<tt>-f</tt>" option to issue warnings
instead of fatal errors.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.1-BETA</h2>

<ul>
<li>cyradm should now work with all mechanisms (it now handles
empty challenges and responses).</li>

<li>Fixed deliver to deal with arbitrarily long headers</li>

<li>COPY for non-existent sequence numbers returns NO; this
contrasts to UID COPY, which always returns OK.</li>

<li>FETCH for non-existent sequence numbers returns NO; this
contrasts to UID FETCH, which always returns OK.</li>

<li>Fixed a misleading BAD responses to commands that take
sequences.</li>

<li>Added UIDNEXT untagged response to a SELECT (from
<tt>draft-crispin-imapv-07.txt</tt>).</li>

<li>pop3d now correctly passes SASL configuration options to
libsasl.</li>

<li>imtest now correctly flushes the server's output to the
screen.</li>

<li>Added more hashing using a simple but stupid algorithm. Now
whenever there is a mailbox access, quota access, or subscription
access, it goes through a hash function. this is done to help
reduce the number of files/directories in any given directory.</li>

<li>Added the binary <tt>mbpath</tt>. Given a mailbox name, this
binary will print the filesystem path to that mailbox. This way if
you have multiple partitions and hashing turned out, you don't have
to spend as many mental cycles figuring out where the actual
directory is.</li>

<li>deliver now checks <tt>sieveusehomedir</tt> and
<tt>sievedir</tt> in the config file to determine where to look for
sieve scripts.</li>

<li>ptloader now has a workaround for afs 3.5.</li>

<li>clarified an error message in message.c when an unexpected end
of file is encountered.</li>

<li>fixed some random memory leaks in deliver.</li>

<li>fixed a fairly major bug in prot_fill. it was performing
incorrectly when reading only a single character.</li>

<li>fixed a bug in how imtest looked for OK or NO.</li>

<li>fixed a memory leak in imapd.</li>

<li>imapd now allows any user (or member of a group) listed in
"proxyservers" to proxy.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.6.0-BETA</h2>

<ul>
<li>fixed stupid bug in imapd</li>

<li>fixed sasl/config.c interaction</li>

<li>fixed use of stat in imtest</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5.24</h2>

<ul>
<li>ANSI C is now required.</li>

<li>imtest's interface has changed, to allow for SASL
authentication. Sorry, but it had to happen. It now also includes a
timing test (-z) which we use to test the SASL layers.</li>

<li>imtest no longer uses a non-synchronizing literal with LOGIN,
so it should work against all IMAP servers.</li>

<li>The prot layer now uses SASL for encryption and authentication.
This changed a large amount of code, and some build
procedures.</li>

<li>As a side effect of SASL, --enable-static-libraries now doesn't
do anything. We are considering compiling cyrus with libtool to
change this.</li>

<li>Error codes returned by programs have changed, and programs
return EX_TEMPFAIL far more than they used to. This is because
Sendmail considers most not-EX_TEMPFAIL errors permanent; now, if
it may not be permanent, EX_TEMPFAIL is returned. (See
lib/exitcodes.h.)</li>

<li>Two bugs fixed: UID FETCH's with no messages in range now
return OK, not BAD. And an obscure bug in LIST case sensitivity is
fixed.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5.19</h2>

<ul>
<li>Most of the charset.c code (and mkchartable.c code) has been
replaced thanks to John Myers).</li>

<li>Bug fix in message.c to look up headers in the cache when
they're in the cache correctly; thanks to Chris Newman for the
fix.</li>

<li>Code cleanup here and there (thanks to Bruce Balden).</li>

<li>Annoying (and confusing) lines in syslog every time a message
was delivered if deliver was compiled using dbm saying that deliver
was "unable to fetch entry" have been removed.</li>

<li>Content-Disposition lines were being parsed improperly. If they
had no optional arguments, they were being ignored as if they were
syntactically incorrect. This is fixed, but imapd will continue to
serve wrong information unless cyrus.caches are rebuilt (with
reconstruct) for any message that was added to the mailbox before
this bug was fixed.</li>

<li>The arbitron program now takes a mailbox pattern argument for
the mailbox to run on. The manpage always said it did anyway.</li>

<li>Uninitialized variable fixed in imapd.c with the shutdown file
code.</li>

<li>Minor tweaks to purify build config.</li>

<li>Fix minor memory leak in proc.c where procfname wasn't being
free'd.</li>

<li>Fix brain fart in auth_krb_pts.c where a CLOSE() was done to a
DB handle BEFORE we access the data read from the DB database. This
means we were copying free'd memory into the groups list. Note this
only affects people using DB, AFS and ptloader.</li>

<li>Committed minor syslog log level changes in ptloader and
deliver.</li>

<li>make distclean now does what it's supposed to.</li>

<li>Possibly misnamed experimental --enable-static-libraries switch
that tries to do a good job of building binaries with whatever
static libraries are availible. If you use this, you do so at your
own risk, and if it fails, we will disavow all knowledge of you and
your team. Good luck, Jim.</li>

<li>Add optional third argument to imtest for it to take input from
a file. This is a gross hack.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5.14</h2>

<ul>
<li>LIST now honors the reference argument.

<p>This behavior can be turned off by a configuration option
imapd.conf--which may be desirable because of certain clients that
ask for a "mail directory" setting for IMAP which will now cause
problems when it was ignored before. (The default is for the
reference argument to be honored.)</p>
</li>

<li>The <tt>arbitron</tt> program now takes a mailbox pattern
argument for the mailbox to run on. The manpage always said it did
anyway.</li>

<li>Added --disable-server switch to optionally prevent compilation
of server to help sites that just want client libraries (so cyradm
and libcyrus can be compiled on remote systems without installing
stuff into /usr/cyrus/bin, etc.) For now, the server is still
configured in this case, and a Makefile is generated. This could
change in future versions.</li>

<li>Fixed a mmap leak in index.c in index_search_evaluate that
caused problems on complex searches. Thanks to Jeff Schiller for
pointing this out. Fixed a potential leak in mboxlist.c that
happened if a rename went awry. Thanks to Chris Newman for pointing
this out.</li>

<li>Fixed a bug in LIST and LSUB code so that user.* mailboxes will
be printed on every LIST instead of just the first one.</li>

<li>Implemented the <i>POP3 Extension Mechanism</i>, RFC 2449, in
order to advertise the capabilities already supported.</li>

<li>Fixed a bug in mailbox.c that disallowed MUTF-7 representations
of ASCII characters when it shouldn't have. (Thanks to John Myers
for providing a fix and to Per Steinar Iversen for telling me that
I didn't do it before.)</li>

<li>More cleanup the ptloader/auth_krb_pts code. If you use
Kerberos and IMSP, you *MUST* pick up cyrus-imspd-v1.5a6 (or
newer).</li>

<li>A few configure tweaks.</li>

<li>Duplicate delivery changes:

<ul>
<li>Split out duplicate delivery elimination to multiple files.
This should help reduce the lock contention that normally occurs
with this file. To not clutter <i>config_dir</i>, the files will be
located in a subdirectory named <tt>deliverdb</tt>, for example
<tt>/var/imap/deliverdb</tt>. If you don't make this directory,
nothing bad will happen (other than duplicate delivery elimination
will not work).</li>

<li>The time value is now stored as an integer in native byte order
as opposed to converting it to a string before it is stored in the
database.</li>

<li>checkdelivered() now obtains a read lock instead of a write
lock when trying to check for duplicates. Only markdelivered()
grabs a write lock.</li>
</ul>
</li>

<li>Added logic to cause cyradm to abort more cleanly if not given
command line arguments in an interactive session. This gets rid of
the dreaded <tt>application-specific intialization failed</tt>
messages.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5.11</h2>

<ul>
<li>The CREATE command now ignores a trailing hierarchy delimiter
instead of ignoring the CREATE command.</li>

<li>UIDPLUS is now always advertised in CAPABILITY and is always
availible. The UIDPLUS extension is a set of optimizations using
UID values instead of sequence numbers and is described in RFC
2359.</li>

<li>Cyrus no longer rejects messages with 8-bit characters in the
headers. Rather than reject the message, characters with the 8th
bit set are changed to 'X'. Internationalization in headers is
supported by the mechanism specified in RFC 2047 (and RFC
1342).</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5.10</h2>

<ul>
<li>If ENABLE_EXPERIMENT is set, the server no longer claims to
support OPTIMIZE-1; instead, it claims to support UIDPLUS. The
Getuids command has been removed since it is not in the UIDPLUS
document (draft-myers-imap-optimize-03.txt).</li>

<li>The checks for Tcl in configure are much smarter. The configure
script asks tclsh where its configuration lives, then consults the
shell scripts that have that information. This should work with 7.5
or better, which is what the server requires anyway. (All the
previous checks to look for Tcl libraries are gone; now, configure
runs tclsh and asks it where the Tcl libraries are, then runs the
shell scripts that are in that directory. Since the tclConfig.sh
script may not be in that directory, it looks in .. as well.)</li>

<li>The checks for com_err in configure are a little smarter and
look to see if all the pieces are there before trying to use
them.</li>

<li>Added support for the NAMESPACE extension (if
--enable-experiment is supplied).</li>

<li>Added a "reject8bit" switch to imapd.conf. If set to "true",
messages containing 8-bit-set characters in the headers are
rejected (the previous behavior); if set to "false" or left to the
default value, messages containing 8-bit-set characters have these
characters changed to a constant character ('X').</li>

<li>Added the "fud" program. This is an interm hack designed to
allow allow finger information to be retrieved for cyrus users.
This is experimental and it is not recommend that services be built
arround this feature, since it is likely to be removed in a future
release of the IMAP server.</li>

<li>Bug fix: User defined flags now work properly.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5.2</h2>

<ul>
<li>Fixed a bug with word alignment on Solaris using Kerberos
compiled with Sun's CC. (Several patches were submitted; thanks to
everyone who did so.)</li>

<li>Patches from John Myers, including more glob fixes.</li>

<li>Use the default hash function from DB. Note that this means
that the existing <tt>delivered.db</tt> and <tt>ptscache.db</tt> is
<b>NOT</b> compatible with this release. These files should be
removed.</li>

<li>Provide two debugging programs that dump the databases:
<tt>ptdump</tt> and <tt>dump_deliverdb</tt>.</li>

<li>Multiple changes to ptloader. added a bunch of flags; let it
reauthenticate on its own; added support perl wrapper; added bunch
of debugging information/output; bunch of other cleanups</li>

<li>The mailboxes file is now closed if it isn't likely to be
referenced, hopefully preventing old mailboxes files from hanging
around in memory as frequently.</li>

<li>Added a patch from Eric Hagberg to work around a possible
deadlock condition in mboxlist.c where rename isn't atomic.</li>

<li>Patch from John Myers to get rid of cyrus.seen corruption in
bsearch_mem.</li>

<li>Patch from John Myers and to allow ISO-8859-1 characters in
mailbox names.</li>

<li>Makedepend still runs, and still generates warnings, but these
are squirrled away in makedepend.log.</li>

<li>On mailbox delete, the server will no longer try and unlink
".." and "." as we got a report that it seriously breaks one file
system (even as non-root).</li>

<li>Added some support for Netscape's very misleading "Administrate
My Mail" menu option in Communicator. Allows for a URL to be set in
imapd.conf for the page to refer users to; needs to be turned on
with --enable-netscapehack at compile time to enable it.</li>

<li>Bug swap: imtest quotes password with a non-synchronizing
literal in order to allow weird characters like ) in passwords. But
it doesn't look to see if the server supports non-synchronizing
literals.</li>

<li>If the file "<tt>msg/motd</tt>" exists, the first line is now
sent to clients upon login.</li>

<li>Bug fix: to handle BODY[] properly when fetching news articles
(truncation no longer occurs). (thanks to John Prevost)</li>

<li>The makedepend supplied should now run on Solaris Intel.
(thanks to Chris Newman)</li>

<li>Added some hacks to pwcheck.c for Linux and Digital Unix where
the default protections on the socket don't allow the cyrus user to
read it. (thanks to Lyndon Nerenberg)</li>

<li>Bug fix: Flags beginning with \ are system flags and users can
only create the defined flags. The code to do this before was
confused.</li>

<li>The configure scripts and makefiles have some random
fixes.</li>

<li>Added a contrib directory for reasons of laziness in collecting
patches, not all of which should be in the distribution.</li>

<li>ptloader can now renew its AFS authentication by reading from a
srvtab file.</li>

<li>The configure script now looks for a libcom_err and can use an
installed one if one exists.</li>

<li>Other small bug fixes.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.5</h2>

<ul>
<li>Bug fix: RENAME corrupted mailboxes if they had been EXPUNGEd.
(may have only happened with INBOX, which Pine tickles once a
month.)</li>

<li>Bug fix: auth_newstate now initializes its structures.</li>

<li>Bug fix: pop3d.c, a printf was changed to prot_printf.</li>

<li>Cyrus now sends X-NON-HIERARCHICAL-RENAME to alert clients that
it is not handling RENAME in an IMAP4rev1 compliant manner. This
will be fixed in a subsequent release.</li>

<li>Bug fix: imclient_autenticate now does resolution on the
hostname before authenticating to it. This caused problems when
authenticating to an address that was a CNAME.</li>

<li>Bug fix: LIST %.% (and other multiple hierarchy delimiter
matches) works properly. Several other glob.c fixes are included as
well.</li>

<li>Bug fix: a fetch of exclusively BODY[HEADER.FIELDS...] should
now work properly.</li>

<li>Bug fix: reconstruct now considers a nonexistant INN news
directory to be empty; this makes reconstruct fix the cyrus.* files
in the imap news partition.</li>

<li>Added a manpage for imclient.</li>

<li>Fixed a few other minor bugs.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.4</h2>

<ul>
<li>Implemented the "<tt>IMAP4rev1</tt>" protocol commands. (The
hierarchical behavior of RENAME, which was added late to the
IMAP4rev1 specification, is not implemented.) Changes the minor
version number of the cyrus mailbox database format to 1.
<b>IMPORTANT:</b> it is necessary to run the command
"<tt>reconstruct -r</tt>" as the cyrus user after upgrading the
Cyrus IMAP software from version 1.4 or earlier.</li>

<li>If the file "<tt>msg/shutdown</tt>" exits in the configuration
directory, the IMAP server will issue the first line in the file in
an untagged BYE message and shut down.</li>

<li>Permit SPACE in mailbox names.</li>

<li>Permit the "modified UTF-7" internationalized mailbox name
convention.</li>

<li>"User opened mailbox" messages are now logged at the DEBUG
level instead of the INFO level.</li>

<li>Added <tt>-q</tt> (ignore quota) switch to
<tt>deliver</tt>.</li>

<li>New "<tt>krbck</tt>" program for diagnosing common kerberos
problems.</li>

<li>auth_unix no longer requires users to be in the passwd
file.</li>

<li>AUTHENTICATE command now reports the protection mechanism in
use in the text of the tagged OK response</li>

<li>Make MAILBOX_BADFORMAT and MAILBOX_NOTSUPPORTED temporary
errors.</li>

<li>Use the header cache for SEARCH HEADER</li>

<li>Use "unspecified-domain" instead of server's hostname to fill
out RFC 822 addresses without the "@domain" part.</li>

<li>Make "reconstruct -r" with no args reconstruct every
mailbox.</li>

<li>The configure script now defaults to using unix_pwcheck instead
of unix if the file /etc/shadow exists.</li>

<li>The location of the pwcheck socket directory now defaults to
"<tt>/var/ptclient/</tt>". It is controlled by the
"<tt>--with-statedir=DIR</tt>" option, which defaults to
"<tt>/var</tt>".</li>

<li>Bug fix: by using an certain address form, one could deliver to
a user's mailbox bypassing the ACL's.</li>

<li>Bug fix: un-fold header lines when parsing for the
ENVELOPE.</li>

<li>Delete quota roots when deleting the last mailbox that uses
them. Doesn't catch all cases, but should get over 99% of
them.</li>

<li>Implement plaintextloginpause configuration option, imposes
artificial delay on plaintext password logins.</li>

<li>Implement popminpoll configuration option, limits frequency of
POP3 logins.</li>

<li>Implement AFS PT server group support.</li>

<li>Remove persistence of POP3 LAST value and remove Status:
hack</li>

<li>Support the new ACL command set in the IMAP server.</li>

<li>Bug fix: Have to initialize reply to 0 in pop3d. Was causing
POP3 server to occasionally drop the connection during
authentication.</li>

<li>Bug fix: The COPY command wasn't issuing a [TRYCREATE] when
appropriate for sub-mailboxes of INBOX.</li>

<li>Bug fix: Renaming a mailbox wasn't correctly changing its
UIDVALIDITY.</li>

<li>Bug fix: Renaming a mailbox to itself, in order to move it to a
different partition, was not working correctly.</li>

<li>Update the AUTH support in pop3d to conform to the latest draft
specification.</li>

<li>Update cyradm to use Tcl 7.5 instead of Tcl 7.4</li>

<li>Re-implement large sections of the netnews support. It no
longer requires modifications to INN, as it now expunges the index
entries for expired/canceled articles upon select of the
newsgroup.</li>

<li>Implement newsspool configuration option, for separating the
directories for the news spool and the various cyrus.* IMAP server
index files.</li>

<li>Bug fix: permit empty flag list in APPEND command</li>

<li>Bug fix: deal with truncated Date: header values.</li>

<li>Bug fix: memory mapping code, deal better with 0-length maps,
since mmap() appears to crap out on that boundary condition.</li>

<li>Portability fix: if no strerror, have to define
NEED_SYS_ERRLIST.</li>

<li>Bug fix: used append instead of lappend in cyradmin, preventing
use of any port other than IMAP.</li>

<li>When the client is streaming its commands, the IMAP server
attempts to stream its tagged responses.</li>

<li>Modify zephyr support to compile without Kerberos support.</li>

<li>Add a bunch of prototype declararations to the code.</li>

<li>In deliver, change the MULT support to instead use the LMTP
syntax.</li>

<li>imclient: support tagged intermediate replies and a default
callback.</li>

<li>Implement some experimental protocol extensions for optimizing
disconnected use resynchronization. Most extensions are disabled by
default. Client authors should contact info-cyrus@andrew.cmu.edu if
they wish to experiment with these.</li>

<li>In Makefiles, change $(AR) to ar -- HPUX make is
defective.</li>

<li>In deliver, use HAVE_LIBDB to select use of db over dbm</li>

<li>Add map_stupidshared mapping module for older versions of
Digital Unix. It's not quite as bad as HPUX, but...</li>

<li>Bug fix: in imclient.c, don't free NULL pointers and don't call
htons() on the output of getservbyname(). Have to abort sending the
command if you get a tagged response when sending a literal.</li>

<li>The auth_xxx routines now create/take a state argument instead
of maintaining internal static state.</li>

<li>Solaris mktime() is buggy in some releases. Create and use
mkgmtime() for parsing date strings.</li>

<li>Message parsing routines now use memory mapping, though they
still copy data around in line-sized buffers.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.3</h2>

<ul>
<li>Implemented the "<tt>reconstruct -m</tt>" command, for
reconstructing the <tt>mailboxes</tt> file. <b>IMPORTANT:</b> it is
necessary to run the command "<tt>reconstruct -m</tt>" as the cyrus
user after upgrading the Cyrus IMAP software from version 1.3 or
earlier. We recommend you make a backup copy of the
<tt>mailboxes</tt> file in the configuration directory before
performing the conversion.</li>

<li>Mailbox names are now case sensitive, not case insensitive.
"<tt>INBOX</tt>" is the exception, and is treated as being
case-insensitive.</li>

<li>Personal mailboxes now appear to their owners as being under
the "<tt>INBOX.</tt>" hierarchy. For example, the mailbox
"<tt>user.bovik.work</tt>" appears to the user "<tt>bovik</tt>" as
"<tt>INBOX.work</tt>". The user may still refer to the mailbox with
the name "<tt>user.bovik.work</tt>".</li>

<li>Previously, the code used "<tt>anybody</tt>" as the name of the
group that all users are in, but the documentation used the name
"<tt>anyone</tt>". Changed the code to match the documentation. The
name "<tt>anybody</tt>" will be canonicalized to the name
"<tt>anyone</tt>".</li>

<li>The install document now gives different recommended locations
for the server databases. The recommended location of the
configuration directory changed from "<tt>/usr/cyrus</tt>" to
"<tt>/var/imap</tt>" and the recommended location of the default
partition directory changed from "<tt>/usr/spool/cyrus</tt>" to
"<tt>/var/spool/imap</tt>". It is <b>NOT</b> necessary to change
the locations of these directories when upgrading from version 1.3
or earlier of the Cyrus IMAP server software. If you do wish to
change the locations of these directories to match the new
recommendations, simply rename the directories and change the
appropriate values in your <tt>/etc/imapd.conf</tt> file.</li>

<li>Created a "<tt>make install</tt>" rule. See the <a
href="install.html">installation</a> document for all the new
corresponding <tt>configure</tt> options. Note the recommended
location of the "<tt>imapd</tt>", "<tt>pop3d</tt>", and
"<tt>deliver</tt>" programs has changed, this change needs to be
reflected in the "<tt>inetd.conf</tt>" and "<tt>sendmail.cf</tt>"
files.</li>

<li>New "<tt>login_unix_pwcheck</tt>" module and "<tt>pwcheck</tt>"
daemon, for improved shadow password support. See the
"<tt>pwcheck/README.pwcheck</tt>" file in the distribution for
details.</li>

<li>Renamed the "<tt>login_unix_shadow</tt>" module to
"<tt>login_unix_getspnam</tt>".</li>

<li>Added a mail notification mechanism, using Zephyr.</li>

<li>Added a feature to automatically create user IMAP accounts.
Controlled by the "<tt>autocreatequota</tt>" config option.</li>

<li>Added the "<tt>logtimestamps</tt>" config option, for putting
timestamp information into protocol telemetry logs.</li>

<li>Beefed up the Kerberos checks in Configure to ensure the DES
library routines exist.</li>

<li>On some systems, the "<tt>echo</tt>" command with no arguments
emits a newline. Changed the installation document to instead use
the "<tt>true</tt>" command to create the "<tt>mailboxes</tt>"
file.</li>

<li>Store a redundant copy of a mailbox's ACL in the
<tt>cyrus.header</tt> file, so "<tt>reconstruct -m</tt>" may later
use it as a backup.</li>

<li>Had to remove the declaration of <tt>tcl_RcFileName</tt> for
the latest version of Tcl.</li>

<li>Make much more extensive use of memory mapping. Replace the
binary search module with one that searches a memory mapped
area.</li>

<li>Replaced the yacc-based RFC822 address parser with a hand-coded
one.</li>

<li>Replaced the et (error table) libary with a version that
doesn't require lex or yacc. Remove the lex/yacc checking from
Configure.</li>

<li>Safety feature: most programs now refuse to run as root.</li>

<li>Bug fix: Issue [TRYCREATE] tag on COPY command when
appropriate.</li>

<li>Bug fix: The quoted-printable decoder wasn't ignoring trailing
whitespace, as required by MIME.</li>

<li>Bug fix: Don't spew cascade errors if the server gets an EOF
during/after reading an APPEND literal.</li>

<li>Bug fix: gmtmoff_gmtime.c was returning results with the wrong
sign.</li>

<li>Bug fix: imclient_send was appending spaces to %d and %u and
the response parser was not handling responses that did not contain
a space after the keyword.</li>

<li>Bug fix: rmnews wasn't removing some (un-indexed) article files
correctly.</li>

<li>Completely disabled the dropoff code for now. It will be
completely replaced when IMSP integration is implemented</li>

<li>Added workaround for the Linux mkdir() problem.</li>

<li>In Configure, use a more direct test for a working
shared-memory mmap</li>

<li>In collectnews, avoid O(n**2) behavior when processing articles
that have already expired.</li>

<li>Bug fix: append_addseen() would screw up if no messages were
previously seen.</li>

<li>Added the CMU-specific amssync and cmulocal directories.</li>

<li>Use memmove instead of bcopy.</li>

<li>Implemented the first pass of SMTP/MULT support in
deliver.</li>

<li>Added cacheid parameter to auth_setid(), for AFS PT server
support.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.2</h2>

<ul>
<li>Fixed bug in character set code that broke text searches. Sites
which care about searching headers need to reconstruct their
existing mailboxes.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.1-Beta</h2>

<ul>
<li>Add support for <tt>UIDVALIDITY</tt> special information
token.</li>

<li>Add <tt>syncnews</tt> and <tt>arbitron</tt> programs.</li>

<li>Redo duplicate delivery elimination in <tt>deliver</tt>.</li>

<li>Bug fixed: Must re-read files after acquiring a lock. Cannot
trust the mtime of a file to increment when writing the file--file
could be written to multiple times in the same second.</li>

<li>Bug fixed: <tt>EXAMINE</tt> command should not affect
<tt>\Recent</tt> status.</li>

<li>Update the user's <tt>\Recent</tt> high-water-mark when we
report new messages.</li>

<li>Portability changes</li>

<li>Upgrade to autoconf 2.1</li>

<li>Allow privacy to be turned off at compile-time with
<tt>--disable-privacy</tt> configure switch.</li>

<li>Fix typo in <tt>cyradm</tt> preventing "<tt>all</tt>" from
being recognized.</li>

<li>Include <tt>map_private.c</tt> memory mapping module for
systems like HPUX which have half-working <tt>mmap()</tt>
implementations.</li>

<li>Switch to using UTF-8 for internal search format. Sites which
care about internationalized searching of headers need to
reconstruct all their existing mailboxes.</li>

<li>Fix some errors in the iso-8859-* tables.</li>

<li>Add and correct a bunch of case-independence mappings in the
character tables.</li>

<li>First pass at implementing the <tt>STATUS</tt> extension;
disabled for release.</li>

<li>First pass at implementing IMAP/IMSP server integration. Not
ready for general use.</li>

<li>Add <tt>new_cred</tt> and <tt>free_cred</tt> mechanisms to
authentication modules.</li>

<li>Don't complain when doing "<tt>reconstruct -r foo</tt>" and
<tt>foo</tt> isn't a mailbox.</li>

<li>Add <tt>IMAP_QUOTAROOT_NONEXISTENT</tt> error code.</li>

<li>Bug fix: Avoid divide by zero when quota is zero</li>

<li>Bug fix: In an error case of the ACL handling code, we have to
restore tab before breaking out of loop.</li>

<li>Fix file descriptor leak in quota system.</li>

<li>Change a bunch of int variables to unsigned.</li>

<li>Better error reporting on reads that end up short.</li>
</ul>

<h2>Changes to the Cyrus IMAP Server Since Version 1.0-Beta</h2>

<ul>
<li>Improved <a href="install.html">installation</a> document.</li>

<li>New "<a href="cyradm.1.html"><tt>cyradm</tt></a>"
administrative client.</li>

<li>Changed the syslog facility from "<a
href="install.html#syslog"><tt>local4</tt></a>" to
"<tt>local6</tt>".</li>

<li>Removed the <tt>renounce setuid</tt> check in "<a
href="install.html#deliver"><tt>deliver</tt>"</a>. The
"<tt>deliver</tt>" program must now be <b>non</b>-executable by
<tt>other</tt>.</li>

<li>Fixed a typo in the parsing of <tt>SEARCH DELETED</tt>. (This
bug constantly got tripped by newer C-clients.)</li>

<li>Redesigned the implementation of <tt>SEARCH CHARSET</tt>.<br />
 Sites that wish to search for non-ASCII characters in the headers
of existing mailboxes must run <tt>reconstruct</tt> on all their
mailboxes after upgrading to this version.</li>

<li>Added AUTH and KPOP support to the POP3 server.</li>

<li>Added search support for the ISO-2022-JP character set.</li>

<li>Replaced the search engine with a partial Boyer-Moore
algorithm.</li>

<li>Special-case optimized searching US-ASCII text.</li>

<li>Fixed a bug which caused the message parser to spin-loop on a
particular degenerate invalid-MIME case.</li>

<li>Fixed a performance bug in the message parser.</li>

<li>Tracked last-minute changes to the IMAP4 protocol.</li>

<li>Fixed a bug in <tt>UNSUBSCRIBE</tt> which caused too many
subscriptions to be removed.</li>

<li>Added a bunch more "<a
href="install.html#configure"><tt>configure</tt></a>" options.</li>

<li>Ported to HPUX.</li>

<li>Fixed a bug in the <tt>LIST/LSUB \Noselect</tt> code.</li>

<li>Fixed bug in the globbing code which caused the "<tt>*%</tt>"
pattern to work incorrectly.</li>

<li>Client-side Kerberos support is now conditionalized on
<tt>HAVE_ACTE_KRB</tt>, which is set by configure.</li>

<li>Fixed some invalid buffer-alignment assumptions in the Kerberos
code.</li>

<li>Made the lexers compatible with flex. Configure now looks for
and prefers to use <tt>flex</tt> and
<tt>bison</tt>/<tt>byacc</tt>.</li>

<li>Made the IMAP server check for the existence of the mailboxes
file upon startup, in order to give a more informative error
message for this common configuration error.</li>

<li>Fixed other minor bugs.</li>
</ul>

<hr />
last modified: $Date: 2010/04/22 17:29:53 $ <br />
<a href="index.html">Return</a> to the Cyrus IMAP Server Home Page
</body>
</html>