~ubuntu-branches/ubuntu/utopic/dovecot/utopic-proposed

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-01-08 09:35:49 UTC
  • mfrom: (4.1.35 sid)
  • Revision ID: package-import@ubuntu.com-20140108093549-i72o93pux8p0dlaf
Tags: 1:2.2.9-1ubuntu1
* Merge from Debian unstable, remaining changes:
  + Add mail-stack-delivery package:
    - Update d/rules
    - d/control: convert existing dovecot-postfix package to a dummy
      package and add new mail-stack-delivery package.
    - Update maintainer scripts.
    - Rename d/dovecot-postfix.* to debian/mail-stack-delivery.*
    - d/mail-stack-delivery.preinst: Move previously installed backups and
      config files to a new package namespace.
    - d/mail-stack-delivery.prerm: Added to handle downgrades.
  + Use Snakeoil SSL certificates by default:
    - d/control: Depend on ssl-cert.
    - d/dovecot-core.postinst: Relax grep for SSL_* a bit.
  + Add autopkgtest to debian/tests/*.
  + Add ufw integration:
    - d/dovecot-core.ufw.profile: new ufw profile.
    - d/rules: install profile in dovecot-core.
    - d/control: dovecot-core - suggest ufw.
  + d/dovecot-core.dirs: Added usr/share/doc/dovecot-core
  + Add apport hook:
    - d/rules, d/source_dovecot.py
  + Add upstart job:
    - d/rules, d/dovecot-core.dovecot.upstart, d/control,
      d/dovecot-core.dirs, dovecot-imapd.{postrm, postinst, prerm},
      d/dovecot-pop3d.{postinst, postrm, prerm}.
      d/mail-stack-deliver.postinst: Convert init script to upstart.
  + Use the autotools-dev dh addon to update config.guess/config.sub for
    arm64.
* Dropped changes, included in Debian:
  - Update Dovecot name to reflect distribution in login greeting.
  - Update Drac plugin for >= 2.0.0 support.
* d/control: Drop dovecot-postfix package as its no longer required.

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
     - 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]
 
7
       to match messages.
 
8
     - why does it use separate FETCH INTERNALDATE + FETCH BODY[HEADER]
 
9
 
 
10
 - virtual plugin doesn't verify the index file's data, crashes if broken.
 
11
 - imapc {} groups
 
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
 
15
   already done?
 
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
 
28
 - LAYOUT=index:
 
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
 
36
 
 
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
 
58
   TOs.
 
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
5
66
 - imapc:
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.
11
72
 
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
14
78
   the username
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,
29
92
      e.g. %
30
 
    - mailbox_get_metadata(guid) could be optimized
31
93
    - virtual could use it to avoid keeping all mailboxes open
32
 
 - check:
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
 
101
       multiple mailboxes
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
59
117
   from lib-index
60
 
 - dsync: if mailbox is renamed due to it being invalid, its subscription
61
 
   isn't renamed
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.
67
126
 
68
127
 - mdbox
69
128
    - dotlocking: cleanup should delete stale *.lock files
88
147
 - maildir: out-of-disk-space failures apparently cause all kinds of
89
148
   problems, e.g. "Expunged message reappeared", "Duplicate file entry"?
90
149
 - deliver -r <address> used as autoreplies' From-address?
91
 
 - add fd limit checks/warnings
92
150
 - istream-seekable is inefficient. it shouldn't be reading the temp file
93
151
   immediately after writing to it
94
152
 - config process is handling requests too slowly. maybe add some caching.
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..
100
158
 
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
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
116
162
 - dict pooling
117
163
 
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..
122
168
 
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()
126
 
 
127
170
 - proxying: support fallbacking to local (or other?) server if the first
128
171
   one is down
129
172
 - i_panic("Message count decreased") happens - why?
130
173
     - at least one backtrace shows client_destroy -> client_command_cancel ->
131
174
       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
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?
145
185
      dovecot-acl files? at least not that often..
146
186
 - fs quota: getquotaroot inbox vs. other-box should return different quotas
147
187
   if two quotas are defined
148
 
 - new primes code: are hash tables now being resized too often?
149
188
 - auth_log_prefix setting similar to mail_log_prefix
150
189
 
151
190
 - thread indexes: if we expunge a duplicate message-id: and we have a sibling
186
225
       }
187
226
 
188
227
 - 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
228
   - don't update dovecot-uidlist if dovecot.index.cache doesn't exist /
192
229
     there's nothing to cache
193
230
   - if all messages are expunged and there are no unknown extensions in index,
233
270
    - COPY doesn't work to itself (lock assert crash, for now just disallowed)
234
271
 
235
272
 - index
236
 
    - read-only support for mailboxes where we don't have write-access
237
273
    - index file format changes:
238
274
        - split to "old" and "new" indexes and try to avoid loading "old" into
239
275
          memory until needed