cvt_xlist_specialuse does not work with subfolders

Michael Menge michael.menge at zdv.uni-tuebingen.de
Mon Aug 13 12:33:50 EDT 2018


Quoting Dilyan Palauzov <Dilyan.Palauzov at aegee.org>:

> Hello,
>
> you can use cyradm with setmetadata:  
> https://www.cyrusimap.org/dev/imap/reference/manpages/systemcommands/cyradm.html#setmetadata .  It works the sameway on 3.0, despite the fact the 3.0's documentation is silent on  
> this.
>
> When making chnages on master, e.g. updating the documengation,  
> please verify if they are relevant for 3.0 and in such case backport  
> them.
>
> There is no \spam special use, it is \junk .
>

Thanks for the hint to the documentation.
I did read a bit more about XLIST, SPECIAL-USE and Annotations and
I found some inconsistent behavior, between IMAP setmetadata command (imtest),
cvt_xlist_specialuse and cyradm setmetadata

Here the setup for the account user/zrstes1

mamx02.mail.localhost> cm user/zrstes3
mamx02.mail.localhost> cm user/zrstes3/Mail
mamx02.mail.localhost> cm user/zrstes3/Mail/v-spam
mamx02.mail.localhost> cm user/zrstes3/Mail/trash
mamx02.mail.localhost> cm user/zrstes3/Mail/sent
mamx02.mail.localhost> cm user/zrstes3/Mail/drafts
mamx02.mail.localhost> cm user/zrstes3/newdrafts
mamx02.mail.localhost> cm user/zrstes3/NewDrafts
mamx02.mail.localhost> getmetadata user/zrstes3*
mamx02.mail.localhost> lm user/zrstes3*
user/zrstes3 (\HasChildren)
user/zrstes3/Mail (\HasChildren)
user/zrstes3/Mail/drafts (\HasNoChildren)
user/zrstes3/Mail/sent (\HasNoChildren)
user/zrstes3/Mail/trash (\HasNoChildren)
user/zrstes3/Mail/v-spam (\HasNoChildren)
user/zrstes3/NewDrafts (\HasNoChildren)
user/zrstes3/newdrafts (\HasNoChildren)
mamx02.mail.localhost> setmetadata user/zrstes3/Mail/sent specialuse "\\Sent"
mamx02.mail.localhost> getmetadata user/zrstes3*
{user/zrstes3/Mail/sent}:
   private:
     specialuse: \Sent
mamx02.mail.localhost>


Switching to imtest

a LIST "" "*"
* LIST (\HasNoChildren) "/" INBOX
* LIST (\HasChildren) "/" Mail
* LIST (\HasNoChildren) "/" Mail/drafts
* LIST (\HasNoChildren) "/" Mail/sent
* LIST (\HasNoChildren) "/" Mail/trash
* LIST (\HasNoChildren) "/" Mail/v-spam
* LIST (\HasNoChildren) "/" NewDrafts
* LIST (\HasNoChildren) "/" newdrafts
a OK Completed (0.000 secs 8 calls)
a XLIST "" "Mail/sent"
* XLIST (\HasNoChildren) "/" Mail/sent
a OK Completed (0.000 secs 1 calls)
b LIST (SPECIAL-USE) "" "*"
b OK Completed (0.000 secs 8 calls)
c LIST "" "Mail/sent" RETURN (SPECIAL-USE)
* LIST (\HasNoChildren) "/" Mail/sent
c OK Completed (0.000 secs 1 calls)


No Special use visible, lets set it via IMAP for an other folder.


d SETMETADATA "Mail/trash" (/private/specialuse "\\Trash")
d OK Completed
e XLIST "" "Mail/trash"
* XLIST (\HasNoChildren \Trash) "/" Mail/trash
e OK Completed (0.000 secs 1 calls)
f LIST (SPECIAL-USE) "" "*"
* LIST (\HasNoChildren \Trash) "/" Mail/trash
f OK Completed (0.000 secs 8 calls)

Lets check in cyradm again

mamx02.mail.localhost> getmetadata user/zrstes3*
{user/zrstes3/Mail/sent}:
   private:
     specialuse: \Sent
mamx02.mail.localhost>

Still only the sent folder we configured via cyradm before.

So lets try cvt_xlist_specialuse running with "xlist-drafts: newdrafts"

cvt_xlist_specialuse -C /etc/imapd_be.conf -v user/zrstes3*
will set \drafts for folders named newdrafts
will set \sent for folders named Mail.sent
will set \trash for folders named Mail.trash
will set \junk for folders named Mail.s-spam
will set \spam for folders named Mail.v-spam
be/cvt_xlist_specialuse[3847]: couldn't authenticate to backend  
server: SASL library is not initialized
be/cvt_xlist_specialuse[3847]: mupdate_connect failed: no auth status
be/cvt_xlist_specialuse[3847]: cannot connect to mupdate server for  
update of 'user.zrstes3.newdrafts'
be/cvt_xlist_specialuse[3847]: auditlog: modseq  
sessionid=<be-3847-1534177056-1-8638186448626841993>  
mailbox=<user.zrstes3.newdrafts>  
uniqueid=<b297865b-9d2a-422d-95e2-16805e1f4678> highestmodseq=<2>
set specialuse \drafts for user.zrstes3.newdrafts

Checking in imtest.

g LIST (SPECIAL-USE) "" "*"
* LIST (\HasNoChildren \Trash) "/" Mail/trash
* LIST (\HasNoChildren \drafts) "/" newdrafts
g OK Completed (0.000 secs 8 calls)

and in cyradm

mamx02.mail.localhost> getmetadata user/zrstes3*
{user/zrstes3/Mail/sent}:
   private:
     specialuse: \Sent
mamx02.mail.localhost>

I was wondering if the Annotation set by cvt_xlist_specialuse should  
be \\ instead of \drafts
so i tried again with "/" as delimiter for xlist-sent, xlist-trash,  
xlist-junk, xlist-spam and with
xlist-Drafts: NewDrafts


> cvt_xlist_specialuse -C /etc/imapd_be.conf -v user/zrstes3*
will set \drafts for folders named NewDrafts
will set \sent for folders named Mail/sent
will set \trash for folders named Mail/trash
will set \junk for folders named Mail/s-spam
will set \spam for folders named Mail/v-spam
not setting specialuse \drafts for user.zrstes3.NewDrafts, already  
exists as user.zrstes3.newdrafts

So what is happening here?

Is cyradm updating the annotation for the admin user cyrus, and not in the
name of the user zrstes3?

Is the special-uses annotation case-sensitive? And should  
cvt_xlist_specialuse use \Drafts?



> Regards
>   Дилян
>
> On August 13, 2018 6:53:06 AM PDT, Michael Menge  
> <michael.menge at zdv.uni-tuebingen.de> wrote:
>> Hi,
>>
>> We are testing the migration from Cyrus 2.4.20 to 3.0.7
>> and have discovered a problem with cvt_xlist_specialuse
>> (migration of the xlist-* options to specialuse annotations).
>>
>> Below are the important options from the imapd.conf of the current
>> backends
>>
>> altnamespace: 1
>> unixhierarchysep: 1
>> xlist-sent: Mail.sent
>> xlist-trash: Mail.trash
>> xlist-drafts: Mail.drafts
>> xlist-junk: Mail.v-spam
>> xlist-spam: Mail.v-spam
>> specialusealways: 1
>>
>> --- default ----
>> virtdomains: off
>>
>>
>> cvt_xlist_specialuse did only output
>>
>> will set \drafts for folders named Mail.drafts
>> will set \sent for folders named Mail.sent
>> will set \trash for folders named Mail.trash
>> will set \junk for folders named Mail.s-spam
>> will set \spam for folders named Mail.v-spam
>>
>> but was not able to find any mailboxes to update the annotation.
>>
>> First we suspected that with the changed default setting for
>> unixhierarchysep
>> the format of xlist- Options might have changed to unixhierarchysep as
>> well.
>>
>> But setting
>>
>> xlist-sent: Mail/sent
>> xlist-trash: Mail/trash
>> xlist-drafts: Mail/drafts
>> xlist-junk: Mail/v-spam
>> xlist-spam: Mail/v-spam
>>
>> did only change the output of cvt_xlist_specialuse to
>>
>> will set \drafts for folders named Mail/drafts
>> will set \sent for folders named Mail/sent
>> will set \trash for folders named Mail/trash
>> will set \junk for folders named Mail/s-spam
>> will set \spam for folders named Mail/v-spam
>>
>> but it still didn't find any mailboxes to update the annotations.
>>
>> After changing the xlist- option to a direct folder of the INBOX e.g.
>> Mail
>> cvt_xlist_specialuse was able to find the folder and set the
>> annotation.
>>
>> Is there a way to set the specialuse annotations with cyradm or perl
>> script?
>>
>> Regards
>>
>>     Michael Menge
>>
>>
>>
>>
>> --------------------------------------------------------------------------------
>> M.Menge                                Tel.: (49) 7071/29-70316
>> Universität Tübingen                   Fax.: (49) 7071/29-5912
>> Zentrum für Datenverarbeitung          mail:
>> michael.menge at zdv.uni-tuebingen.de
>> Wächterstraße 76
>> 72074 Tübingen



--------------------------------------------------------------------------------
M.Menge                                Tel.: (49) 7071/29-70316
Universität Tübingen                   Fax.: (49) 7071/29-5912
Zentrum für Datenverarbeitung          mail:  
michael.menge at zdv.uni-tuebingen.de
Wächterstraße 76
72074 Tübingen



More information about the Cyrus-devel mailing list