1
- dsync: delete foo, rename bar foo -> foo, foo-temp-1
3
- mailbox list could be synced pretty optimally by ignoring
4
(name, uidvalidity) matches. for the left if uidvalidities are unique
5
and can be matched -> rename mailbox.
6
- GUID-less sync could optionally use just rfc822.size [and internaldate]
8
- why does it use separate FETCH INTERNALDATE + FETCH BODY[HEADER]
10
- virtual plugin doesn't verify the index file's data, crashes if broken.
12
- libsasl: use it in imapc, pop3c, managesieve-login, doveadm auth
13
- nonblocking passdb + blocking passdb -> deinit -> nonblocking passdb gets
14
aborted -> calls auth_worker_call() which crashes because deinit is
16
- ldap lookups should be done via auth worker processes? maybe automatically
17
if the lookups are queuing start creating workers? although multiple LDAP
18
connections within the same process would work too..
19
- per-msg checksums? per-cache-msg checksums? per-log record checksums?
20
- lazy_expunge_only_last_instance=yes + mdbox doesn't work, because refcounts
21
don't update immediately
22
- lib-ssl-iostream: ssl_get_last_error() should return also syscall errors
23
instead of being NULL. most importantly handle handshake code.
24
- if transaction log file corruption is noticed, make sure new dovecot.index
25
snapshot gets written and don't mark the whole file corrupted.. rather maybe
26
just rotate and truncate it
27
- mdbox: purging in alt storage could create files back to alt storage
29
- force-resync should fix the index, finding any missing mailboxes, same
30
for when internally detecting the error
31
- see if there are any race conditions? and check other error handling
32
- after doing a lot of changes the list's memory pool keeps growing.
33
do an occasional re-parsing to clear the pool
34
- quota recalc + dict-file [+acl?] assert-crashes in !indexing->syncing
35
- imaptest: add condstore, qresync tests
37
- SASL client library, initially supporting only PLAIN and plugins. Use it
38
everywhere we currently use hardcoded PLAIN (proxy, doveadm, ..)
39
- zlib plugin should do caching similar to binary fetches. otherwise
40
partial fetches from large compressed mails are hopelessly slow.
41
- Track highestmodseq always, just don't keep per-message modseqs unless
42
they're enabled. Then don't return [NOMODSEQ] on select.
43
- URLAUTH: if client tries to access nonexistent user, do a delay in
44
imap-urlauth-client.c (AFTER destroying the worker)
45
- special response in the control connection to make the imap-urlauth
46
master wait before starting a new worker
47
- shared user should get settings from userdb extra fields, especially
48
plugin/quota_rule to get different quota limits for shared mailboxes.
49
the problem is that user doesn't currently have set_parser available,
50
and adding it would probably waste memory..
51
- auth_debug[_passwords]=yes ability for specific users via doveadm. for
52
both login-common and auth
53
- settings parsing is horribly bloaty
54
- doveadm: if running via doveadm-server and it fails, say something about
55
error being in the log
56
- indexer-worker and maybe others (doveadm?) could support dropping privileges
57
permanently when service_count=1. Note that LMTP can't with multiple RCPT
59
- after reading whole message text, update has_nul-state to cache
60
- FIFOs maybe should be counted as connections, but unlisten should
61
unlink+reopen it in master?
1
62
- lmtp client/proxy: Handle multiline replies better
2
- lib-ssl-iostream: Support ssl_protocols setting
63
- lmtp: support DSN extension (especially ORCPT)
3
64
- recreate mailbox -> existing sessions log "indexid changed" error
4
65
- add message/mime limits
9
70
so mail_storage_settings are copied to mail_namespace_settings. use the
10
71
change tracking to figure out what settings are namespace-specific.
12
- imap: list (special-use recursivematch) "" % doesn't work
73
- doveadm import: add -d parameter to deduplicate mails based on their GUID
74
(or perhaps do it by default?)
75
- sdbox: altmoving is done with mailbox locked. that's not necessary, it could
76
do the copying while unlocked and delete the primary files while locked
13
77
- passdb, userdb { username_format } that doesn't permanently change
15
79
- mdbox/sdbox index rebuild -> quota rebuild?
22
86
where we started, and stuff would break
23
87
- imap: append/copy could trigger indexing (optionally)
24
88
- fuzzy: be fuzzy about date/size
25
- fix proxy_maybe=fqdn
26
89
- mailbox list index:
27
90
- with in-memory indexes be sure to refresh it more often
28
91
- refreshing could refresh only the parts that are actually requested,
30
- mailbox_get_metadata(guid) could be optimized
31
93
- virtual could use it to avoid keeping all mailboxes open
33
- dsyncing between two namespace separators is probably broken..
34
94
- remove mail_deliver_session after all, do all the stuff transparently
35
95
by hooking into mailbox_copy().
36
96
- use this hook also to do the mail deduplication: 1) sort all destination
37
97
users, 2) create mail_user only once for each user, 3) remember in
38
98
src_mail the previously copied mail, 4) use that for mailbox_copy()ing
39
99
to following recipients
100
- make sure this removes duplicate dbox mails when sieve saves mail to
40
102
- notify_sync() could have "what changed" struct with old/new flags
41
103
- maildir: copy dovecot-shared file from parent mailbox, not root.
42
104
- if global ACL path points to a file instead of a directory, read all of
49
111
- doveadm search savedbefore 7d could be optimized in large mailboxes..
50
112
- mdbox: storage rebuilding could log about changes it does
51
113
- mdbox: broken extrefs header keeps causing index rebuilds
52
- cache: mail_cache_lookup() should be able to return mail_cache_add()ed
53
fields even before they've been flushed to disk. this is useful when copying
54
messages and some plugin (e.g. mail_log) fetches some fields that are
55
already added to cache (to avoid opening and parsing the message)
56
114
- doveadm -A <<EOF expunge + purge + EOF
57
115
- sent, drafts: .Sent/dovecot.index: modseq_hdr.log_offset too large
58
116
- 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
118
- sql pool: if async query is pending and sync query is sent and there
63
119
are no more empty connections, it should flush the async query first
64
120
- NTLMv1 and LM should be disabled if disable_plaintext_auth=yes
65
121
- SEARCH SENT*/HEADER/etc. doesn't seem optimized when using with TEXT/BODY
66
122
- dict sql: support ignoring some search key hierarchies (e.g. acl "anyone")
123
- dsync: avoid sending email when it could be copied from another mailbox.
124
probably requires storage to have guid => { instances } map? that's
125
rather annoying to add.
69
128
- dotlocking: cleanup should delete stale *.lock files
98
156
- ipv6: auth penalty should begin from /64 and gradually grow to /48 if
99
157
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
159
- ldap: fix multiple-gid support somehow
113
160
- search: use mail_get_parts() only when it's already cached. if it's not,
114
161
add it to cache afterwards.
115
- move ssl proxying code to lib-master
118
164
/* currently non-external transactions can be applied multiple times,
120
166
//FIXME:i_assert((t->flags & MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL) != 0);
121
167
^ 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
169
- use backup index in mail_index_fsck()
127
170
- proxying: support fallbacking to local (or other?) server if the first
129
172
- i_panic("Message count decreased") happens - why?
130
173
- 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
175
- virtual: If last message matching INTHREAD rule gets expunged, the rest of
136
176
the thread doesn't go away
137
177
- how do shared mailboxes work with plugins?