Hi, on 09.02.2007 10:40 Mirosław Jaworski said the following: > Anyone care to share working unified murder configs? > > I am also sure that many would appreciate separate unified murder pages > in cyrus' wiki. > > Sure, here's a working config, deployed in a production system. Since I haven't written a final administration manual, these informations may be incomplete. If they aren't sufficient, send me a mail and I'll complete what's missing.
Environment: There are 3 servers (not couting the smtp relays or the LDAP servers): * 2 imap servers: imap1 & imap2 * 1 murder server: murder1 All 3 servers run *Cyrus Imapd 2.3.7*, home made, yet to become official, Debian packages, with some patches. You can check the source code here if you want to see what patches have been applied : http://www.pragmatic-source.com/Cyrus-Imapd-2-3-7-for-the-Linux *Note:* All cyrus commands must be run under the "cyrus" user, not "root"! SASL settings All 3 server have SASL libraries & tools installed, and an /etc/sasldb2 authentification file. *Note:* Take care of using *matching passwords* where necessary. For example: the /etc/sasldb2 file on "murder1" has got an "[EMAIL PROTECTED]" account. The same "imap1" user is defined in the /etc/cyrus.conf file on server "imap1", with the same password. Configuration on "murder1" *Note*: I stripped some unnecessary lines, comments and white lines from the sample config files. Don't use these configuration files as is! SASL file /etc/sasldb2 The auth file contains these users (with a password of course): murder1# sasldblistusers2 [EMAIL PROTECTED]: userPassword [EMAIL PROTECTED]: userPassword [EMAIL PROTECTED]: userPassword File /etc/cyrus.conf: START { recover cmd="/usr/sbin/ctl_cyrusdb -r" } SERVICES { # (mupdate master, only one in the entire cluster) mupdate cmd="mupdate -m" listen=3905 prefork=1 proto="tcp4" } EVENTS { checkpoint cmd="/usr/sbin/ctl_cyrusdb -c" period=30 } File /etc/imapd.conf: configdirectory: /var/lib/cyrus defaultpartition: default partition-default: /var/spool/cyrus/mail servername: mydomain.com admins: cyrus mupdate_admins: imap1 imap2 allowplaintext: yes sasl_pwcheck_method: auxprop sasl_auxprop_plugin: sasldb sasl_auto_transition: no Nothing else is configured on "murder1". Configuration on "imap1" and "imap2" Configuration is identical on these 2 servers, except from their names (substitute "imap1" with "imap2" and you'll get the 2nd server's configuration). The IMAP servers run the "saslauthd" daemon, connected to an LDAP server, but I don't document this here as it has no influence on the murder configuration. File /etc/services: Add the following line to the "/etc/service file. mupdate 3905/tcp # Cyrus Mupdate SASL file /etc/sasldb2: # sasldblistusers2 [EMAIL PROTECTED]: userPassword [EMAIL PROTECTED]: userPassword postman is used along with postfix + lmtp for mail delivery. But I won't talk about this here. File /etc/cyrus.conf: START { recover cmd="/usr/sbin/ctl_cyrusdb -r" idled cmd="idled" # this is useful on backend nodes of a Murder cluster # it causes the backend to syncronize its mailbox list with # the mupdate master upon startup mupdatepush cmd="/usr/sbin/ctl_mboxlist -m" # this is recommended if using duplicate delivery suppression # but the expiration takes more than 5 minutes on startup! # So I disabled this line ##delprune cmd="/usr/sbin/cyr_expire -E 3 -X 3" # this is recommended if caching TLS sessions tlsprune cmd="/usr/sbin/tls_prune" } SERVICES { # --- Normal cyrus spool, or Murder backends --- # add or remove based on preferences imap cmd="imapd -U 30" listen="imap" prefork=10 maxchild=250 babysit=1 maxforkrate=10 proto="tcp4" imaps cmd="imapd -s -U 30" listen="imaps" prefork=5 maxchild=250 babysit=1 maxforkrate=10 proto="tcp4" lmtp cmd="lmtpd" listen="lmtp" prefork=10 maxchild=60 babysit=1 maxforkrate=10 proto="tcp4" sieve cmd="timsieved" listen="sieve" prefork=2 maxchild=30 proto="tcp4" notify cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1 # --- Murder frontends ------------------------- # mupdate database service - must prefork at least 1 # (mupdate slaves) mupdate cmd="mupdate" listen=3905 prefork=1 proto="tcp4" } EVENTS { checkpoint cmd="/usr/sbin/ctl_cyrusdb -c" period=30 delprune cmd="/usr/sbin/cyr_expire -E 3 -X 3" at=0201 tlsprune cmd="/usr/sbin/tls_prune" at=0201 squatter_a cmd="/usr/sbin/squatter" at=0317 } File /etc/imapd.conf: As I said before, this is an incomplete example. configdirectory: /var/lib/cyrus defaultpartition: default partition-default: /var/spool/cyrus/mail admins: cyrus lmtp_admins: cyrus postman postuser: cyrus allowanonymouslogin: no allowplaintext: yes allowapop: no sasl_minimum_layer: 0 loginrealms: mydomain.com sasl_pwcheck_method: auxprop saslauthd sasl_auxprop_plugin: sasldb sasl_auto_transition: no mupdate_server: murder1.mydomain.com mupdate_config: unified mupdate_port: 3905 mupdate_authname: imap1 mupdate_realm: mydomain.com mupdate_password: XXXX_HERE_IMAP1_PASSWORD mupdate_worker_maxspare: 5 mupdate_worker_minspare: 1 mupdate_worker_start: 2 proxy_password: XXXX_HERE_CYRUS_PASSWORD proxy_authname: cyrus proxyservers: cyrus Bootstrapping the whole thing Actually I don't remember exactly how I bootstrapped the system :P These steps are approximative: * Monitor the syslog files on all servers to detect errors or warnings. In my environment everything is logged in /var/log/mail.log. * Start the cyrus services on the "murder1" server. Check that the following services are running: o cyrmaster -d o mupdate -m * Go on "imap1" (resp. "imap2") * Using "cyradm" create some local users: o cyradm -u cyrus localhost o cyradm> createmailbox user.johndoe o cyradm> etc. * Launch "sudo -u cyrus ctl_mboxlist -m" manually. Check the messages and the log file to see if everything went fine. * Repeat previous operations (user creation & ctl_mboxlist -m) on server "imap2" Now run "sudo -u cyrus ctl_mboxlist -d" on all 3 servers and compare the results. At least "murder1" should have a complete list of all folders. If everything worked fine: * Start the whole cyrus services on both imap servers o /etc/init.d/cyrus start * Check the log files * Enjoy! Now "sudo -u cyrus ctl_mboxlist -d" should always return a complete list of all folders, regardless of the server it is run on. I you open an IMAP connection with "imap1" or "imap2" you should be able to access any folder (depending on your authorizations of course). If there's anything wrong or incomplete in my mail, please tell me and I'll try to correct it. Regards, -- Farzad FARID <[EMAIL PROTECTED]> Architecte Open Source / Associé Pragmatic Source - http://www.pragmatic-source.com/ Tel : +33 9 53 19 21 90 / Mob : +33 6 03 70 65 46
---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html