diff --git a/TODO b/TODO index a04b253..43f0c0d 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,5 @@ f{,data}sync() usage could be optimized by batching the calls. -make SSL (connect) timeouts produce a bit more than "Unidentified socket error". - automatically resume upon transient errors, e.g. "connection reset by peer" or timeout after some data was already transmitted. possibly also try to handle Exchange's "glitches" somehow. @@ -10,11 +8,16 @@ uidvalidity lock timeout handling would be a good idea. should complain when multiple Channels match the same folders. +should complain about nonsensical combinations like Sync Pull + Create Both. + propagate folder deletions even when the folders are non-empty. - verify that "most" of the folders in the Channel are still there. - refuse to delete unpropagated messages when trashing on the remote side. - refuse to delete far side if it has unpropagated messages. symmetry? +add option to suppress complaints about folders that would need creation +(but not deleted ones). + add message expiration based on arrival date (message date would be too unreliable). MaxAge; probably mutually exclusive to MaxMessages. @@ -27,11 +30,12 @@ add support for event notification callbacks. make it possible to have different mailbox names for far and near side in Patterns. - use far:near for the pattern - - for quoting, use more colons: the longest sequence of colons is the - separator + - supporting names with colons requires and extension of the parser to + report which parts of an argument were quoted - this makes Groups mostly useless, as they are mostly a workaround for this function being missing so far - this is needed for move detection, which would work only within one Channel +- this supersedes MapInbox add regexp-based mailbox path rewriting to the drivers. user would provide expressions for both directions. every transformation would be immediately @@ -44,18 +48,22 @@ also: idling mode. parallel fetching of multiple mailboxes. TLS session resumption becomes interesting then as well. -imap_set_flags(): group commands for efficiency, don't call back until -imap_commit(). +imap_set_msg_flags() & imap_trash_msg(): group commands for efficiency. add streaming from fetching to storing. +this is complicated by the IMAP target needing the final size in advance, +which we can't know in a single pass when newline translation is necessary. handle custom flags (keywords). +this is impeded by there being no Maildir-side standard. make use of IMAP CONDSTORE extension (rfc4551; CHANGEDSINCE FETCH Modifier); make use of IMAP QRESYNC extension (rfc5162) to avoid SEARCH to find vanished messages. -use MULTIAPPEND and FETCH with multiple messages. +make use of IMAP CAPABILITY APPENDLIMIT= extension (rfc7889; fastmail & gmail). +this is really useful only for IMAP <=> IMAP syncs: saves FETCH BODY. +the message could still become oversized due to conversion. dummy messages resulting from MaxSize should contain a dump of the original message's MIME structure and its (reasonably sized) text parts.