1
- doveadm fetch text mailbox <ns prefix> -> no replies, because
2
mailbox_list_iter_init_namespaces() doesn't return ns prefixes
1
- lmtp client/proxy: Handle multiline replies better
2
- lib-ssl-iostream: Support ssl_protocols setting
3
- recreate mailbox -> existing sessions log "indexid changed" error
4
- add message/mime limits
6
- prefetching to THREAD and SORT
7
- check all imap extensions and see if some don't work (condstore)
8
- per-namespace imapc_* settings? create a way to "copy" a settings struct,
9
so mail_storage_settings are copied to mail_namespace_settings. use the
10
change tracking to figure out what settings are namespace-specific.
12
- imap: list (special-use recursivematch) "" % doesn't work
13
- passdb, userdb { username_format } that doesn't permanently change
15
- mdbox/sdbox index rebuild -> quota rebuild?
16
- solr separate attachments (patch)
17
- sql connection pooling: Count lookup latencies, avoid servers with
18
significantly higher latencies. optionally use the secondary server only
20
- maildir_storage_sync_force() shouldn't do anything except find the new
21
file, don't go expunging any more stuff or we could get recursively back to
22
where we started, and stuff would break
23
- imap: append/copy could trigger indexing (optionally)
24
- fuzzy: be fuzzy about date/size
25
- fix proxy_maybe=fqdn
27
- with in-memory indexes be sure to refresh it more often
28
- refreshing could refresh only the parts that are actually requested,
30
- mailbox_get_metadata(guid) could be optimized
31
- virtual could use it to avoid keeping all mailboxes open
33
- dsyncing between two namespace separators is probably broken..
34
- remove mail_deliver_session after all, do all the stuff transparently
35
by hooking into mailbox_copy().
36
- use this hook also to do the mail deduplication: 1) sort all destination
37
users, 2) create mail_user only once for each user, 3) remember in
38
src_mail the previously copied mail, 4) use that for mailbox_copy()ing
39
to following recipients
40
- notify_sync() could have "what changed" struct with old/new flags
41
- maildir: copy dovecot-shared file from parent mailbox, not root.
42
- if global ACL path points to a file instead of a directory, read all of
43
them from there. support wildcards in names.
3
45
- master passdb preserves userdb_* extra fields. should it preserve
4
46
non-userdb_* extra fields too?
5
47
- imap, pop3: if client init fails, wait a second or two before disconnecting
7
- doveadm expunge parameter to delete empty mailboxes (for lazy-expunge)
8
49
- doveadm search savedbefore 7d could be optimized in large mailboxes..
9
50
- mdbox: storage rebuilding could log about changes it does
10
51
- mdbox: broken extrefs header keeps causing index rebuilds
19
60
- dsync: if mailbox is renamed due to it being invalid, its subscription
21
- LSUB shows subscribed namespace prefix as prefix/, also SUBSCRIBE adds the /
22
62
- sql pool: if async query is pending and sync query is sent and there
23
63
are no more empty connections, it should flush the async query first
24
64
- NTLMv1 and LM should be disabled if disable_plaintext_auth=yes
25
65
- SEARCH SENT*/HEADER/etc. doesn't seem optimized when using with TEXT/BODY
26
66
- dict sql: support ignoring some search key hierarchies (e.g. acl "anyone")
28
- fts-solr: crashes if expunge is done while search is indexing
29
- fts-solr: handle DELETE, RENAME. use mailbox GUIDs (optionally)
32
69
- dotlocking: cleanup should delete stale *.lock files
33
70
- purging seems to be inefficient. run imaptest for a while, get >500
98
134
assertion failed: (file_offset >= log->head->saved_tail_offset)
99
135
- virtual: If last message matching INTHREAD rule gets expunged, the rest of
100
136
the thread doesn't go away
101
- virtual: "Searched n% of the mailbox" gives broken numbers since
102
ctx->seq jumps around. And why is it also returned when fts is enabled
103
along with "Indexed n% of the mailbox"?
104
137
- how do shared mailboxes work with plugins?
105
138
- lazy-expunge, fts, etc.?
106
139
- listescape+acl can't handle shared mailboxes with escape chars
129
162
- recent_uids assert at least with mbox
130
163
- quota fs: Should values returned by quota be divided by the actual
131
164
filesystem block size instead of hardcoded DEV_BSIZE? not with AIX..
132
- mailbox list fs: Listing subscriptions with children return options doesn't
133
work unless iter_is_mailbox() returns the children flags
134
- lucene: handle replacement chars?
138
167
- fts_build_init() assertion failed: (last_uid < last_uid_locked)
139
168
- is locking done right? it reads header without file being locked?
147
176
- sasl bind + auth_bind=yes should probably be doing only sasl binds..
148
177
- support multiple connections for doing auth binds
149
178
- domain lookups which set the base for user lookup
150
- same attribute can't be used for multiple values.
151
- multiple attributes can't be merged to a single value.
152
- multiple value could be joined with specified separator (per-field)
179
- multiple ldap values could be joined into one field with specified
180
separator (e.g. mail_access_groups=%{ldap:gidNumber:,})
153
181
- implement something like:
155
183
uid = %{ldap:uidNumber}
243
265
untrusted computers. Maybe always send [ALERT] about the previous
244
266
read-only login time with IP?
247
- if dovecot-uidlist can't be written, assume the new mails have UIDs
248
beginning from uidlist.next_uid. Whenever mails are expunged, overwrite
249
the next_uid field with the current highest next_uid. Whenever we have
250
assumed UIDs and uidlist gets updated, throw the client out with
254
269
- add setting: ssl_options = bitmask. by default we enable all openssl
255
270
workarounds, this could be used to disable some of them
260
275
- message_search_init() could accept multiple search keywords so we
261
276
wouldn't need to call it separately for each one (so we wouldn't need
262
277
to parse the message multiple times).
263
- could optionally support scanning inside file attachments and use
264
plugins to extract text out of them (word, excel, pdf, etc. etc.)
265
278
- Create our own extension: When searching with TEXT/BODY, return
266
279
the message text surrounding the keywords just like web search engines
267
280
do. like: SEARCH X-PRINT-MATCHES TEXT "hello" -> * SEARCH 1 "He said: