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 <[email protected]> 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 [email protected]:
> > 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.