Cyrus Murder with different Cyrus IMAP Server versions

Andrew Morgan morgan at
Wed Mar 2 16:28:52 EST 2016

On Wed, 2 Mar 2016, Jack Snodgrass via Info-cyrus wrote:

> I have a older Cyrus 2.2 version setup and running in production.
> I want to move to a newer Cyrus 2.4 system with minimal downtime.
> The goal is 1) limit down time and 2) keep the SAME ip address for the users 
> imap configs.
> I can convert my existing Cyrus 2.2 ( Debian v6 ) to Cyrus 2.4 ( Debian v8 ) 
> but will be down around 8 ( at least ) for the two debian upgrades and 
> converting 200gig of Cyrus 2.2 mail to Cyrus 2.4 - indexes and what not.
> I was thinking.. maybe another approach would be to setup Cyrus Murder ( 2.2 
> ) on my existing Cyrus 2.2 box and connect it up with a new Cyrus 2.4 server 
> ( on a new Debian v8 box ) and just move mail accounts over one at a time 
> until all of the mail was off of the old box.  Once all of the mail was off 
> of the old Cyrus 2.2 box, I could then upgrade that to debian v8 and Cyrus 
> 2.4 and then have 2 systems that the mail could be split between.
> Can I run a Murder 2.2 server and have it talk with a Cyrus 2.4 IMAP box or 
> do the versions have to be the same?

In a Cyrus Murder, you want the frontend server to be upgraded last.  If a 
newer frontend is used, it will issue newer IMAP commands that the older 
backend doesn't support.  When you are upgrading an existing Murder 
cluster, you upgrade in this order: mupdate master, backends, then 

Murder does allow you to (mostly) transparently move mailboxes between 
backends.  I have upgraded many times by simply moving the mailboxes to a 
new backend server with newer versions of the OS and Cyrus.  However, 
you'll need to create 2 new hosts - a frontend and mupdate master.  Then 
you'll need to move the DNS CNAME from the existing 2.2 server to the 

A Murder is a bit complicated (don't forget about mail delivery too!), so 
let me suggest an alternative that keeps the downtime short.

Build a new server with Debian 8.  I'd probably install Cyrus v2.5.latest 
by hand.  Compiling Cyrus is very easy on Debian.  Cyrus v2.5 has a major 
advantage over v2.4 - you can run a script to upgrade the mailbox format 
instead of waiting for the user to open the mailbox.  See the release 
notes for upgrade instructions:

Anyways, build the new server with Debian and whatever version of Cyrus 
makes you comfortable.  Then, weeks before you plan to make the cutover, 
use rsync to copy to the mail from the old server to the new server.  Of 
course, the first run will take a long time to copy 200GB.  Successive 
rsyncs will take less time as the deltas are smaller.  In the week before 
the scheduled outage, run rsync every night.

During your outage window, stop Cyrus on the old server, run a final 
rsync, then swap IP addresses and/or DNS names, and start Cyrus on the new 

There are a couple advantages to this approach.  You'll be able to test 
how the new server works with your actual mail.  You can make 
configuration changes if needed.  You can also time how long the rsync 
will take, so you know how much time to schedule for the outage.  Even if 
there isn't much data to rsync on the final pass, it can still take a long 
time to calculate the differences between the 2 filesystems.

Before I ran Cyrus Murder, this is how I upgraded our Cyrus server to new 


More information about the Info-cyrus mailing list