METADATA help

Marco falon at ruparpiemonte.it
Thu Apr 30 06:41:34 EDT 2020


Oh, I have found the solution!

It seems that in the annotation_definitions file the *name* of the 
third-party annotation MUST be down-case.

The RFC5464 says:

"Except as noted otherwise, all alphabetic characters are case-
    insensitive.  The use of upper or lower case characters to define
    token strings is for editorial clarity only.  Implementations MUST
    accept these strings in a case-insensitive fashion."

So this could be a bug...

Interesting this: if I define a downcase name in the file, then the 
GET/SETMETADATA works case insensitive as expected. But if the name in 
annotation file is uppercase, the imap metadata commands return NIL or 
Permission denied.

Kind Regards
Marco


Il 28/04/2020 12:49, Marco ha scritto:
> Hello,
> 
>    I have some problems in Cyrus 3.0.13 with user defined metadata.
> 
> Let suppose I define in imapd.conf
> 
>      annotation_definitions: /etc/annoIMAP.conf
> 
> and annoIMAP.conf is:
> 
> /vendor/example/partition/comune.prova.it,server,string,backend,value.priv,lrswipkxtea 
> 
> 
> With this configuration all works fine with the old annotatemore 
> "standard". I can set and read annotations.
> 
> But time will crawl, so I have to adopt the new METADATA standard 
> (RFC5464) to manage these values.
> 
> If I try
> 
> a SETMETADATA "" (/private/vendor/example/partition/comune.prova.it 
> "prova1")
> a NO Permission denied
> 
> I have to do this to set the value:
> 
> a SETANNOTATION "" "/vendor/example/partition/comune.prova.it" 
> ("value.priv" "prova1")
> a OK Completed
> 
> 
> Now, with
> 
> a GETMETADATA "" "/private/*"
> * METADATA "" ("/private/vendor/example/partition/comune.prova.it" 
> "prova1" "/private/vendor/cmu/cyrus-imapd/squat" NIL 
> "/private/vendor/cmu/cyrus-imapd/expire" NIL 
> "/private/vendor/cmu/cyrus-imapd/usercounters" "3 0 0 0 0 0 0 0 0 0 0" 
> "/private/vendor/cmu/cyrus-imapd/usermodseq" "0" "/private/comment" NIL 
> "/private/admin" NIL)
> 
> but if I ask only my user defined metadata:
> a GETMETADATA "" "/private/vendor/example/partition/comune.prova.it"
> * METADATA "" ("/private/vendor/example/partition/comune.prova.it" NIL)
> 
> the server tell me NIL in place of "prova1".
> 
> I would ask an help with this protocol:
> 
> - I would like to know why SETMETADATA fails with "Permission denied" in 
> above example.
> 
> - Then I have to know why a wildcard query show me the "prova1" value in
> "/private/vendor/example/partition/comune.prova.it", but when I query 
> only the value of "/private/vendor/example/partition/comune.prova.it" 
> the answer is NIL.
> 
> Other detail:
> name       : Cyrus IMAPD
> version    : 3.0.13-6.el8
> vendor     : Project Cyrus
> support-url: https://www.cyrusimap.org
> os         : Linux
> os-version : 4.18.0-147.8.1.el8_1.x86_64
> environment: Built w/Cyrus SASL 2.1.27
>               Running w/Cyrus SASL 2.1.27
>               Built w/OpenSSL 1.1.1c FIPS  28 May 2019
>               Running w/OpenSSL 1.1.1c FIPS  28 May 2019
>               Built w/zlib 1.2.11
>               Running w/zlib 1.2.11
>               CMU Sieve 3.0
>               NET-SNMP
>               mmap = shared
>               lock = fcntl
>               nonblock = fcntl
>               idle = idled
> 
> 
> Thank you very much
> Kind Regards
> 
> 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
> 



More information about the Info-cyrus mailing list