~ubuntu-branches/ubuntu/wily/dovecot/wily

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Package Import Robot
  • Author(s): Jaldhar H. Vyas
  • Date: 2013-09-09 00:57:32 UTC
  • mfrom: (1.13.11)
  • mto: (4.8.5 experimental) (1.16.1)
  • mto: This revision was merged to the branch mainline in revision 97.
  • Revision ID: package-import@ubuntu.com-20130909005732-dn1eell8srqbhh0e
Tags: upstream-2.2.5
ImportĀ upstreamĀ versionĀ 2.2.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 - dsync: delete foo, rename bar foo -> foo, foo-temp-1
 
2
 - dsync+imapc:
 
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
 
5
       back to it)
 
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]
 
10
       to match messages.
 
11
     - why does it use separate FETCH INTERNALDATE + FETCH BODY[HEADER]
 
12
 
 
13
 - virtual plugin doesn't verify the index file's data, crashes if broken.
 
14
 - imapc {} groups
 
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
 
18
   already done?
 
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
 
31
 - LAYOUT=index:
 
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
 
39
 
 
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
 
61
   TOs.
 
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
5
69
 - imapc:
9
73
   so mail_storage_settings are copied to mail_namespace_settings. use the
10
74
   change tracking to figure out what settings are namespace-specific.
11
75
 
12
 
 - imap: list (special-use recursivematch) "" % doesn't work
 
76
 - doveadm import: add -d parameter to deduplicate mails based on their GUID
 
77
   (or perhaps do it by default?)
 
78
 - sdbox: altmoving is done with mailbox locked. that's not necessary, it could
 
79
   do the copying while unlocked and delete the primary files while locked
13
80
 - passdb, userdb { username_format } that doesn't permanently change
14
81
   the username
15
82
 - mdbox/sdbox index rebuild -> quota rebuild?
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,
29
95
      e.g. %
30
 
    - mailbox_get_metadata(guid) could be optimized
31
96
    - virtual could use it to avoid keeping all mailboxes open
32
 
 - check:
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
 
104
       multiple mailboxes
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
59
124
   from lib-index
60
 
 - dsync: if mailbox is renamed due to it being invalid, its subscription
61
 
   isn't renamed
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.
67
133
 
68
134
 - mdbox
69
135
    - dotlocking: cleanup should delete stale *.lock files
88
154
 - maildir: out-of-disk-space failures apparently cause all kinds of
89
155
   problems, e.g. "Expunged message reappeared", "Duplicate file entry"?
90
156
 - deliver -r <address> used as autoreplies' From-address?
91
 
 - add fd limit checks/warnings
92
157
 - istream-seekable is inefficient. it shouldn't be reading the temp file
93
158
   immediately after writing to it
94
159
 - config process is handling requests too slowly. maybe add some caching.
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..
100
165
 
101
 
 - dsync:
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.
110
 
 
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
116
169
 - dict pooling
117
170
 
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..
122
175
 
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()
126
 
 
127
177
 - proxying: support fallbacking to local (or other?) server if the first
128
178
   one is down
129
179
 - i_panic("Message count decreased") happens - why?
130
180
     - at least one backtrace shows client_destroy -> client_command_cancel ->
131
181
       imap_sync_deinit
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?
145
192
      dovecot-acl files? at least not that often..
146
193
 - fs quota: getquotaroot inbox vs. other-box should return different quotas
147
194
   if two quotas are defined
148
 
 - new primes code: are hash tables now being resized too often?
149
195
 - auth_log_prefix setting similar to mail_log_prefix
150
196
 
151
197
 - thread indexes: if we expunge a duplicate message-id: and we have a sibling
186
232
       }
187
233
 
188
234
 - maildir+pop3 fast updates:
189
 
   - with locking enabled, pop3 could just keep the one and same sync lock and
190
 
     do the whole thing using sync transaction
191
235
   - don't update dovecot-uidlist if dovecot.index.cache doesn't exist /
192
236
     there's nothing to cache
193
237
   - if all messages are expunged and there are no unknown extensions in index,
233
277
    - COPY doesn't work to itself (lock assert crash, for now just disallowed)
234
278
 
235
279
 - index
236
 
    - read-only support for mailboxes where we don't have write-access
237
280
    - index file format changes:
238
281
        - split to "old" and "new" indexes and try to avoid loading "old" into
239
282
          memory until needed