Re: Can't view (other) users subfolders with imapd 3.0.6

ellie timoney <[email protected]>
Newsgroups gmane.mail.imap.cyrus
Message-ID <1528167047.3654579.1396537248.3C4F6C8E@webmail.messagingengine.com>
Hi Edda,

Thanks for the patch!  I've added your email below to the  GitHub issue
for this: https://github.com/cyrusimap/cyrus-imapd/issues/2362
I'll review the patch and if it looks good, will include it in the next
3.0 release.  I'll also forward-port it to master if necessary.
Let me know if you'd like to submit this as a Pull Request, so your
GitHub identity can be credited for it, otherwise I'll just set your
email address as the author on the commit. :)
Cheers,

ellie


On Mon, Jun 4, 2018, at 9:51 PM, Edda 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

----
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.