
Cyrus IMAP 1.x Release Notes
****************************

Changes to the Cyrus IMAP Server Since Version 1.6.20

* Some fixes to the TLS support to gracefully degrade service.

* 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,
  ken@oceana.com.)

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

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

Changes to the Cyrus IMAP Server Since Version 1.6.19

* Added STARTTLS support; requires OpenSSL.

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

* The duplicate delivery database expiration (deliver -E) was
  deleting all entries; fixed.

* imtest is now a little smarter about parsing the protocol to avoid
  synchronization errors prior to authentication.

* timsieved's parser is now written in C; should be no noticeable
  changes, but should make compiling it much easier.

Changes to the Cyrus IMAP Server Since Version 1.6.16

* Fix to enclosed message parsing (thanks to John Myers).

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

* Added with-sasldir as a configure option.

* Fixed a bug in cyradm when it got the CAPABILITY list.

* Fixed bugs relating to the incomplete SASLfication of deliver.

* Fixed bugs in deliver relating to duplicate delivery suppression
  and Sieve vacation functionality.

* Fixed a memory leak in deliver.

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

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

* Fixed some bugs in imclient; mostly affects cyradm.

* Fixed a bug in the Sieve lexer and improved the usefulness of the
  Sieve test program.

Changes to the Cyrus IMAP Server Since Version 1.6.13

* An annoying memory management bug in imclient was fixed and it's
  efficiency was improved somewhat.

* Added the sieve client (installsieve) and server (timsieved) for
  getting sieve scripts onto the server and managing them once they
  are there.

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

* Fixed the kerberos-to-local-host bug (patch by Greg Hudson,
  ghudson@mit.edu).

* Started changes to deliver to support LMTP AUTH.

* Improved the error messages logged when authentication fails.

* Fixed a bug dealing with argument processing in the arbitron
  program.

* pop3d now correctly supports SASL AUTH.

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

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

Changes to the Cyrus IMAP Server Since Version 1.6.10

* Changed the sieve option in the configure script to --disable-
  sieve.

* Updated reconstruct and quota to check for hashed imap spool
  directories correctly.

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

* deliver now uses tm_gmtoff if available to check for the local
  timezone.

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

* collectnews!:*:Tf,WO:collectnews

* The dohash script now takes a "-i" option to run interactively and
  the "-f" option to issue warnings instead of fatal errors.

Changes to the Cyrus IMAP Server Since Version 1.6.1-BETA

* cyradm should now work with all mechanisms (it now handles empty
  challenges and responses).

* Fixed deliver to deal with arbitrarily long headers

* COPY for non-existent sequence numbers returns NO; this contrasts
  to UID COPY, which always returns OK.

* FETCH for non-existent sequence numbers returns NO; this contrasts
  to UID FETCH, which always returns OK.

* Fixed a misleading BAD responses to commands that take sequences.

* Added UIDNEXT untagged response to a SELECT (from draft-crispin-
  imapv-07.txt).

* pop3d now correctly passes SASL configuration options to libsasl.

* imtest now correctly flushes the server's output to the screen.

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

* Added the binary mbpath. 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.

* deliver now checks sieveusehomedir and sievedir in the config file
  to determine where to look for sieve scripts.

* ptloader now has a workaround for afs 3.5.

* clarified an error message in message.c when an unexpected end of
  file is encountered.

* fixed some random memory leaks in deliver.

* fixed a fairly major bug in prot_fill. it was performing
  incorrectly when reading only a single character.

* fixed a bug in how imtest looked for OK or NO.

* fixed a memory leak in imapd.

* imapd now allows any user (or member of a group) listed in
  "proxyservers" to proxy.

Changes to the Cyrus IMAP Server Since Version 1.6.0-BETA

* fixed stupid bug in imapd

* fixed sasl/config.c interaction

* fixed use of stat in imtest

Changes to the Cyrus IMAP Server Since Version 1.5.24

* ANSI C is now required.

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

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

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

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

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

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

Changes to the Cyrus IMAP Server Since Version 1.5.19

* Most of the charset.c code (and mkchartable.c code) has been
  replaced thanks to John Myers).

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

* Code cleanup here and there (thanks to Bruce Balden).

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

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

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

* Uninitialized variable fixed in imapd.c with the shutdown file
  code.

* Minor tweaks to purify build config.

* Fix minor memory leak in proc.c where procfname wasn't being
  free'd.

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

* Committed minor syslog log level changes in ptloader and deliver.

* make distclean now does what it's supposed to.

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

* Add optional third argument to imtest for it to take input from a
  file. This is a gross hack.

Changes to the Cyrus IMAP Server Since Version 1.5.14

* LIST now honors the reference argument.

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

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

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

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

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

* Implemented the POP3 Extension Mechanism, RFC 2449, in order to
  advertise the capabilities already supported.

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

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

* A few configure tweaks.

* Duplicate delivery changes:

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

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

* checkdelivered() now obtains a read lock instead of a write lock
  when trying to check for duplicates. Only markdelivered() grabs a
  write lock.

* 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 application-specific intialization failed messages.

Changes to the Cyrus IMAP Server Since Version 1.5.11

* The CREATE command now ignores a trailing hierarchy delimiter
  instead of ignoring the CREATE command.

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

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

Changes to the Cyrus IMAP Server Since Version 1.5.10

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

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

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

* Added support for the NAMESPACE extension (if --enable-experiment
  is supplied).

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

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

* Bug fix: User defined flags now work properly.

Changes to the Cyrus IMAP Server Since Version 1.5.2

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

* Patches from John Myers, including more glob fixes.

* Use the default hash function from DB. Note that this means that
  the existing delivered.db and ptscache.db is NOT compatible with
  this release. These files should be removed.

* Provide two debugging programs that dump the databases: ptdump and
  dump_deliverdb.

* 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

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

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

* Patch from John Myers to get rid of cyrus.seen corruption in
  bsearch_mem.

* Patch from John Myers and to allow ISO-8859-1 characters in
  mailbox names.

* Makedepend still runs, and still generates warnings, but these are
  squirrled away in makedepend.log.

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

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

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

* If the file "msg/motd" exists, the first line is now sent to
  clients upon login.

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

* The makedepend supplied should now run on Solaris Intel. (thanks
  to Chris Newman)

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

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

* The configure scripts and makefiles have some random fixes.

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

* ptloader can now renew its AFS authentication by reading from a
  srvtab file.

* The configure script now looks for a libcom_err and can use an
  installed one if one exists.

* Other small bug fixes.

Changes to the Cyrus IMAP Server Since Version 1.5

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

* Bug fix: auth_newstate now initializes its structures.

* Bug fix: pop3d.c, a printf was changed to prot_printf.

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

* Bug fix: imclient_authenticate now does resolution on the hostname
  before authenticating to it. This caused problems when
  authenticating to an address that was a CNAME.

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

* Bug fix: a fetch of exclusively BODY[HEADER.FIELDS...] should now
  work properly.

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

* Added a manpage for imclient.

* Fixed a few other minor bugs.

Changes to the Cyrus IMAP Server Since Version 1.4

* Implemented the "IMAP4rev1" 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. IMPORTANT: it is
  necessary to run the command "reconstruct -r" as the cyrus user
  after upgrading the Cyrus IMAP software from version 1.4 or earlier.

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

* Permit SPACE in mailbox names.

* Permit the "modified UTF-7" internationalized mailbox name
  convention.

* "User opened mailbox" messages are now logged at the DEBUG level
  instead of the INFO level.

* Added -q (ignore quota) switch to deliver.

* New "krbck" program for diagnosing common kerberos problems.

* auth_unix no longer requires users to be in the passwd file.

* AUTHENTICATE command now reports the protection mechanism in use
  in the text of the tagged OK response

* Make MAILBOX_BADFORMAT and MAILBOX_NOTSUPPORTED temporary errors.

* Use the header cache for SEARCH HEADER

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

* Make "reconstruct -r" with no args reconstruct every mailbox.

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

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

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

* Bug fix: un-fold header lines when parsing for the ENVELOPE.

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

* Implement plaintextloginpause configuration option, imposes
  artificial delay on plaintext password logins.

* Implement popminpoll configuration option, limits frequency of
  POP3 logins.

* Implement AFS PT server group support.

* Remove persistence of POP3 LAST value and remove Status: hack

* Support the new ACL command set in the IMAP server.

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

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

* Bug fix: Renaming a mailbox wasn't correctly changing its
  UIDVALIDITY.

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

* Update the AUTH support in pop3d to conform to the latest draft
  specification.

* Update cyradm to use Tcl 7.5 instead of Tcl 7.4

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

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

* Bug fix: permit empty flag list in APPEND command

* Bug fix: deal with truncated Date: header values.

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

* Portability fix: if no strerror, have to define NEED_SYS_ERRLIST.

* Bug fix: used append instead of lappend in cyradmin, preventing
  use of any port other than IMAP.

* When the client is streaming its commands, the IMAP server
  attempts to stream its tagged responses.

* Modify zephyr support to compile without Kerberos support.

* Add a bunch of prototype declararations to the code.

* In deliver, change the MULT support to instead use the LMTP
  syntax.

* imclient: support tagged intermediate replies and a default
  callback.

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

* In Makefiles, change $(AR) to ar -- HPUX make is defective.

* In deliver, use HAVE_LIBDB to select use of db over dbm

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

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

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

* Solaris mktime() is buggy in some releases. Create and use
  mkgmtime() for parsing date strings.

* Message parsing routines now use memory mapping, though they still
  copy data around in line-sized buffers.

Changes to the Cyrus IMAP Server Since Version 1.3

* Implemented the "reconstruct -m" command, for reconstructing the
  mailboxes file. IMPORTANT: it is necessary to run the command
  "reconstruct -m" 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 mailboxes file in the configuration directory before
  performing the conversion.

* Mailbox names are now case sensitive, not case insensitive.
  "INBOX" is the exception, and is treated as being case-insensitive.

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

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

* The install document now gives different recommended locations for
  the server databases. The recommended location of the configuration
  directory changed from "/usr/cyrus" to "/var/imap" and the
  recommended location of the default partition directory changed from
  "/usr/spool/cyrus" to "/var/spool/cyrus". It is NOT 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 /etc/imapd.conf file.

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

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

* Renamed the "login_unix_shadow" module to "login_unix_getspnam".

* Added a mail notification mechanism, using Zephyr.

* Added a feature to automatically create user IMAP accounts.
  Controlled by the "autocreatequota" config option.

* Added the "logtimestamps" config option, for putting timestamp
  information into protocol telemetry logs.

* Beefed up the Kerberos checks in Configure to ensure the DES
  library routines exist.

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

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

* Had to remove the declaration of tcl_RcFileName for the latest
  version of Tcl.

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

* Replaced the yacc-based RFC822 address parser with a hand-coded
  one.

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

* Safety feature: most programs now refuse to run as root.

* Bug fix: Issue [TRYCREATE] tag on COPY command when appropriate.

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

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

* Bug fix: gmtmoff_gmtime.c was returning results with the wrong
  sign.

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

* Bug fix: rmnews wasn't removing some (un-indexed) article files
  correctly.

* Completely disabled the dropoff code for now. It will be
  completely replaced when IMSP integration is implemented

* Added workaround for the Linux mkdir() problem.

* In Configure, use a more direct test for a working shared-memory
  mmap

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

* Bug fix: append_addseen() would screw up if no messages were
  previously seen.

* Added the CMU-specific amssync and cmulocal directories.

* Use memmove instead of bcopy.

* Implemented the first pass of SMTP/MULT support in deliver.

* Added cacheid parameter to auth_setid(), for AFS PT server
  support.

Changes to the Cyrus IMAP Server Since Version 1.2

* Fixed bug in character set code that broke text searches. Sites
  which care about searching headers need to reconstruct their
  existing mailboxes.

Changes to the Cyrus IMAP Server Since Version 1.1-Beta

* Add support for UIDVALIDITY special information token.

* Add syncnews and arbitron programs.

* Redo duplicate delivery elimination in deliver.

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

* Bug fixed: EXAMINE command should not affect Recent status.

* Update the user's Recent high-water-mark when we report new
  messages.

* Portability changes

* Upgrade to autoconf 2.1

* Allow privacy to be turned off at compile-time with --disable-
  privacy configure switch.

* Fix typo in cyradm preventing "all" from being recognized.

* Include map_private.c memory mapping module for systems like HPUX
  which have half-working mmap() implementations.

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

* Fix some errors in the iso-8859-* tables.

* Add and correct a bunch of case-independence mappings in the
  character tables.

* First pass at implementing the STATUS extension; disabled for
  release.

* First pass at implementing IMAP/IMSP server integration. Not ready
  for general use.

* Add new_cred and free_cred mechanisms to authentication modules.

* Don't complain when doing "reconstruct -r foo" and foo isn't a
  mailbox.

* Add IMAP_QUOTAROOT_NONEXISTENT error code.

* Bug fix: Avoid divide by zero when quota is zero

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

* Fix file descriptor leak in quota system.

* Change a bunch of int variables to unsigned.

* Better error reporting on reads that end up short.

Changes to the Cyrus IMAP Server Since Version 1.0-Beta

* Improved installation document.

* New "cyradm" administrative client.

* Changed the syslog facility from "local4" to "local6".

* Removed the renounce setuid check in "deliver". The "deliver"
  program must now be non-executable by other.

* Fixed a typo in the parsing of SEARCH DELETED. (This bug
  constantly got tripped by newer C-clients.)

* Redesigned the implementation of SEARCH CHARSET.

* Sites that wish to search for non-ASCII characters in the headers
  of existing mailboxes must run reconstruct on all their mailboxes
  after upgrading to this version.

* Added AUTH and KPOP support to the POP3 server.

* Added search support for the ISO-2022-JP character set.

* Replaced the search engine with a partial Boyer-Moore algorithm.

* Special-case optimized searching US-ASCII text.

* Fixed a bug which caused the message parser to spin-loop on a
  particular degenerate invalid-MIME case.

* Fixed a performance bug in the message parser.

* Tracked last-minute changes to the IMAP4 protocol.

* Fixed a bug in UNSUBSCRIBE which caused too many subscriptions to
  be removed.

* Added a bunch more "configure" options.

* Ported to HPUX.

* Fixed a bug in the LIST/LSUB Noselect code.

* Fixed bug in the globbing code which caused the "*%" pattern to
  work incorrectly.

* Client-side Kerberos support is now conditionalized on
  HAVE_ACTE_KRB, which is set by configure.

* Fixed some invalid buffer-alignment assumptions in the Kerberos
  code.

* Made the lexers compatible with flex. Configure now looks for and
  prefers to use flex and bison/byacc.

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

* Fixed other minor bugs.
