> hello again. > > after a bit of playing around i've identified three problems with > virtual domains and the replication. i've managed to put little > band-aids on imapd.c and mboxname.c to get it to work but here's the big > DISCLAIMER: i know nothing about c so the fixes are probably clumsy or > just plain wrong but seem to work. > > i've included the patches but expect it's best to wait for a proper > developer to have a look as i'm not too sure of any knock on effects > they may have! my testing continues. > > rgds, > j. > > Note: this email applies to version cyrus version 2.3.1. patches at > bottom of mail. > > 1. Invalid mailbox name when sync_client attempts a "CREATE domain! > user" action. fix was to add an ! to GOODCHARS in mboxname.c. not too > sure what repercussions this have.
I don't think that's a really good way to fix this. Could you please try my fix and report how it works for you? https://bugzilla.andrew.cmu.edu/attachment.cgi?id=415&action=view For 2) and 3), does your fix also work when not using virtual domains? And, do you mind adding your patch for 2) and 3) to my bugzilla entry at https://bugzilla.andrew.cmu.edu/show_bug.cgi?id=2787 so those with a clue can later pick it and implement the correct fixes (I also know nothing about C). Regards, Simon > > 2. Creating a mailbox for a new virtual domain user fails when > sync_client attempts a "USER userid" and failing with an "IOERROR ... > Mailbox does not exist". > - imapd writes "USER userid" to the sync log not "USER > userid<at>domain" > - i think this is because imapd passes mailboxname (form: domain! > useridid) to mboxname_isusermailbox which strips off "domain!" to leave > an unqualified userid. > - sync_client attempts a USER function with, i assume, the default > domain for which the virtual domain user does not exist in... and > fails. > - unsure of any knock on affects of changing > mboxname_isusermailbox... i fixed it by taking the domain from > mailboxname and appending it to userid. > - because i don't know what i'm doing my fix leaves mailboxname in a > funny state but as far as i can see it's not used after this. > > 3. When deleting the top of a mailbox tree imapd writes "MAILBOX > domain!user.userid<at>domain" to the sync log. this fails because it is > not a valid mailbox format. my solution was to change what's written > to the sync log by stripping the "<at>domain" part off. the proper > solution, i guess, would be to fix how it got in this state in the > first place. > > patches... > > **** mboxname.c.patch > > 653c653 > < #define GOODCHARS " > +,-.0123456789:[EMAIL PROTECTED]" > --- >> #define GOODCHARS " > +,-.0123456789:[EMAIL PROTECTED]" > > > **** imapd.c.patch > > 4567a4568 >> char *domain; > 4693,4694c4694,4705 > < if ((userid = mboxname_isusermailbox(mailboxname, 1))) > < sync_log_user(userid); > --- >> if ((userid = mboxname_isusermailbox(mailboxname, 1))) { >> /* qualify userid if virtual domain. at this point >> a virtualdomain userid is not qualified and needs >> to be. so use mailboxname to get userid to be > user<at>domain. >> this leaves mboxname in an incorrect format but it > doesnt >> look like its used after this */ >> if (config_virtdomains && (domain = strchr(mailboxname, > '!'))) { >> *domain = '\0'; /* split domain!mbox */ >> strcat(userid, "@"); >> strcat(userid, mailboxname); >> } >> sync_log_user(userid); } > 4733a4745 >> char *domain; > 4839c4851,4854 > < /* XXX should sent a RESET here to cleanup meta-data */ > --- >> /* clean up mailboxname which is in wrong format >> of [EMAIL PROTECTED] */ >> if (config_virtdomains && (domain = strchr(mailboxname, '@'))) >> *domain = '\0'; /* split [EMAIL PROTECTED] */ > > > > > > > > On Tue, 2006-01-24 at 23:01 +1300, jason neil wrote: > >> hi. >> discovered it's probably not the full answer and just solves one >> particular >> problem. another problem seems to be when you create a new virtual >> domain, >> imapd will write a USER entry to the /var/lib/imap/sync/log file but the >> function it uses in mboxname.c to get the username strips the domain >> information off it. the sync_client reads the log and attempts a USER >> operation but complains that the mail box doesn't exist - presumably >> because >> it's looking for a mailbox in the default domain?? >> >> im just bumbling around really but will report anything interesting i >> find. >> rgds, >> j. >> >> ---- >> Cyrus Home Page: http://asg.web.cmu.edu/cyrus >> Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu >> List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html > > -- > Unix Systems Administrator > Department of Computer Science > The University of Auckland > > Ph: (+64 9) 3737599 ext: 87422 > ---- > Cyrus Home Page: http://asg.web.cmu.edu/cyrus > Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu > List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html ---- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html