Hi, we tested against our cyrus-imapd-3.0.5 invironment and now we can view and subscribe/unsubscribe the (other) users subfolders correctly :) . We don't know if this patch has drawback or not. Best regards Marco On Mon, 4 Jun 2018 13:51:23 +0200 Edda <letters001@xxxxxxxxxxxx> wrote: > Hi, > > I was able to reproduce the issue with 3.0.5 with these settings: > > unixhierarchysep: yes > altnamespace: no > crossdomains: no > > Key factor is unixhierarchysep on. (crossdomains is a special case. > altnamespace on/off only looks different.) > > I did a lot of debugging and found out the following: > > Compared to version 2.4.x and 2.5.x 3.0.x function list_data in > ../imap/imapd.c does not transform the hierarchy separator. > > In function mboxlist_do_find (../imap/mboxlist.c) below "Other Users > namespace" we have a prefix search. With "unixhierarchysep on" cyrus > uses the wrong prefix (domainpat) for that search. > > Example: > > . LIST "" "user/%" > * LIST (\HasChildren) "/" user/bbb > . OK Completed (0.000 secs 4 calls) > . LIST "" "user/bbb/sub01" > . OK Completed (0.000 secs) > > In this case cyrus searches with domainpat: user.bbb/sub01/subsub01 > > The prefix is previously generated from a variable called commonpat, > which is used only for this specific search. > > So I fixed it there with this patch: > > --- cyrus-imapd-3.0.5/imap/mboxlist.c.orig 2018-04-12 > 13:12:47.633956338 +0200 > +++ cyrus-imapd-3.0.5/imap/mboxlist.c 2018-05-30 > 10:56:44.255724710 +0200 @@ -2774,6 +2774,10 @@ > const char *pat = strarray_nth(patterns, i); > if (pat[prefixlen] != c) break; > } > + if (rock->namespace->hier_sep == '/') { > + if (c == '/') c = '.'; > + else if (c == '.') c = DOTCHAR; > + } > if (i < patterns->count) break; > if (c == '*' || c == '%' || c == '?') break; > commonpat[prefixlen] = c; > > > Now for the example above the search pattern is user.bbb.sub01 and > the submailbox is returned correctly. > > . LIST "" "user/%" > * LIST (\HasChildren) "/" user/bbb > . OK Completed (0.000 secs 4 calls) > . LIST "" "user/bbb/sub01" > * LIST (\HasChildren) "/" user/bbb/sub01 > . OK Completed (0.000 secs 2 calls) > . LIST "" "user/bbb/%" > * LIST (\HasChildren) "/" user/bbb/sub01 > * LIST (\HasNoChildren) "/" user/bbb/sub.dot01 > . OK Completed (0.000 secs 3 calls) > . SUBSCRIBE "user/bbb/sub01" > . OK Completed > . LSUB "" "user/*" > * LSUB () "/" user/bbb/sub01 > . OK Completed (0.000 secs 1 calls) > > The patch works fine in my test environment and I see no caveats yet. > I would be very nice if someone could check it :-) > > Best regards, > Edda > > > > > Am 15.05.18 um 10:37 schrieb marco@xxxxxxxxxx: > > Hi, > > after migrating from cyrus-imapd-2.4.17 to cyrus-imapd-3.0.6 we > > cannot view (other) users subfolders. > > > > Distro:Gentoo > > Cyrus version: cyrus-imapd-3.0.6 > > > > imapd-3.0.5.conf attached > > > > In the test environment we created a user named "aaa" and "bbb", > > then we created the folder "bbb/mytest/mysubtest". We set the acl > > for the user aaa to share the mailbox bbb/mytest/mysubtest > > > > user.aaa 0 default aaa lrswipkxtecdan anonymous p > > user.bbb 0 default bbb lrswipkxtecdan anonymous p > > aaa lrswipkxtecdan > > user.bbb.mytest 0 default bbb lrswipkxtecdan anonymous p > > aaa lrswipkxtecdan > > user.bbb.mytest.mysubtest 0 default > > bbb lrswipkxtecdan > > anonymous p > > aaa lrswipkxtecdan > > > > From whatever imap client, when we search for new folders, user.bbb > > appears, but neither user.bbb.mytest nor user.bbb.mytest.mysubtest. > > > > This is the capture from imapd 3.0.6: > > > > IMAP> 62 LIST "" "user/%" > > IMAP< * LIST (\HasChildren) "/" user/bbb > > IMAP< 62 OK Completed (0.001 secs 3 calls) > > IMAP> 63 LIST "" "user/bbb/%" > > IMAP< 63 OK Completed (0.000 secs) > > IMAP> 64 LSUB "" "user/bbb/%" > > IMAP< 64 OK Completed (0.000 secs) > > IMAP> 65 LSUB "" "user/%" > > IMAP< 65 OK Completed (0.000 secs) > > IMAP> 66 LSUB "" "%" > > IMAP< * LSUB (\Noselect \HasChildren) "/" INBOX > > IMAP< 66 OK Completed (0.000 secs 4 calls) > > IMAP> 16 NOOP > > IMAP< 16 OK Success > > IMAP> 67 SUBSCRIBE "user/bbb" > > IMAP< 67 OK Completed > > IMAP> 68 LSUB "" "%" > > IMAP< * LSUB (\Noselect \HasChildren) "/" INBOX > > IMAP< * LSUB (\Noselect \HasChildren) "/" user > > IMAP< 68 OK Completed (0.001 secs 5 calls) > > IMAP> 69 LSUB "" "INBOX/%" > > IMAP< * LSUB () "/" INBOX/Drafts > > ... > > IMAP> 74 LSUB "" "user/%" > > IMAP< * LSUB () "/" user/bbb > > IMAP< 74 OK Completed (0.001 secs 1 calls) > > IMAP> 75 LSUB "" "user/bbb/%" > > IMAP< 75 OK Completed (0.001 secs) > > > > Refreshing only the user.bbb folders nothing changed > > > > IMAP> 83 LIST "" "user/%" > > IMAP< * LIST (\HasChildren) "/" user/bbb > > IMAP< 83 OK Completed (0.001 secs 3 calls) > > IMAP> 84 LIST "" "user/bbb/%" > > IMAP< 84 OK Completed (0.001 secs) > > IMAP> 85 LSUB "" "user/bbb/%" > > IMAP< 85 OK Completed (0.001 secs) > > IMAP> 86 LSUB "" "user/%" > > IMAP< * LSUB () "/" user/bbb > > IMAP< 86 OK Completed (0.001 secs 1 calls) > > > > With net-mail/cyrus-imapd-2.4.17 all is working fine > > > > imapd-2.4.17.conf attached > > > > user.aaa 0 default aaa lrswipkxtecda anonymous p > > user.bbb 0 default bbb lrswipkxtecda anonymous p > > aaa lrswipkxtecda > > user.bbb.mytest 0 default bbb lrswipkxtecda anonymous p > > aaa lrswipkxtecda > > user.bbb.mytest.mysubtest 0 default bbb lrswipkxtecda > > anonymous p > > aaa lrswipkxtecda > > > > if we search for new folders to subscribe user/bbb and all the > > subfolders appeared > > > > IMAP> 57 LIST "" "user/%" > > IMAP< * LIST (\HasChildren) "/" user/bbb > > IMAP< 57 OK Completed (0.000 secs 3 calls) > > IMAP> 58 LIST "" "user/bbb/%" > > IMAP< * LIST (\HasChildren) "/" user/bbb/mytest > > IMAP< 58 OK Completed (0.000 secs 2 calls) > > IMAP> 59 LIST "" "user/bbb/mytest/%" > > IMAP< * LIST (\HasNoChildren) "/" user/bbb/mytest/mysubtest > > IMAP< 59 OK Completed (0.000 secs 2 calls) > > IMAP> 60 LIST "" "user/bbb/mytest/mysubtest/%" > > IMAP< 60 OK Completed (0.000 secs) > > IMAP> 61 LSUB "" "user/bbb/mytest/mysubtest/%" > > IMAP< 61 OK Completed (0.000 secs) > > IMAP> 62 LSUB "" "user/bbb/mytest/%" > > IMAP< 62 OK Completed (0.000 secs) > > IMAP> 63 LSUB "" "user/bbb/%" > > IMAP< 63 OK Completed (0.000 secs) > > IMAP> 64 LSUB "" "user/%" > > IMAP< 64 OK Completed (0.000 secs) > > IMAP> 65 LSUB "" "%" > > IMAP< * LSUB (\Noselect \HasChildren) "/" INBOX > > IMAP< 65 OK Completed (0.000 secs 4 calls) > > IMAP> 66 NOOP > > IMAP< 66 OK Completed > > IMAP> 67 SUBSCRIBE "user/bbb" > > IMAP< 67 OK Completed > > IMAP> 68 SUBSCRIBE "user/bbb/mytest/mysubtest" > > IMAP< 68 OK Completed > > IMAP> 69 SUBSCRIBE "user/bbb/mytest" > > IMAP< 69 OK Completed > > > > Any suggestion? > > > > Thanks for the support > > Marco > > > > > > > > ---- > > Cyrus Home Page: http://www.cyrusimap.org/ > > List Archives/Info: > > http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: > > https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus > > ---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus