On 27.3.2013, at 22.15, Michael M Slusarz slusarz@curecanti.org wrote:
My latest idea: Keep using the rather dummy simple IMAP keywords. Use IMAP METADATA to create a mapping between keyword <-> human readable name. Dovecot is getting close to having native METADATA support. Such IMAP standard would still need to be designed though. Anyone up for writing an RFC? :)
Would the idea be that once the extension is announced a client would then need to do a metadata lookup everytime you open the mailbox to build a keyword->label map? That could potentially be an expensive operation.
Maybe you could do something like an ENABLE LABELS so that when you open a mailbox, you would see something like this (SELECT/EXAMINE response):
- FLAGS (\Answered \Flagged \Deleted \Seen \Draft foo1 foo2 Junk NonJunk)
- LABELS (NIL NIL NIL NIL NIL "Label 1" "Label 2 Text" NIL NIL)
So there is no need to manually deal with lookups. Storing the labels would be done via standard METADATA commands.
Hmm. Maybe .. Although it would be nice to get the IMAP design away from such special-case features and try to make these more generic (which might not even require server modifications to work). Like maybe with CONDSTORE/QRESYNC you could simply see if your cached labels-modseq equals to the old one. Or simply pipelining the GETMETADATA command with SELECT. Or something.. I haven't really thought this much.