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