TODO revision c4d85d3de043eacceeebcc65edb94761d64d6691
fa9e4066f08beec538e775443c5be79dd423fcabahrens - dsync: delete foo, rename bar foo -> foo, foo-temp-1
fa9e4066f08beec538e775443c5be79dd423fcabahrens - dsync+imapc:
fa9e4066f08beec538e775443c5be79dd423fcabahrens - half-sync [-1], which is the same as normal sync except the other side
fa9e4066f08beec538e775443c5be79dd423fcabahrens doesn't do anything (so when migrating from imapc, don't push changes
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrock back to it)
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrock - mailbox list could be synced pretty optimally by ignoring
fa9e4066f08beec538e775443c5be79dd423fcabahrens (name, uidvalidity) matches. for the left if uidvalidities are unique
fa9e4066f08beec538e775443c5be79dd423fcabahrens and can be matched -> rename mailbox.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - GUID-less sync could optionally use just rfc822.size [and internaldate]
fa9e4066f08beec538e775443c5be79dd423fcabahrens to match messages.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - why does it use separate FETCH INTERNALDATE + FETCH BODY[HEADER]
fa9e4066f08beec538e775443c5be79dd423fcabahrens - lib-ssl-iostream: ssl_get_last_error() should return also syscall errors
fa9e4066f08beec538e775443c5be79dd423fcabahrens instead of being NULL. most importantly handle handshake code.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - if transaction log file corruption is noticed, make sure new dovecot.index
fa9e4066f08beec538e775443c5be79dd423fcabahrens snapshot gets written and don't mark the whole file corrupted.. rather maybe
fa9e4066f08beec538e775443c5be79dd423fcabahrens just rotate and truncate it
fa9e4066f08beec538e775443c5be79dd423fcabahrens - mdbox: purging in alt storage could create files back to alt storage
fa9e4066f08beec538e775443c5be79dd423fcabahrens - LAYOUT=index:
fa9e4066f08beec538e775443c5be79dd423fcabahrens - force-resync should fix the index, finding any missing mailboxes, same
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum for when internally detecting the error
fa9e4066f08beec538e775443c5be79dd423fcabahrens - see if there are any race conditions? and check other error handling
fa9e4066f08beec538e775443c5be79dd423fcabahrens - after doing a lot of changes the list's memory pool keeps growing.
4445fffbbb1ea25fd0e9ea68b9380dd7a6709025Matthew Ahrens do an occasional re-parsing to clear the pool
f83b46baf98d276f5f84fa84c8b461f412ac1f5ePaul Dagnelie - quota recalc + dict-file [+acl?] assert-crashes in !indexing->syncing
c16bcc4577f389573eff411c7b7e040294078c3bIgor Kozhukhov - imaptest: add condstore, qresync tests
fa9e4066f08beec538e775443c5be79dd423fcabahrens - SASL client library, initially supporting only PLAIN and plugins. Use it
fa9e4066f08beec538e775443c5be79dd423fcabahrens everywhere we currently use hardcoded PLAIN (proxy, doveadm, ..)
fa9e4066f08beec538e775443c5be79dd423fcabahrens - zlib plugin should do caching similar to binary fetches. otherwise
fa9e4066f08beec538e775443c5be79dd423fcabahrens partial fetches from large compressed mails are hopelessly slow.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - Track highestmodseq always, just don't keep per-message modseqs unless
fa9e4066f08beec538e775443c5be79dd423fcabahrens they're enabled. Then don't return [NOMODSEQ] on select.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - URLAUTH: if client tries to access nonexistent user, do a delay in
fa9e4066f08beec538e775443c5be79dd423fcabahrens imap-urlauth-client.c (AFTER destroying the worker)
e0ad97e30ea0a9af63c42d71690b5f387c763420Jonathan Adams - special response in the control connection to make the imap-urlauth
fa9e4066f08beec538e775443c5be79dd423fcabahrens master wait before starting a new worker
fa9e4066f08beec538e775443c5be79dd423fcabahrens - shared user should get settings from userdb extra fields, especially
fa9e4066f08beec538e775443c5be79dd423fcabahrens plugin/quota_rule to get different quota limits for shared mailboxes.
fa9e4066f08beec538e775443c5be79dd423fcabahrens the problem is that user doesn't currently have set_parser available,
fa9e4066f08beec538e775443c5be79dd423fcabahrens and adding it would probably waste memory..
fa9e4066f08beec538e775443c5be79dd423fcabahrens - auth_debug[_passwords]=yes ability for specific users via doveadm. for
4445fffbbb1ea25fd0e9ea68b9380dd7a6709025Matthew Ahrens both login-common and auth
fa9e4066f08beec538e775443c5be79dd423fcabahrens - settings parsing is horribly bloaty
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum - doveadm: if running via doveadm-server and it fails, say something about
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum error being in the log
fa9e4066f08beec538e775443c5be79dd423fcabahrens - indexer-worker and maybe others (doveadm?) could support dropping privileges
fa9e4066f08beec538e775443c5be79dd423fcabahrens permanently when service_count=1. Note that LMTP can't with multiple RCPT
0a586cea3ceec7e5e50e7e54c745082a7a333ac2Mark Shellenbaum - after reading whole message text, update has_nul-state to cache
29ab75c9a733dad2978c4860efd954b5625e3467rm - FIFOs maybe should be counted as connections, but unlisten should
fa9e4066f08beec538e775443c5be79dd423fcabahrens unlink+reopen it in master?
fa9e4066f08beec538e775443c5be79dd423fcabahrens - lmtp client/proxy: Handle multiline replies better
f83b46baf98d276f5f84fa84c8b461f412ac1f5ePaul Dagnelie - lmtp: support DSN extension (especially ORCPT)
f83b46baf98d276f5f84fa84c8b461f412ac1f5ePaul Dagnelie - recreate mailbox -> existing sessions log "indexid changed" error
fa9e4066f08beec538e775443c5be79dd423fcabahrens - prefetching to THREAD and SORT
fa9e4066f08beec538e775443c5be79dd423fcabahrens - check all imap extensions and see if some don't work (condstore)
fa9e4066f08beec538e775443c5be79dd423fcabahrens - per-namespace imapc_* settings? create a way to "copy" a settings struct,
fa9e4066f08beec538e775443c5be79dd423fcabahrens so mail_storage_settings are copied to mail_namespace_settings. use the
fa9e4066f08beec538e775443c5be79dd423fcabahrens change tracking to figure out what settings are namespace-specific.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - doveadm import: add -d parameter to deduplicate mails based on their GUID
fa9e4066f08beec538e775443c5be79dd423fcabahrens (or perhaps do it by default?)
fa9e4066f08beec538e775443c5be79dd423fcabahrens - sdbox: altmoving is done with mailbox locked. that's not necessary, it could
fa9e4066f08beec538e775443c5be79dd423fcabahrens do the copying while unlocked and delete the primary files while locked
fa9e4066f08beec538e775443c5be79dd423fcabahrens - passdb, userdb { username_format } that doesn't permanently change
fa9e4066f08beec538e775443c5be79dd423fcabahrens the username
fa9e4066f08beec538e775443c5be79dd423fcabahrens - mdbox/sdbox index rebuild -> quota rebuild?
fa9e4066f08beec538e775443c5be79dd423fcabahrens - solr separate attachments (patch)
fa9e4066f08beec538e775443c5be79dd423fcabahrens - sql connection pooling: Count lookup latencies, avoid servers with
fa9e4066f08beec538e775443c5be79dd423fcabahrens significantly higher latencies. optionally use the secondary server only
fa9e4066f08beec538e775443c5be79dd423fcabahrens as fallback
fa9e4066f08beec538e775443c5be79dd423fcabahrens - maildir_storage_sync_force() shouldn't do anything except find the new
fa9e4066f08beec538e775443c5be79dd423fcabahrens file, don't go expunging any more stuff or we could get recursively back to
fa9e4066f08beec538e775443c5be79dd423fcabahrens where we started, and stuff would break
fa9e4066f08beec538e775443c5be79dd423fcabahrens - imap: append/copy could trigger indexing (optionally)
fa9e4066f08beec538e775443c5be79dd423fcabahrens - fuzzy: be fuzzy about date/size
fa9e4066f08beec538e775443c5be79dd423fcabahrens - mailbox list index:
fa9e4066f08beec538e775443c5be79dd423fcabahrens - with in-memory indexes be sure to refresh it more often
fa9e4066f08beec538e775443c5be79dd423fcabahrens - refreshing could refresh only the parts that are actually requested,
fa9e4066f08beec538e775443c5be79dd423fcabahrens - virtual could use it to avoid keeping all mailboxes open
fa9e4066f08beec538e775443c5be79dd423fcabahrens - remove mail_deliver_session after all, do all the stuff transparently
fa9e4066f08beec538e775443c5be79dd423fcabahrens by hooking into mailbox_copy().
fa9e4066f08beec538e775443c5be79dd423fcabahrens - use this hook also to do the mail deduplication: 1) sort all destination
fa9e4066f08beec538e775443c5be79dd423fcabahrens users, 2) create mail_user only once for each user, 3) remember in
fa9e4066f08beec538e775443c5be79dd423fcabahrens src_mail the previously copied mail, 4) use that for mailbox_copy()ing
fa9e4066f08beec538e775443c5be79dd423fcabahrens to following recipients
fa9e4066f08beec538e775443c5be79dd423fcabahrens - make sure this removes duplicate dbox mails when sieve saves mail to
fa9e4066f08beec538e775443c5be79dd423fcabahrens multiple mailboxes
fa9e4066f08beec538e775443c5be79dd423fcabahrens - notify_sync() could have "what changed" struct with old/new flags
fa9e4066f08beec538e775443c5be79dd423fcabahrens - maildir: copy dovecot-shared file from parent mailbox, not root.
fa9e4066f08beec538e775443c5be79dd423fcabahrens - if global ACL path points to a file instead of a directory, read all of
fa9e4066f08beec538e775443c5be79dd423fcabahrens them from there. support wildcards in names.
messages and some plugin (e.g. mail_log) fetches some fields that are
- dict sql: support ignoring some search key hierarchies (e.g. acl "anyone")
mail expunged (e.g. keep track of total storage size, trigger purging
problems, e.g. "Expunged message reappeared", "Duplicate file entry"?
- maybe config should return all of the protocol/local/remote overrides
- update immediately after SETACL: add/remove entries, update timestamps
- CONDSTORE: use per-flag/per-keyword conflict checking
separator (e.g. mail_access_groups=%{ldap:gidNumber:,})
- don't update dovecot-uidlist if dovecot.index.cache doesn't exist /
unlink dovecot.index and rotate log and add some initial useful info to
- change envelope parsing not to use get_headers() so imap.envelope can
- write first extension intros in dovecot.index.log always with names
from login processes. especially if there's one login/connection the speed
should be something like once/sec. also limit how fast to accept new
- Create our own extension: When searching with TEXT/BODY, return