Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<TITLE>Upgrading From Previous Versions
</title>
</head>
<body>

<h1>Upgrading From Previous Versions</h1>

<h2>Upgrading from all 2.4 series to 2.5</h2>
<ul>
<li>It is strongly advised to shut down the server completely while
    performing the upgrade, because newer daemons will write
    mailboxes.db entries which aren't compatible with the old
    daemons, and may cause crashes if you try to upgrade
    a running server.  You can start the server again immediately
    with the new daemons installed.</li>
<li>The most important change is that index file upgrades are
    no longer automatic.  This avoids the IO storm caused by
    upgrades from 2.3 to 2.4.  Even if you are upgrading from
    Cyrus 2.2, it won't cause an IO storm any more.<br/>
    Instead, you need to run <tt>reconstruct -V max</tt> to
    upgrade each mailbox in turn.  This will upgrade all
    mailboxes to the current minor version 13.  This can
    be safely done while the server is running.</li>
<li>Older version mailboxes will continue to work "forever",
    though newer features like annotation quotas will fail,
    since there's no space in the mailbox header to store them.<br/>
    There may be slightly inconsistent search results until you upgrade.
    The cyrus.cache format in 2.3 and earlier ran words together
    in cache, so searches won't obey word boundaries like they
    do in 2.4+</li>
<li>If you were running Cyrus 2.3.x with expunge_mode: delayed,
    then the contents of the cyrus.expunge file will be removed
    the first time the mailbox is opened, and the mailbox will
    act as if expunge_mode: immediate was set until it is upgraded.
    This is because version 2.3 mailboxes used the cyrus.expunge
    file, and it's not worth the complexity to try to recreate
    that file.</li>
<li>After all mailboxes are upgraded, you should run <tt>quota -f</tt>
    to make sure all the message and folder count quotas are correct.
    Cyrus 2.5 supports new quota types, and the counts need to be
    calculated.</li>
<li>Many configuration options have changed and new features
    have been added, read the release notes.</li>
<li>Mailboxes.db and quota internal formats have changed.
<li>Just go read the release notes already:
    <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>

<h2>Upgrading from 2.4.17-caldav-beta10 or earlier</h2>
<ul>
<li>The schema used for the CalDAV database has changed. ALL sites
    MUST run the <tt>dav_reconstruct</tt> utility for each of their
    CalDAV users.</li>
</ul>

<h2>Upgrading from 2.4.17-caldav-beta9 or earlier</h2>
<ul>
<li>The time span calculations for recurring events in which the
    component containing the RRULE is not the first component have
    been fixed.  We recommend ALL sites run
    the <tt>dav_reconstruct</tt> utility for each of their CalDAV
    users.</li>
</ul>

<h2>Upgrading from 2.4.17-caldav-beta6 or earlier</h2>
<ul>
<li>The time span calculations for various VCALENDAR components,
    especially VTODO (tasks), have been fixed.  We recommend ALL sites
    run the <tt>dav_reconstruct</tt> utility for each of their CalDAV
    users.</li>
</ul>

<h2>Upgrading from 2.4.12</h2>
<ul>
<li>some LOG_DEBUG level messages are no longer created by
    default in the duplicate delivery system, so you won't
    see them in syslog any more</li>
<li>mailboxes in the DELETED. heirarchy are now always
    suppressed for non-admin users, even if delayed delete
    is not enabled (see Bug #3604).  If you happen to be
    using this namespace at your site for something else,
    you're crazy - but you can set "deletedprefix" in
    imapd.conf to an invalid value (e.g. '-') if you
    need.</li>
</ul>

<h2>Upgrading from 2.4.11</h2>
<ul>
<li>To support bug-interoperability with older versions of Cyrus,
    the quota command now supports "-1" as a synonym for
    unlimited storage</li>
</ul>

<h2>Upgrading from 2.4.10</h2>
<ul>
<li>Duplicate database formats have changed, so any duplicate or
    vacation data will be lost - meaning that vacation responses
    will be sent again, and duplicates just across the upgrade
    time will both get delivered.</li>
</ul>


<h2>Upgrading from 2.4.9</h2>
<ul>
<li>quota -f now works correctly.  If you are upgrading from earlier
    than 2.4.9 we recommend that you run quota -f to ensure that all
    quotas are now correct.  There is a slight race condition in the
    quota command, so it's safest to run with the server shut down,
    but this has always existed.</li>
<li>On the topic of quota -f, the documentation has been updated to
    make it quite clear that you need to give "complete" prefixes if
    using quotalegacy, as it doesn't implement quite the same semantics
    as other databases.  If you run 'quota -f a' and you have domains
    starting with 'a', you will be quite sad at the results.  So don't
    do that.  Running quota -f with no argument, or with a full domain
    or full user specification is perfectly safe.</li>
</ul>

<h2>Upgrading from 2.4.8</h2>
<ul>
<li>CYRUS_PREFIX environemnt varabile.  If you have an environment
    variable "CYRUS_PREFIX" then config files will be searched for
    in there first, so for example the file /var/cyrus/etc/imapd.conf
    will override /etc/imapd.conf if your CYRUS_PREFIX is /var/cyrus.
    This is to make things easier for sites with multiple installs
    on a single machine.  You will want to check that there aren't
    unexpected files in those locations when upgrading.</li>
<li>New config options: *_db_path allow moving individual DB files
    to different partitions - for example you may want to put the
    deliver.db onto tmpfs to improve performance.</li>
<li>KNOWN BUG: quota -f can double ALL quota usage values for all
    users.  This is particularly bad because of the bug fixed in
    this release where quotaroots were not correctly updated on
    folder rename.  <b>Recommended workaround:</b> run quota -f
    twice.</li>
</ul>


<h2>Upgrading from 2.4.7</h2>
<ul>
<li>New config option: <tt>proc_path</tt> allows setting the
  path to the proc directory onto tmpfs more easily</li>
</ul>

<h2>Upgrading from 2.4.6</h2>
<ul>
<li>New config option: <tt>failedloginpause</tt> allows you to
  change the pause after a failed login from the existing default
  of 3 seconds</li>
<li>On Solaris: now getpassphrase is used, so passwords longer
  than 8 characters will work with management tools</li>
<li>$confdir/proc now gets created automatically if it doesn't
  exist, which may impact init script design</li>
<li>If you have damaged mailboxes that weren't previously
  fixable, a reconstruct of those mailboxes may be advised</li>
</ul>

<h2>Upgrading from 2.4.5</h2>
<ul>
<li>New config option: <tt>suppress_capabilities</tt>, which
  takes a space separated list of capabilities which will NOT
  be given in any imap capability response.  This can be used
  on frontends to not display capabilities that older backends
  don't have, so clients don't get confused</li>
</ul>

<h2>Upgrading from 2.4.4</h2>
<ul>
<li>sync_client no longer forks two process - it just pre-forks
  a single process in rolling replication mode and uses it
  "forever".  This is to avoid the bug where it used to open
  the BDB environment once before forking, then close it in
  every child, causing the reference count to go negative.
  This also means you can start it without '-o' and still
  have the master start without the replica already running.</li>
</ul>

<h2>Upgrading from 2.4.3</h2>
<ul>
<li>Actually, it's more upgrading directly to here from 2.3.x or
    older.  ALL upgrades from previous versions now incur a full
    re-parse of all messages, which may take a while.  In
    exchange you get reliable upgrades though, and guaranteed
    still-searchable cyrus.cache records.</li>
</ul>

<h2>Upgrading from 2.4.2</h2>
<ul>
<li>The AFS ptloader configure options have changed.  If you were
    previously specifying --with-afs when you built, you'll now
    want to use --enable-afs instead.  Additionally, you may
    now specify --with-afs-libdir and --with-afs-incdir to
    facilitate finding the AFS libraries and header files.</li>
<li>The <i>sync_log_names</i> option has been replaced with
    <i>sync_log_channels</i> and the documentation and tools
    updated to match.  This is to use a less overloaded term
    and allow multi-channel replication to be used.</li>
<li>Cyrus 2.4.3 can now XFER mailboxes back to earlier
    version (at least as far back as Cyrus 2.2.12) in a
    murder configuration.</li>
<li>sync_client in rolling mode now only connects after
    forking, so it no longer blocks startup.  You can
    remove the '-o' option from your cyrus.conf entry
    if you want, and not have to start sync_client
    manually afterwards!</li>
</ul>

<h2>Upgrading from 2.4.0</h2>
<ul>
<li>The response to the "ID" command has changed slightly to include
    git metadata rather than CVS metadata - so your in-house tools
    expecting a particular value may need changing (very unlikely)</li>
</ul>

<h2>Upgrading from 2.3.16</h2>
<ul>
<li>There is a new index format, so downgrades are not possible without
    a reconstruct.  We recommend that you take a full backup before
    upgrading, and perform an upgrade with a small test server if
    possible to make sure everything will work for your site.</li>
<li>MURDER does work, but you can't rename a mailbox back to a previous
    version backend because the index was upgraded.</li>
<li>There is a new replication protocol, so you can't replicate between
    2.4.0 and previous versions in either direction.  You need to
    upgrade both before you can restart repliation.</li>
<li>The default value for <tt>delayed_expunge</tt> has changed to
    provide better QRESYNC and replication support.  The default
    is still pretty efficient, but you may want to change it
    to '<tt>immediate</tt>', the previous default</li>
<li>The default type for all databases is now <tt>skiplist</tt> which
    is very reliable now, all the bugs are ironed out!  Because
    ctl_cyrusdb -r automatically converts databases between known
    types, you shouldn't need to do anything, but if you want to
    keep the old defaults, you'll need to make them explicit in
    your imapd.conf as follows:
<pre>
duplicate_db: berkeley-nosync
ptscache_db: berkeley
statuscache_db: berkeley-nosync
tlscache_db: berkeley-nosync
</pre>
</li>
<li>There is a new lock folder which defaults to configdir/lock/
    and contains one zerobyte file per mailbox.  These can get
    pretty hot, and don't need to persist over reboots (they
    will be auto-created when needed) - so you may want to
    define <tt>mboxname_lockpath</tt> to be on tmpfs or ramfs
    or similar.  It certainly makes sense to clean it out on
    restart, because names will persist in there forever
    otherwise.  Even on mailbox delete these files aren't
    removed (to avoid potential race conditions)
<li>The make_md5 and make_sha1 utilities no longer exist.  If you
    want to check message file integrity, the best way is
    reconstruct -r -n -G.  This will parse every message file,
    check the sha1 against the value stored in the cyrus.index,
    and tell you about mismatches without fixing them.</li>
<li>Speaking of reconstruct, the switches have changed, as has
    the implementation.  It fixes the mailbox "in place" a lot
    more rather than creating a new mailbox, meaning that IMAP
    semantics won't be broken.  It's more likely to abort
    rather than complete if your filesystem permissions are
    wrong - fix them first!

<table border="1">
<tr><td>-k</td><td>Removed, expunge data is always kept</td></tr>
<tr><td>-g</td><td>Removed, GUIDs are always stored</td></tr>
<tr><td>-G</td><td>Changed, now means "re-parse the message".
		   If not specified, reconstruct only checks
		   the message size and assumes the rest of
		   the stuff in the index record is OK (pretty
		   safe because we do CRC32 checks on index
		   records now)</td></tr>
<tr><td>-s</td><td>Added, skip the <tt>stat</tt> call, so
		   reconstruct doesn't even check the message
		   file size - just that a file with the
		   correct name exists at all</td></tr>
<tr><td>-n</td><td>Added, don't make any changes, just report
		   what would have been done if -n wasn't
		   specified</td></tr>
</table>

If you try to use -k or -g, you will get a warning but the
reconstruct will still run.</li>
</ul>

<h2>Upgrading from 2.3.15</h2>
<ul>
<li>The SQL detection code in configure has been reworked.  Separate
  options for the include directories and lib directories have been
  added.  Previous SQL options may not work as expected.</li>
</ul>

<h2>Upgrading from 2.3.10</h2>
<ul>
<li>STARTTLS is now allowed for externally preauth'd LMTP connections.
If you don't want STARTTLS to be advertised and used by preauth'd
clients, you can set <tt>&lt;service_name&gt;_tls_cert_file:
disabled</tt> in imapd.conf.</li>
</ul>

<h2>Upgrading from 2.3.9</h2>
<ul>
<li>The method used for generating Globally Unique IDentifiers used
for replication has been changed to be the SHA1 hash of the messages.
If you wish to upgrade the existing GUIDs in particular mailbox(es) or
the entire server, perform the following steps in the listed order.
Note that is is NOT REQUIRED that existing GUIDs be upgraded.
<ol>
<li>Zero GUIDs on the replica (<tt>reconstruct -g</tt>)</li>
<li>Regenerate GUIDs on the master (<tt>reconstruct -G</tt>)</li>
<li>Regenerate GUIDs on the replica (<tt>reconstruct -G</tt>)</li>
</ol>
</ul>

<h2>Upgrading from 2.3.8</h2>
<ul>
<li> You must install and configure Cyrus SASL version 2.1.17 or later
to use Cyrus IMAP 2.3.9 and later.  You can download SASL at <a
href="http://www.cyrusimap.org/mediawiki/index.php/Downloads#SASL_Library">
http://www.cyrusimap.org/mediawiki/index.php/Downloads#SASL_Library</a>.</li>

<li>The default value of the <tt>allowplaintext</tt> option has been
changed to disabled (0).  If you need to allow cleartext passwords on
the wire, then you will have to explicitly enable the
<tt>allowplaintext</tt> option in <tt>imapd.conf</tt>.</li>
</ul>

<h2>Upgrading from 2.3.3 or later (64-bit machines)</h2>
<ul>
<li>Due to byte alignment issues in cyrus.index, all mailboxes
will have to be reconstructed.</li>
</ul>

<h2>Upgrading from 2.3.4 or 2.3.5</h2>
<ul>
<li>Any mailboxes which had messages appended/delivered/copied with a
2.3.4 service or copied with a 2.3.5 imapd <b>MUST</b> be
reconstructed in order for the new messages to be displayed by
clients.</li>
</ul>

<h2>Upgrading from 2.2.x or earlier</h2>
<ul>
<li>If you wish to use separate metadata partition(s), you <b>MUST</b>
first shut down Cyrus and then perform the following:
<ol>
<li>Set the <tt>metapartition-*</tt> and <tt>metapartition_files</tt>
options to suit your configuration.  For a full description of these
options, see the <tt>imapd.conf(5)</tt> man page.</li>
<li>Create the metadata partition directory(s) listed in the
<tt>metapartition-*</tt> option(s), setting the ownership and
permissions in same fashion as step 6 of <a
href="install-configure.html">install-configure</a>.</li>
<li>Run the <tt>tools/migrate-metadata</tt> script (as the cyrus user)
to move the metadata files listed in the
<tt>metapartition_files</tt> option from the spool partition(s) to the
new metadata partition(s).  This script may take a long time to run
depending on the number of mailboxes on the server, but presumably the
metadata partitions are located on high speed storage, so the writes
should be relatively fast.</li>
<li>Restart Cyrus.</li>
</ol>
</ul>

<h2>Upgrading from 2.2.2 or earlier</h2>
<ul>
<li>The Cyrus database backend configuration is now handled at runtime
using <tt>imapd.conf</tt> options.  If you are not using the default
backend for any of the databases, make sure that you specify the
correct backend(s) in appropriate option(s).</li>
<li>The format of the <tt>newspeer</tt> option has been changed.
The existing format will still be parsed, but the option should be
upgraded to use the new format (see <tt>imapd.conf(5)</tt> for
details).</li>
</ul>

<h2>Upgrading from 2.2.1 or earlier</h2>
<ul>
<li>The sieve bytecode format has changed again to correct an issue
with the short circuiting of the allof and anyof operators. To
upgrade existing scripts (outside of home directories), you can run the
<tt>tools/masssievec</tt> perl script included with the distribution. It
requires a path to your <tt>sievec</tt> binary.  This should also upgrade
scripts that have already been compiled to bytecode.  For example:
<pre>
masssievec /usr/src/cyrus/sieve/sievec
</pre></li>

</ul>

<h2>Upgrading from 2.2.0 or earlier</h2>

<ul>
<li>The improved directory hashing (fulldirhash) is now a runtime
configuration option.  If you are currently using this feature, then
make sure that you enable the <tt>fulldirhash</tt> option in
<tt>imapd.conf</tt>.</li>

<li>The format of mailbox index files has changed.  They are upgraded on
the fly, so you need to do nothing to upgrade.  However, to downgrade them
you will need to remove the cyrus.index files, and reconstruct the mailboxes,
otherwise the index files will be invalid.</li>

<li><tt>ctl_deliver -E</tt> has been deprecated in favor of
<tt>cyr_expire -E</tt>.  This new tool does both duplicate delivery
database pruning as well as message expunging. You should replace the
appropriate <tt>EVENTS</tt> entry in <tt>cyrus.conf</tt> with one of
those in the sample configurations in the <tt>master/conf</tt>
directory.</li>

<li>The sieve bytecode format has changed.  The new format is encoded in
network byte order, and will be transferable between architechures.  To
upgrade existing scripts (outside of home directories), you can run the
<tt>tools/masssievec</tt> perl script included with the distribution. It
requires a path to your <tt>sievec</tt> binary.  This should also upgrade
scripts that have already been compiled to bytecode.  For example:

<pre>
masssievec /usr/src/cyrus/sieve/sievec
</pre>
</ul>


<h2>Upgrading from 2.1.x or earlier</h2>

<h3>General information (ALL SITES)</h3>

<ul>
<li>The default database formats for the mailbox list and the seen
state databases has been changed to the skiplist backend.  There are
two ways of dealing with this if you have been using the defaults.

<ol>
<li>Specify <tt>--with-mboxlist-db=berkeley</tt> and
<tt>--with-seen-db=flat</tt> to <tt>configure</tt>.  This will
instruct Cyrus to continue to use the previous defaults.</li>

<li>Use the <tt>cvt_cyrusdb</tt> program to directly convert the databases.
This should be done with the server down, and with the binaries from the new
Cyrus distribution.  Change any paths that do not match your configuration.<br>
For the mailbox list, the command looks like:
<pre>
/usr/cyrus/bin/cvt_cyrusdb /var/imap/mailboxes.db berkeley /var/imap/mailboxes.db.new skiplist
mv /var/imap/mailboxes.db.new /var/imap/mailboxes.db
</pre>
Note that the use of full paths to the database files is important.  You
should also backup your old mailboxes database before moving the new one
in.<br>

For the seen state databases, the command to get them all in one fell swoop
looks like:
<pre>
find /var/imap/user -name \*.seen -exec /usr/cyrus/bin/cvt_cyrusdb \{\} flat \{\}.new skiplist \; -exec mv \{\}.new \{\} \;
</pre>

The slashes are important for shell escaping.  Again, you should back
up the contents of your <tt>/var/imap/user</tt> directory before
executing this command. These commands may take some time to complete,
especially if your databases are large.

</li></ol>

We believe that skiplist offers considerable performance advantages
for these two databases over the previous defaults.  </li>

<li>Sieve scripts are now compiled into bytecode.  The program
<tt>sievec</tt> is provided to do this process manually (timsieved will
compile submitted sieve scripts as they are uploaded).  To upgrade
existing scripts (outside of home directories), you can run the
<tt>tools/masssievec</tt> perl script included with the distribution.
It requires a path to your <tt>sievec</tt> binary.  For example:

<pre>
masssievec /usr/src/cyrus/sieve/sievec
</pre>

Note that this will fail for scripts that use the &quot;envelope&quot;
extention but do not require it.  Cyrus 2.1's <tt>timsieved</tt> did
not do appropriate checking that the optional envelope test was
required before it was used.
</li>

<li> Configuration subsystem changes:

<ul>
 <li>The tls_[service]_* configuration options have been removed.  Now
 use [servicename]_tls_*, where servicename is the service identifier
 from <tt>cyrus.conf</tt> for that particular process.</li>

 <li>The <tt>admins</tt> and <tt>lmtp_admins</tt> configuration
 options no longer union. Per-service options completely override
 the default value when they are specified.</li>

 <li><tt>lmtp_allowplaintext</tt> 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>
</ul>

<h3>Specialized information (Murder, AFS, etc.)</h3>

<ul>
<li>The IMAP IDLE command is now supported by proxyd and is controlled
by the <tt>imapidlepoll</tt> option, which is enabled by default (60
seconds).  To disable IMAP IDLE in proxyd, set <tt>imapidlepoll</tt>
to 0.</li>

<li>User moves via RENAME and XFER are now controlled by the
<tt>allowusermoves</tt> option, which defaults to off.</li>

<li>If you use <tt>ptloader</tt>, it now runs as a regular cyrus
service.  This means that you will need master to acquire and maintain
AFS tokens for it.  You will also need to create the ptclient
directory under your imap configdirectory, to hold the PTS cache (now
a full-fledged cyrusdb) and UNIX socket.  In <tt>cyrus.conf</tt>,
ptloader should be setup to listen on
<i>&lt;configdirectory&gt;</i>/ptclient/ptsock. See the
<tt>master/test/cmu-backend.conf</tt> example configuration file.</li>

<li>Also, <tt>ptloader</tt> has been given a generic interface. You
should now specify "<tt>--with-auth=pts</tt>" (instead of
"<tt>--with-auth=krb_pts</tt>") to <tt>configure</tt>.  There is also
a <tt>--with-pts=</tt> <tt>configure</tt> option that defaults to
<tt>afskrb</tt> (Kerberos Canonicalization, AFS PTS Groups).  There is
also an experimental ldap module.  Note also that if <tt>ptloader</tt>
fails the lookup, authorization (and therefore authentication) will
now fail, as canonicalization is done inside of ptloader.</li>

<li>The format of sieve referrals has changed to be more consistant
with the current managesieve draft, this may cause interoperability
problems when using managesieve clients and servers from different
cyrus versions.</li>

<li>Clients that use old-style ACL commands that include the
&quot;MAILBOX&quot; directive will no longer function.
We do not know of any clients that have this problem currently.</li>

<li>Any applications that link libcyrus.a now need to link libcyrus_min.a
as well.</li>


</ul>

<h2>Upgrading from 2.1.13 or earlier</h2>
<ul>
<li>We are now more forgiving of MIME boundry headers generated by earlier
versions of eudora.  However, if you have messages already in the mailstore
that you want to fix you will need to reconstruct the affected mailboxes
to regenerate the cached bodystructure data to take this into account.
Nothing needs to be done for new messages to be treated in this way.</li>
</ul>

<h2>Upgrading from 2.1.12 or earlier</h2>
<ul>
<li>timsieved was corrected to behave properly in the altnamespace configuration.
However, this means that it was previously looking for sieve scripts in
&quot;user.name&quot; format instead of the (correct) &quot;user^name&quot;
format.  A sample script to do this (which should be run in the top level of
the sieve directory) is in <tt>tools/convert-sieve.pl</tt>.  Note that this
is only needed if you are running with altnamespace turned on.</li>
</ul>

<h2>Upgrading from 2.1.3 or earlier</h2>
<ul>
<li>If you use notifications (previously <tt>notify_zephyr</tt> or
<tt>notify_unix</tt>) this functionality has been seperated out to
<tt>notifyd</tt>.  See the <tt>notifyd</tt> manpage and example
entries in <tt>master/conf</tt>.</li>

</ul>

<h2>Upgrading from 2.1.2 or earlier</h2>

<ul>
<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>
</ul>

<h2>Upgrading from 2.0.16 or earlier</h2>

<ul>
<li> You must install and configure Cyrus SASL version 2 to use Cyrus
IMAP 2.1 and later.  You can download SASL at <a
href="http://www.cyrusimap.org/mediawiki/index.php/Downloads#SASL_Library">
http://www.cyrusimap.org/mediawiki/index.php/Downloads#SASL_Library</a>.

<li> If you use <tt>timsieved</tt> to manage Sieve scripts, and have
enabled the alternate namespace and/or the Unix hierarchy separator,
run the script "<tt>tools/translatesieve</tt>".  This script will
translate the folder names in <tt>fileinto</tt> actions.

<li> Cyrus now uses the service name "sieve" instead of "imap" for the
SASL profile of <tt>timsieved</tt>. If you use <tt>timsieved</tt> to
manage Sieve scripts, be sure to update your password checking
mechanism appropriately,

<li> If you have enabled the improved directory hashing scheme, run
the script "<tt>tools/rehash full</tt>".  This script will rehash your
existing directories.

<li> The hashed deliver databases (used for duplicate delivery suppression
and Sieve) have been merged into a single <tt>deliver.db</tt> database.
You can safely remove the entire <tt>/var/imap/deliverdb</tt>
directory structure after shutting down the server.

<li>All of the Cyrus databases have been unified under a single BDB
environment.  A new <tt>ctl_cyrusdb</tt> tool is now used for database
recovery and checkpointing instead of <tt>ctl_mboxlist</tt> and
<tt>ctl_deliver</tt>.  You should replace the appropriate <tt>START</tt> and
<tt>EVENTS</tt> entries in <tt>cyrus.conf</tt> with those in the
sample configurations in the <tt>master/conf</tt> directory.

<li> Cyrus now caches SSL/TLS sessions in an external database. If you
have support for SSL/TLS, and haven't disabled session caching (see
<tt>imapd.conf(5)</tt>), you should add a line like the following to
the <tt>EVENTS</tt> section of <tt>cyrus.conf</tt> to prune expired
sessions from the database:

<pre><kbd>   # this is only necessary if caching TLS sessions
   tlsprune      cmd="tls_prune" period=1440
</kbd></pre>
</ul>

<h2>Upgrading from 2.0.6, 2.0.7, 2.0.8, or 2.0.9 or earlier</h2>

<ul>
<li> If you use <tt>timsieved</tt> to manage Sieve scripts, run the
script "<tt>tools/upgradesieve</tt>".  <tt>timsieved</tt> now uses
symlinks instead of hard links.
</ul>

<h2>Upgrading from a previous 2.0 version to 2.0.6</h2>

<b>Warning:</b> You do not need to follow these instructions if you're
upgrading from version 1.6.

<ul>
<li>You can now pick whether to use Berkeley db to store seen state,
the subscription files, and the mailboxes file or a flat text file, at
compile time only.  (Look in <tt>imap/seen_db.c</tt> and
<tt>imap/mboxlist.h</tt>.)

<li>The format of the mailboxes file and seen state has changed.  It is
not possible to preserve seen state, but upgrade the mailboxes file as
follows:
<ol>
<li> Run <tt>ctl_mboxlist -d &gt; mboxlist.temp</tt> to dump existing
mailboxes.

<li> Remove old database files: <tt>rm mailboxes.db db/*
user/*/*.seen</tt>

<li>With the new version of ctl_mboxlist, run <tt>ctl_mboxlist -u &lt;
mboxlist.temp</tt>.
</ol>
</ul>

<h2>Upgrading from 1.6.22 or 1.6.24</h2>

<b>Warning:</b> Cyrus imapd 2.0 will automatically convert on-disk
file formats as the server is used.  <b>It is not possible to run 1.6
after 2.0 has been used on a mail spool without reconstructing every
mailbox.</b>

<ul>
<li>Create some extra directories and remove the duplicate delivery
database:
<pre>
<kbd>   mkdir /var/imap/db
   mkdir /var/imap/socket
   chown cyrus /var/imap/db /var/imap/socket
   rm -rf /var/imap/deliverdb
</kbd></pre>

<li>Convert mailboxes file to Berkeley DB:
<pre>
<kbd>   su cyrus
   cd /var/imap
   ctl_mboxlist -u &lt; mailboxes
   ctl_cyrusdb -c
</kbd></pre>

Please keep a backup of your mailboxes file.  You can dump an
old-style mailboxes file by using <tt>ctl_mboxlist -d</tt>.

<li>remove "<tt>/etc/inetd.conf</tt>" entries. The <tt>imap</tt> and
<tt>popd3d</tt> lines need to be removed from <tt>/etc/inetd.conf</tt>
and inetd needs to be restarted.

<li>master process configuration: You'll need to configure the master
process Cyrus process and ensure that it starts on boot.  see <a
href="install-configure.html#master">this section</a> of the
configuration instructions.

<li>MTA configuration. You will have to reconfigure your MTA to speak
to lmtpd.  See <a href="install-configure.html#mta">this section</a> of
the configuration document.

<li>cyrus.seen conversion. The cyrus.seen file will be automatically
upgraded as users read mail.  After some time, you might want to
delete the cyrus.seen file in each mailbox; it is superceded by the
user/joe.seen file.

<li>cyrus.index conversion.  The cyrus.index file will be
automatically upgraded the first time each mailbox is SELECTed.

<li>Netnews conversion. The netnews programs are no longer built. If
you are using netnews, you will need to apply the diff in the
<tt>netnews/</tt> directory to INN or see if INN is now distributing
those changes.  You will also want to run <tt>remotepurge</tt> on a
regular basis to purge old netnews posts.

</ul>


<h2>Upgrading from 1.6.13</h2>
<ul>
<li> Upgrading from the Cyrus IMAP server version 1.6.13 or earlier:
if you use Sieve, you should run the "<tt>tools/upgradesieve</tt>"
script, as the format of the "<tt>/usr/sieve</tt>" directory has
changed slightly.

<p>timsieved, included in this release, will handle maintenance of Sieve
scripts.

<li> Upgrading from the Cyrus IMAP server version 1.6.10 or earlier:
if you export news via the IMAP server, you'll have to change your
"<tt>newsfeeds</tt>" file to contain
<pre>collectnews!:*:Tf,WR:collectnews</pre>  The format of the
input to collectnews has changed.

<p>Duplicate delivery suppression is now required for Sieve.

<li> Upgrading from the Cyrus IMAP server version 1.6.1 or earlier
(including 1.5.x!): the quota and user directories are now hashed by
the first character of the username.  This is to reduce the number of
entries in any given directory. It doesn't do a great job (and in some
cases it will do a really poor job) but as a quick hack it shouldn't
make things worse.  Optionally, the data partitions can also be hashed
by enabling the "hashimapspool" option.

<p>You must hash your directories using the "<tt>dohash</tt>" script
in the tools subdirectory.  (If you want to hash your mail spool, be
sure to set "hashimapspool" before running "<tt>dohash</tt>".)  This
must be run as the Cyrus user. Be sure to stop mail service while
converting. Doing this in single user mode is probably the safest.

</ul>

<h2>Upgrading from 1.5</h2>
<ul>
<li> Upgrading from the Cyrus IMAP server version 1.5 or earlier:
libsasl is now required.  Configuring SASL to work may be a chore,
especially if you use shadow passwords.

<li> An ANSI C compiler is now required.  gcc should work fine and can
be acquired from <a href="http://www.gnu.org/software/gcc/gcc.html">
http://www.gnu.org/software/gcc/gcc.html</a>.

<li> Make sure to read the upgrading instructions under 1.6 above.

<li> Upgrading from 1.5.14 or earlier requires deleting the delivered
database.  Remove the file delivered.db in the configdirectory and make a
directory called "deliverdb" in the configdirectory.  This may cause some
duplicates to get through.

<li> Upgrading from 1.5.14 or earlier requires removing the PTS cache
database (if the AFS PTS group support is used, which is not the
default).  The PTS cache is in /var/ptclient/ptscache.db, and you
should remove it. This is because the format for the PTS cache for
IMSP has changed.  If you use AFS ACLs, IMSPd, and IMAPd on the same
machine, make sure you have version 1.5a5 of the IMSP server for this
version of the IMAP server.  (If you don't have IMSP, or AFS, don't
worry about it.)

</ul>

<HR><P>
last modified: $Date: 2010/01/06 17:01:29 $
</BODY></HTML>