dovecot-2.0: Released v2.0.beta3.

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 20 19:05:36 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/81e79df3fed8
changeset: 10798:81e79df3fed8
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Feb 20 18:30:28 2010 +0200
description:
Released v2.0.beta3.

diffstat:

 NEWS         |   3 +
 TODO         |  81 +++++++++++-----------------------------
 configure.in |   2 +-
 3 files changed, 26 insertions(+), 60 deletions(-)

diffs (181 lines):

diff -r aaa6d5a58b2b -r 81e79df3fed8 NEWS
--- a/NEWS	Sat Feb 20 18:29:55 2010 +0200
+++ b/NEWS	Sat Feb 20 18:30:28 2010 +0200
@@ -4,6 +4,8 @@
 	  if you previously had INBOX. namespace prefix and a global ACL for
 	  "INBOX.Sent", it's now looked up from "INBOX.Sent" file instead of
 	  "Sent" as before.
+	* Maildir: File permissions are no longer based on dovecot-shared file,
+	  but the mailbox directory.
 
 	+ Redesigned master process. It's now more modular and there is less
 	  code running as root.
@@ -15,6 +17,7 @@
 	  functions. Old dovecotpw and *view utilities now exist in its
 	  subcommands.
 	+ imap and pop3 processes can now handle multiple connections.
+	+ IMAP: COMPRESS=DEFLATE is supported by imap_zlib plugin
 
 v1.2.6 2009-10-05  Timo Sirainen <tss at iki.fi>
 
diff -r aaa6d5a58b2b -r 81e79df3fed8 TODO
--- a/TODO	Sat Feb 20 18:29:55 2010 +0200
+++ b/TODO	Sat Feb 20 18:30:28 2010 +0200
@@ -1,77 +1,55 @@
- - update wiki/Namespaces
+ - config process is handling requests too slowly. maybe add some caching.
+ - config: ssl=no, ssl_cert=</not-exists fails everything
  - protocol lda { userdb { ..} }
- - auth penalty tracking shouldn't penalize if same user+pass combo keeps
-   doing it. or penalize only when client disconnects before having finished
-   waiting?
- - imap: maildir_copy_with_hardlinks=no COPY to same mailbox crashes
  - master users: see how it works with anvil / max connection limits / doveadm who
- - imap-login: Panic: file auth-server-connection.c: line 395 (auth_server_connection_connect): assertion failed: (conn->fd == -1)
 
- - mail_full_filesystem_access=yes + mbox + :INDEX=../%u -> indexes don't go there
  - virtual: removed messages don't get expunged unless EXPUNGE is issued in
    same session. otherwise they get forgotten and never removed.
- - dsync: dovecot ml mbox -> mdbox(es) created by TB imap login -> crashes
- - dsync: subscriptions listing probably should use DROP_ALIASES flag
- - dsync: handle mailbox name conflicts. local-worker's create() probably
-   should fallback to creating name-<guid>
- - only maildir writes mailbox/dir deletions to changelog
- - multiple connections in one process -> mbox fcntl locking problems!
- - create something similar to dovecot-2.0-sieve/src/lib-sieve-tool/mail-raw.c
-   so sieve and deliver can share the code
- - mbox: FETCH (X-GUID BODY.PEEK[]) and similar crashes..
-   in x-guid do a read-only sync that updates the MD5 values and doesn't unlock
-   mbox
  - mdbox
-    - can't delete \noselect mailboxes
-    - CREATE INBOX/dbox-Mails -> OK
-    - mdbox_rotate_min_size isn't actually used anywhere. is rotate days also
-      seeing the right create date (from header)?
+    - storage rebuild can't be done in destroy(), namespaces are gone by then
+        - use mailbox_close(). check that no transactions are open. maybe
+	  something like only when mailbox_count == 1?
     - Add some kind of checksum about data+metadata and use it when checking
       consistency
     - single-dbox is still buggy?
     - dbox: we get back to dbox_sync_file() over and over again when expunging..
       especially with a broken guid expunge, it doesn't go away.
-    - mailbox deletion: another process could have the mailbox open and append
-      new mails while we're deleting it..
-    - save: if we know mail's size, don't write it to files if file would
-      grow too large
- - see if settings.[ch] can be merged with config/ code.
+    - figure out a way to efficiently trigger purging when user has too much
+      mail expunged (e.g. keep track of total storage size, trigger purging
+      when it's 2*quota limit)
+    - keep track of total bytes in dbox storage in map header. also if
+      possible keep track of refcount=0 bytes. use these to optimize checks.
+    - save some stuff to map index header so we don't need to keep retrying
+      it. like when saving the lowest file_id which to bother checking.
+    - test crash-fixing
+    - mail_index_fsck() should perhaps cause dbox to be resynced?
  - maildir: out-of-disk-space failures apparently cause all kinds of
    problems, e.g. "Expunged message reappeared", "Duplicate file entry"?
  - quota_warn: add $QUOTA_LIMIT environment or %variable parameter
  - deliver -r <address> used as autoreplies' From-address?
  - add fd limit checks/warnings
- - config: ssl=no, ssl_cert=</not-exists fails everything
  - expire plugin could support also "archive" operation = move to another mailbox
  - istream-seekable is inefficient. it shouldn't be reading the temp file
    immediately after writing to it
 
- - config process is handling requests too slowly. maybe add some caching.
  - dsync:
    - subscriptions syncing doesn't handle mixed hierarchy separators
-   - mailbox list GUID isn't replicated, but does it need to be?
-     - the whole dir GUIDs are probably unnecessary. just handle them similarly
-       to subscriptions? mailbox changelog would track dir create/delete/rename
-   - handle INBOX GUID conflicts.
+   - are \noselect mailboxes replicated correctly?
+   - Can't rename mailbox INBOX_019acf2169c5784b307f000074ccac23 to INBOX: Target mailbox already exists
    - copying: does it work correctly with non-full syncs?
-    - "backup mode" where one side is read-only and other side gets forced
-      everything exactly as they're in read-only side, even if backup side had
-      done some changes of its own
+   - "backup mode" where one side is read-only and other side gets forced
+     everything exactly as they're in read-only side, even if backup side had
+     done some changes of its own
    - superfast mode
 
  - lda: add some -h 'Header: value' parameter that adds/replaces header
  - ldap: fix multiple-gid support somehow
  - PERMANENTFLAGS returns () with readonly mailboxes, even when private flag
    changes are allowed (because index is stored elsewhere)
- - config protocol should tell after lookups if there's something more specific
-   also available so login process wouldn't have to do config lookup for
-   each connection if there's no per-IP config.
- - Add mailbox_list_create_dir() and remove bool directory from mailbox_create()
  - search: use mail_get_parts() only when it's already cached. if it's not,
    add it to cache afterwards.
- - check v.copy() failure handling. now they leak memory?
- - COPY: Don't do time() for every 100 msgs, do it dynamically. dbox is fast!
  - move ssl proxying code to lib-master
+ - proxy: verify ssl cert's cname
  - o_stream_set_file_path()
  - dict pooling
 
@@ -80,15 +58,9 @@
 	//FIXME:i_assert((t->flags & MAIL_INDEX_TRANSACTION_FLAG_EXTERNAL) != 0);
   ^ appears to work now though, probably because of the added syncing stuff..
 
- - dbox: keep track of total bytes in dbox storage in map header. also if
-   possible keep track of refcount=0 bytes. use these to optimize checks.
- - dbox: save some stuff to map index header so we don't need to keep retrying
-   it. like when saving the lowest file_id which to bother checking.
  - transaction log corruption should make sure dovecot.index is rewritten
    and perhaps not delete the file.
- - dbox: test crash-fixing
  - use backup index in mail_index_fsck()
- - dbox: mail_index_fsck() should perhaps cause dbox to be resynced?
 
  - proxying: support fallbacking to local (or other?) server if the first
    one is down
@@ -112,7 +84,7 @@
     - read the entire file to memory only once and keep it there, stat() later
       to see if it has changed. if not, perhaps don't even bother stat()ing
       dovecot-acl files? at least not that often..
- - add anonymous environment for anon logins
+ - add anonymous environment for anon logins (for managesieve mainly)
  - fs quota: getquotaroot inbox vs. other-box should return different quotas
    if two quotas are defined
  - lda: log mailbox name using utf8, not mutf7
@@ -133,8 +105,6 @@
  - expire plugin: log more with mail_debug=yes
   - expire-tool -v could log UID and expire timestamps and what messages got
     expunged
- - dict quota: syncing may cause quota recalculation, which in turn syncs
-   all mailboxes and then we'll assert-crash to avoid infinite looping
  - fts-squat: support ORs
  - UIDVALIDITY changed while saving -> sync errors
    - mbox: copy to Trash, manually delete copied msg, change uidvalidity,
@@ -188,14 +158,7 @@
    - physical separator could be configurable
    - lda+maildir: if new mails are in new/ or cur/ they're not added to
      dovecot-uidlist but newly saved mails are, so UIDs will be in wrong order
-   - maildir_copy_with_hardlinks: We're currently first hardlinking to tmp/ and
-     then rename()ing. This wouldn't be necessary if uidlist syncing noticed
-     that someone else already had added them to uidlist, and the existing UIDs
-     could be assigned to them in the index.
-       - copying should copy already-cached data
-   - maildir_copy_preserve_filename=yes has a race condition causing "Append with
-     UID n, but next_uid = y" errors when quota plugin is loaded. Practically
-     won't happen except in stress testing.
+   - maildir_copy_with_hardlinks: copy already-cached data
 
  - mbox
    - UID renumbering doesn't really work after all?
diff -r aaa6d5a58b2b -r 81e79df3fed8 configure.in
--- a/configure.in	Sat Feb 20 18:29:55 2010 +0200
+++ b/configure.in	Sat Feb 20 18:30:28 2010 +0200
@@ -1,5 +1,5 @@
 AC_PREREQ([2.59])
-AC_INIT([Dovecot],[2.0.beta2],[dovecot at dovecot.org])
+AC_INIT([Dovecot],[2.0.beta3],[dovecot at dovecot.org])
 AC_CONFIG_SRCDIR([src])
 
 AM_INIT_AUTOMAKE([foreign])


More information about the dovecot-cvs mailing list