cyrus mupdate master and frontend synchronization problem

Vladimir Zorin vladimir at urtext.ru
Thu Jun 26 12:14:50 EDT 2008


Hi, folks!

I have some strange problem with cyrus-mupdate.
I have three servers, all running cyrus-imapd v2.3.12p2 on FreeBSD 7.0
(though I've tested the same configuration with cyrus v2.2.13 and got
the same behaviour):

The first one, 192.168.7.1, which is configured to be the mupdate
master, 
the second one, 192.168.7.2 - configured to be a backend, 
and the third one, 192.168.7.3 - a frontend

Everything works quite fine except for the one very annoying thing -
mupdate frontend does not synchronize it's mailboxes database with
mupdate master in real-time. It does synchronize it on start, but when
somebody creates a folders in their mailbox, frontend's mailboxes
database does not reflect this change, until cyrus restarted.

E.g.
on the frontend machine:

----------
#telnet 192.168.7.3 143
Connected to cyr3.poligon.pht.
a01 login vlad vlad
a01 OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID
MUPDATE=mupdate://192.168.7.1/ LOGINDISABLED ACL RIGHTS=kxte QUOTA
MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN
MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT
THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE SCAN IDLE URLAUTH]
User logged in
a02 list "" "*"
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasNoChildren) "." "INBOX.Mail"
* LIST (\HasNoChildren) "." "INBOX.Sent"
* LIST (\HasNoChildren) "." "INBOX.Trash"
a02 OK Completed (0.000 secs 5 calls)
a03 create INBOX.Foo
a03 OK Completed
a04 list "" "*"
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasNoChildren) "." "INBOX.Mail"
* LIST (\HasNoChildren) "." "INBOX.Sent"
* LIST (\HasNoChildren) "." "INBOX.Trash"
a04 OK Completed (0.000 secs 5 calls)
a05 logout
-------------

but the folder was actually created and does exist, I can see it on the
backend:
---------------------------
 #telnet 192.168.7.2 143
Trying 192.168.7.2...
Connected to cyr2.poligon.pht.
Escape character is '^]'.
* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID
MUPDATE=mupdate://192.168.7.1/ AUTH=PLAIN AUTH=DIGEST-MD5 AUTH=CRAM-MD5
SASL-IR] cyr2.poligon.pht Cyrus IMAP Murder v2.3.12p2 server ready
a01 login vlad vlad
a01 OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID
MUPDATE=mupdate://192.168.7.1/ LOGINDISABLED ACL RIGHTS=kxte QUOTA
MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN
MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT
THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE SCAN IDLE URLAUTH]
User logged in
a02 list "" "*"
* LIST (\HasChildren) "." "INBOX"
* LIST (\HasNoChildren) "." "INBOX.Foo"
* LIST (\HasNoChildren) "." "INBOX.Mail"
* LIST (\HasNoChildren) "." "INBOX.Sent"
* LIST (\HasNoChildren) "." "INBOX.Trash"
a02 OK Completed (0.000 secs 6 calls)
------------------------

Only after restarting cyrus on the frontend I get the same response from
LIST "" "*" on the frontend, as on the backend. 

I've done a lot of googling but only managed to find that some folks
have faced the same problem in the past and wrote about it, but, alas,
there was no reply nor any solution.

I guess it must be me being extremely silly and missing something very
simple, but I can't find the answer. 

Anyone, any clues? 

I'm posting my cyrus configs below:

MUPDATE MASTER server config, 192.168.7.1
--------------------------cyrus.conf--------------------
START {
  recover       cmd="ctl_cyrusdb -r"
}

SERVICES {
  mupdate       cmd="mupdate -m" listen="192.168.7.1:3905" prefork=5
}

EVENTS {
  checkpoint    cmd="ctl_cyrusdb -c" period=40
  delprune      cmd="cyr_expire -E 3" at=0400
  tlsprune      cmd="tls_prune" at=0400
}
-------------------------------END--------------------
----------------------------imapd.conf------------------
configdirectory:   /var/imap
defaultpartition:  fictive
partition-fictive: /var/imap/spool

admins: cyrus frontend1 backend1 backend2 murder  

allowusermoves: 1
allowplaintext: 1

reject8bit: no

tlscache_db: skiplist

sasl_pwcheck_method: auxprop
sasl_mech_list: cram-md5 digest-md5 plain starttls
---------------------------END--------------------------

MUPDATE BACKEND server config, 192.168.7.2
-----------------------cyrus.conf------------------------
START {
  recover       cmd="ctl_cyrusdb -r"
  mupdatepush   cmd="ctl_mboxlist -m"
}

SERVICES {
  imap          cmd="imapd" listen="192.168.7.2:imap" prefork=2 
  pop3          cmd="pop3d" listen="192.168.7.2:pop3" prefork=2
  lmtp          cmd="lmtpd" listen="192.168.7.2:lmtp" prefork=2
  lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=2
}

EVENTS {
  checkpoint    cmd="ctl_cyrusdb -c" period=40
  delprune      cmd="ctl_deliver -E 3" at=0400
}
------------------------------END-------------------------
-------------------------imapd.conf----------------------------
configdirectory: /var/imap
defaultpartition: default
partition-default: /var/imap/spool

allowplaintext: yes
allowusermoves: 1

admins: cyrus murder 

proxyservers: murder
reject8bit: no

sasl_pwcheck_method: auxprop
sasl_auto_transition: no
sasl_mech_list: cram-md5 digest-md5 plain starttls

mupdate_server:   192.168.7.1
mupdate_port:     3905
mupdate_username: backend1
mupdate_authname: backend1
mupdate_password: backend1pass

proxy_authname: murder
proxy_password: murderpass
-----------------------------END--------------------------

MUPDATE FRONTEND server config, 192.168.7.3
---------------------cyrus.conf---------------------------
START {
  recover       cmd="ctl_cyrusdb -r"
}

SERVICES {
  mupdate       cmd="/usr/local/cyrus/bin/mupdate" listen=3905 prefork=2
  imap          cmd="proxyd" listen="imap" prefork=1
  pop3          cmd="pop3d"  listen="pop3" prefork=1
}

EVENTS {
  checkpoint    cmd="ctl_cyrusdb -c" period=40
  delprune      cmd="cyr_expire -E 3" at=0400
  tlsprune      cmd="tls_prune" at=0400
}
----------------------------END--------------------------
-----------------------imapd.conf--------------------
configdirectory: /var/imap
defaultpartition: default
partition-default: /var/imap/spool

admins: cyrus backend1 murder

mupdate_server: 192.168.7.1
mupdate_port: 3905
mupdate_retry_delay: 5
mupdate_authname: frontend1
mupdate_password: frontend1pass

proxy_authname:     murder
proxy_password:     murderpass

allowplaintext: 1
allowusermoves: 1

reject8bit: no

sasl_auto_transition: no
sasl_pwcheck_method: auxprop
sasl_mech_list: cram-md5 digest-md5 plain starttls
-------------------------END---------------------------

-----
Best regards, Vladimir Zorin




More information about the Info-cyrus mailing list