Cyrus Murder Mail Delivery
**************************

There are several alternate ways to handle mail delivery in a Cyrus
murder, which may improve performance depending on your set up and
mail volume.


Standard Way
============

In a standard set up (as suggested by the documentation) each time a
message arrives at a frontend, lmtpproxyd will contact the master
server to determine which backend the mailbox is on.

Pros:

* Most people do it this way

* Easy to set up

Cons:

* Murder master can become overloaded if you have large amount of
  incoming mail

* Mail delivery hangs if murder master is unavailable.


Query local mailboxes.db
========================

Each frontend will generally have its own copy of the mailboxes.db
file and lmtpproxyd can be set to query the localhost for the backend
of a specific mailbox.

Pros:

* Resolve mailbox location faster

* An increase in messages does not increase load on murder master

* Mail can be delivered if murder master is unavailable

Cons:

* More complicated setup

* There are currently two ways to setup lmtpproxyd to query the
  localhost: normal and alternate.

If using the alternate method, then mupdate needs to be reconfigured
to keep mail delivery going during a murder master outage. Add "-m" to
the mupdate arguments in cyrus.conf(5), restart, and mupdate will no
longer contact the murder master. Mail delivery will work. Once the
murder master has been fixed, remove "-m" so the local mupdate will
start receiving updates again. Since this involves restarting Cyrus,
we ran lmtpproxyd on its own machines (without imap/pop users)


Contact local mupdate server
============================

Mupdate is running on each frontend to receive updates from the murder
master. Lmtpproxyd can be configured to query the local mupdate
process instead of the one on the master server.

The steps are briefly outlined below

1. Create a config file for lmtpproxyd. Copy your current imapd.conf
   file and set "mupdate_server: localhost". Edit cyrus.conf and tell
   lmtpproxyd about the new config file. "cmd="lmtpproxyd -C
   /etc/lmtp.conf""

2. Make sure you can login to mupdate locally. Test with mupdatetest.
   Example: "mupdatetest -u frontend -a frontend -m PLAIN localhost"

3. Depending on how restrictive your setup is, you may have to create
   a config file for mupdate.
