1
- dsync: delete foo, rename bar foo -> foo, foo-temp-1
3
- half-sync [-1], which is the same as normal sync except the other side
4
doesn't do anything (so when migrating from imapc, don't push changes
6
- mailbox list could be synced pretty optimally by ignoring
7
(name, uidvalidity) matches. for the left if uidvalidities are unique
8
and can be matched -> rename mailbox.
9
- GUID-less sync could optionally use just rfc822.size [and internaldate]
11
- why does it use separate FETCH INTERNALDATE + FETCH BODY[HEADER]
13
- virtual plugin doesn't verify the index file's data, crashes if broken.
15
- libsasl: use it in imapc, pop3c, managesieve-login, doveadm auth
16
- nonblocking passdb + blocking passdb -> deinit -> nonblocking passdb gets
17
aborted -> calls auth_worker_call() which crashes because deinit is
19
- ldap lookups should be done via auth worker processes? maybe automatically
20
if the lookups are queuing start creating workers? although multiple LDAP
21
connections within the same process would work too..
22
- per-msg checksums? per-cache-msg checksums? per-log record checksums?
23
- lazy_expunge_only_last_instance=yes + mdbox doesn't work, because refcounts
24
don't update immediately
25
- lib-ssl-iostream: ssl_get_last_error() should return also syscall errors
26
instead of being NULL. most importantly handle handshake code.
27
- if transaction log file corruption is noticed, make sure new dovecot.index
28
snapshot gets written and don't mark the whole file corrupted.. rather maybe
29
just rotate and truncate it
30
- mdbox: purging in alt storage could create files back to alt storage
32
- force-resync should fix the index, finding any missing mailboxes, same
33
for when internally detecting the error
34
- see if there are any race conditions? and check other error handling
35
- after doing a lot of changes the list's memory pool keeps growing.
36
do an occasional re-parsing to clear the pool
37
- quota recalc + dict-file [+acl?] assert-crashes in !indexing->syncing
38
- imaptest: add condstore, qresync tests
40
- SASL client library, initially supporting only PLAIN and plugins. Use it
41
everywhere we currently use hardcoded PLAIN (proxy, doveadm, ..)
42
- zlib plugin should do caching similar to binary fetches. otherwise
43
partial fetches from large compressed mails are hopelessly slow.
44
- Track highestmodseq always, just don't keep per-message modseqs unless
45
they're enabled. Then don't return [NOMODSEQ] on select.
46
- URLAUTH: if client tries to access nonexistent user, do a delay in
47
imap-urlauth-client.c (AFTER destroying the worker)
48
- special response in the control connection to make the imap-urlauth
49
master wait before starting a new worker
50
- shared user should get settings from userdb extra fields, especially
51
plugin/quota_rule to get different quota limits for shared mailboxes.
52
the problem is that user doesn't currently have set_parser available,
53
and adding it would probably waste memory..
54
- auth_debug[_passwords]=yes ability for specific users via doveadm. for
55
both login-common and auth
56
- settings parsing is horribly bloaty
57
- doveadm: if running via doveadm-server and it fails, say something about
58
error being in the log
59
- indexer-worker and maybe others (doveadm?) could support dropping privileges
60
permanently when service_count=1. Note that LMTP can't with multiple RCPT
62
- after reading whole message text, update has_nul-state to cache
63
- FIFOs maybe should be counted as connections, but unlisten should
64
unlink+reopen it in master?
1
65
- lmtp client/proxy: Handle multiline replies better
2
- lib-ssl-iostream: Support ssl_protocols setting
66
- lmtp: support DSN extension (especially ORCPT)
3
67
- recreate mailbox -> existing sessions log "indexid changed" error
4
68
- add message/mime limits
22
89
where we started, and stuff would break
23
90
- imap: append/copy could trigger indexing (optionally)
24
91
- fuzzy: be fuzzy about date/size
25
- fix proxy_maybe=fqdn
26
92
- mailbox list index:
27
93
- with in-memory indexes be sure to refresh it more often
28
94
- refreshing could refresh only the parts that are actually requested,
30
- mailbox_get_metadata(guid) could be optimized
31
96
- virtual could use it to avoid keeping all mailboxes open
33
- dsyncing between two namespace separators is probably broken..
34
97
- remove mail_deliver_session after all, do all the stuff transparently
35
98
by hooking into mailbox_copy().
36
99
- use this hook also to do the mail deduplication: 1) sort all destination
37
100
users, 2) create mail_user only once for each user, 3) remember in
38
101
src_mail the previously copied mail, 4) use that for mailbox_copy()ing
39
102
to following recipients
103
- make sure this removes duplicate dbox mails when sieve saves mail to
40
105
- notify_sync() could have "what changed" struct with old/new flags
41
106
- maildir: copy dovecot-shared file from parent mailbox, not root.
42
107
- if global ACL path points to a file instead of a directory, read all of
57
122
- sent, drafts: .Sent/dovecot.index: modseq_hdr.log_offset too large
58
123
- mail_max_lock_timeout error could be reported more nicely, also ones coming
60
- dsync: if mailbox is renamed due to it being invalid, its subscription
62
125
- sql pool: if async query is pending and sync query is sent and there
63
126
are no more empty connections, it should flush the async query first
64
127
- NTLMv1 and LM should be disabled if disable_plaintext_auth=yes
65
128
- SEARCH SENT*/HEADER/etc. doesn't seem optimized when using with TEXT/BODY
66
129
- dict sql: support ignoring some search key hierarchies (e.g. acl "anyone")
130
- dsync: avoid sending email when it could be copied from another mailbox.
131
probably requires storage to have guid => { instances } map? that's
132
rather annoying to add.
69
135
- dotlocking: cleanup should delete stale *.lock files
98
163
- ipv6: auth penalty should begin from /64 and gradually grow to /48 if
99
164
necessary. and the same could be done for ipv4 as well..
102
- check for uid conflicts in the middle of mailbox based on next existing
103
message, not previous
104
- subscriptions syncing doesn't handle mixed hierarchy separators
105
- Can't rename mailbox INBOX_019acf2169c5784b307f000074ccac23 to INBOX: Target mailbox already exists
106
- copying can't work in non-full mode unless source mailbox is modified
107
in some way. possibly add some COPY records to transaction log in future?
108
- superfast mode: when syncing changes within a mailbox, use modseqs to
109
figure out what has changed similar to QRESYNC.
111
- lda: add some -h 'Header: value' parameter that adds/replaces header
112
166
- ldap: fix multiple-gid support somehow
113
167
- search: use mail_get_parts() only when it's already cached. if it's not,
114
168
add it to cache afterwards.
115
- move ssl proxying code to lib-master
118
171
/* currently non-external transactions can be applied multiple times,
120
173
//FIXME:i_assert((t->flags & MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL) != 0);
121
174
^ appears to work now though, probably because of the added syncing stuff..
123
- transaction log corruption should make sure dovecot.index is rewritten
124
and perhaps not delete the file.
125
176
- use backup index in mail_index_fsck()
127
177
- proxying: support fallbacking to local (or other?) server if the first
129
179
- i_panic("Message count decreased") happens - why?
130
180
- at least one backtrace shows client_destroy -> client_command_cancel ->
132
- fsck -> log_file_tail_offset 2273345664 -> 996 ->
133
mail-transaction-log.c: line 341 (mail_transaction_log_set_mailbox_sync_pos):
134
assertion failed: (file_offset >= log->head->saved_tail_offset)
135
182
- virtual: If last message matching INTHREAD rule gets expunged, the rest of
136
183
the thread doesn't go away
137
184
- how do shared mailboxes work with plugins?