cyrus-murder: backend and frontend/proxy on the same machine?

Alexey Lobanov A.Lobanov at cro-rct.ru
Tue Feb 12 10:12:44 EST 2008


Hello all.

I must conclude that all "combined" configurations of Cyrus Murder
servers do not work. Or, more exactly, I did not manage to make them
work despite of many hours of tests and meditation.

"frontend+backend" combination (aka "config: unified") seems to be
completely broken. It is really unable to distinguish local and remote
mailboxes in the single combined database and pushes everything back to
master, with endless database growth. I wrote about it few weeks ago in
same thread.

"frontend+master" combination behaves much better. Nearly all things
work fine: folder access, folder renaming, sieve access. The only broken
thing is subfolder mailbox creation; any user-level "Create" command at
a frontend is not forwarded to a backend but is denied instantly with
"Invalid partition" diagnostics. Basic debugging shows that the
partition is really invalid because proxyd tries to interpret a
networked "server!partition" path as a local partition name and to find
this name in local imapd.conf.

Feb 11 12:58:05 mail imap[18506]: Partition pharmacy.office.rct-int!default

Feb 11 12:58:05 mail imap[18506]: IOERROR: creating directory (null):
Permission denied

So, it looks like that the only working solution is based on "-C" option
and virtual interfaces or other tricks. If we really need to combine
functions in one box, we should use different "imapd*.conf" and
different "configdirectory:" for all three instances - frontend, backend
and master. After that everything works fine.

My setup:

Master+Frontend: two indepentent mupdate instances, one imapd.

SERVICES {
mupdate_master     cmd="/usr/local/cyrus/bin/mupdate -m -C
/etc/imap_master.conf" listen=10.0.0.2:3905 prefork=1
mupdate       cmd="/usr/local/cyrus/bin/mupdate -C
/etc/imap_frontend.conf" listen=10.0.0.4:3905 prefork=1
imap            cmd="/usr/local/cyrus/bin/proxyd -s -C
/etc/imap_frontend.conf" listen="imaps" prefork=2
sieve           cmd="timsieved -C /etc/imap_frontend.conf"
listen="10.0.0.4:sieve" prefork=0 maxchild=100
}

Frontend+backend: two independent imapd instances, one mupdate.

SERVICES {
        imap            cmd="imapd -p 2" listen="10.0.4.1:imap"
prefork=3 maxchild=200
        imaps           cmd="proxyd -s -C /etc/imap_frontend.conf"
listen="imaps" prefork=1 maxchild=100
        mupdate       cmd="mupdate -C /etc/imap_frontend.conf"
listen=10.0.4.1:3905 prefork=1
        lmtp            cmd="lmtpd -a" listen="10.0.4.1:24" prefork=0
maxchild=20
}


Tested with Thunderbird and Squirrelmail clients.

NB: In this specific setup lmtp does not use murder capabilities because
MTA always knows exact backend from LDAP directory. And the whole
purpose of Murder is to join shared folders from different servers and
locations into one list in one IMAP account. No any "load balance", etc.

Alexey




More information about the Info-cyrus mailing list