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

Edda letters001 at sendmaid.org
Tue Jun 5 05:27:17 EDT 2018


Hi Ellie,

thank you very much for the handling of my patch! I don't have an 
account on github. So, it's easiest for me to just dump it on the users 
list. Please let me know if that bothers you.

As an author, "Edda" would be fine :) Thank you.

Best regards,
Edda

Am 05.06.18 um 04:50 schrieb ellie timoney:
> 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 marco at nucleus.it <mailto:marco at nucleus.it>:
>>> 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


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20180605/558f9f32/attachment.html>


More information about the Info-cyrus mailing list