Changes in Dovecot 1.2.5:
* Authentication: DIGEST-MD5 and RPA mechanisms no longer require
user's login realm to be listed in auth_realms. It only made
configuration more difficult without really providing extra security.
* zlib plugin: Don't allow clients to save compressed data directly.
This prevents users from exploiting (most of the) potential security
holes in zlib/bzlib.
+ Added pop3_save_uidl setting.
+ dict quota: When updating quota and user isn't already in dict,
recalculate and save the quota.
- file_set_size() was broken with OSes that didn't support
posix_fallocate() (almost everyone except Linux), causing all kinds
of index file errors.
- v1.2.4 index file handling could have caused an assert-crash
- IMAP: Fixes to QRESYNC extension.
- virtual plugin: Crashfix
- deliver: Don't send rejects to any messages that have Auto-Submitted
header. This avoids emails loops.
- Maildir: Performance fixes, especially with maildir_very_dirty_syncs.
- Maildir++ quota: Limits weren't read early enough from maildirsize
file (when quota limits not enforced by Dovecot)
- Message decoding fixes (mainly for IMAP SEARCH, Sieve).
Edgar Fuss <ef@math.uni-bonn.de>.
Changes in Dovecot 1.2.4:
* acl: When looking up ACL defaults, use global/local default files if they
exist. So it's now possible to set default ACLs by creating dovecot-acl file
to the mail root directory.
+ imap/pop3 proxy: If proxy destination is known to be down, fail connections
to it immediately.
+ imap/pop3 proxy: Added proxy_timeout passdb extra field to specify proxy's
connect timeout.
- Fixed a crash in index file handling.
- Fixed a crash in saving messages where message contained a CR character that
wasn't followed by LF (and the CR happened to be the last character in an
internal buffer).
- v1.2.3 crashed when listing shared namespace prefix.
- listescape plugin: Several fixes.
- autocreate plugin: Fixed autosubscribing to mailboxes in subscriptions=no
namespaces.
Changes in Sieve 0.1.12:
+ Testsuite: added support for testing binaries stored on disk.
+ Implemented the new date extension. This allows matching against date values
in header fields and the current date at the time of script evaluation.
Changes in ManageSieve 0.11.9:
* Adjusted to changes in the Dovecot login proxy API. This release therefore
depends on Dovecot v1.2.4.
+ Reintroduced ability to abort SASL with "*" response. Latest ManageSieve
specification includes it.
from Edgar Fuss <ef@math.uni-bonn.de>.
Changes in Dovecot 1.2.2:
* GSSAPI: More changes to authentication. Hopefully good now.
* lazy_expunge plugin: Drop \Deleted flag when moving message.
+ dovecot -n/-a now outputs also lda settings.
+ dovecot.conf !include now supports globs (e.g.
!include /etc/dovecot/*.conf). Based on patch by Thomas Guthmann.
+ acl: Support spaces in user/group identifiers.
+ shared mailboxes: If only %%n is specified in prefix, default to
current user's domain.
- Dovecot master process could hang if it received signals too rapidly.
- Fixed "corrupted index cache file" errors (and perhaps others) caused
by e.g. IMAP's FETCH BODY[] command.
- IMAP: When QRESYNC is enabled, don't crash when a new mail is
received while IDLEing.
- IMAP: FETCH X-* parameters weren't working.
- Maildir++ quota: Quota was sometimes updated wrong when it was
being recalculated.
- Searching quoted-printable message body internally converted "_"
characters to spaces and didn't match search keys with "_".
- Messages in year's first/last day may have had broken timezones
with OSes not having struct tm->tm_gmtoff (e.g. Solaris).
- virtual plugin: If another session adds a new mailbox to index,
don't crash.
Changes in Dovecet 1.2.3:
* Mailbox names with control characters can't be created anymore.
Existing mailboxes can still be accessed though.
+ Allow namespace prefix to be opened as mailbox, if a mailbox
already exists in the root dir.
- Maildir: dovecot-uidlist was being recreated every time a mailbox
was accessed, even if nothing changed.
- listescape plugin was somewhat broken
- Compiling fixes for non-Linux/BSDs
- imap: tb-extra-mailbox-sep workaround was broken.
- ldap: Fixed hang when >128 requests were sent at once.
- fts_squat: Fixed crashing when searching virtual mailbox.
- imap: Fixed THREAD .. INTHREAD crashing.
Changes in Sieve 0.1.10:
* Changed action execution of fileinto and keep. These changes
depend on API additions in Dovecot, making this release depend on
Dovecot v1.2.2 or newer.
* Further developed the sieve-filter command line tool. This
required a few changes to the action execution of the Sieve
engine. The tool was successfully tested on folders with a few
100k spam messages. However, the commandline options are still
incomplete, a man page is missing and it needs much more testing
before I can recommend anyone to use this tool.
+ Added support for the mailbox extension. This allows checking
whether a mailbox exists using the mailboxexists command and it
adds the :create argument to the fileinto command to create the
mailbox when it is missing. The :create feature is useless unless
the Deliver LDA is run with the -n option.
+ Improved the testsuite with tests for message delivery. Messages
stored using keep and fileinto can be fed back into the Sieve
engine for verification. This includes testing of applied IMAP
flags.
+ Updated the man pages with the new method of specifying the
supported extensions using + and - (for the -x parameter of the
sieve tools)
+ Further developed the deprecated notify extension. A dummy for the
denotify command exists, meaning that its use does not cause an
error anymore.
- Fixed a bug in the derivation of the binary path from the script
path. A bare filename would yield a path relative to root.
- Fixed a bug in the value matching code. The context data now uses
a proper pool in stead of the data stack. Bug reported by Jan
Sechser.
- Fixed assertion fail in the include extension caused by missing
initialization upon binary load. This bug surfaces only for stored
binaries. Bug reported by Tom Hendrikx.
- Fixed include error message for failed :global include. It
mentioned the wrong config parameter.
- Fixed broken wiki reference in an error message of the plugin
about the 'sieve' setting.
- Fixed behavior of fileinto when delivering into a namespace
prefix. Previous fix used the wrong storage.
Changes in Sieve 0.1.11:
+ Built skeleton implementation for the date extension (RFC5260).
It compiles, but it does not do anything useful yet. Therefore, it
is not part of the default compilation.
- Fixed ARM portability issues caused by char type not being signed
on that platform. Reading optional operands from a binary would
fail for action side effects. Also, an accidental mixup of an int
return type with bool caused the interpreter to continue on ARM
even though an error occured.
- Removed direct stdint.h includes to prevent portability issues.
- Fixed segfault bug in the handling of script open failures.
- Include: improved user error messages and system log messages.
- Fixed copy-paste mixup between sieve_after and sieve_before
settings in the LDA Sieve plugin. If only a sieve_after script was
active, nothing would have been executed. Patch by Mike Abbott.
- Include: fixed a bug in HOME substitution in the sieve_dir path.
Surfaced in ManageSieve.
Changelog ManageSieve v0.11.8:
- Fixed TLS support for proxying ManageSieve. The protocol state
machine was incorrect. Also added a check that disables ssl when
'starttls' is not enabled for the user. This produces a proper
warning in the log file. There is no such thing as a managesieveS
protocol which has SSL from the start.
Changelog for Dovecot 1.2.1: Mainly fixes to some issues found by people when
upgrading to v1.2.0.
* GSSAPI: Changed logging levels and improved the messages. Changed the way
cross-realm authentication handling is done, hopefully it's working now for
everyone.
* imap/pop3 logins now fail if home directory path is relative. v1.2.0 deliver
was already failing with these and they could have caused problems even with
v1.1.
* IMAP: Custom authentication failure messages are now prefixed with [ALERT] to
get more clients to actually show them.
+ Improved some error messages.
- pop3: AUTH PLAIN was broken when SASL initial response wasn't given.
- mbox: New mailboxes were created with UIDVALIDITY 1.
- quota-fs was defaulting to group quota instead of user quota.
- Fixed ACLs to work with mbox.
- Fixed fchmod(-1, -1) errors with BSDs
- convert plugin / convert-tool: Fixed changing hierarchy separators in mailbox
names when alt_hierarchy_char isn't set.
Changelog for Sieve v0.1.8:
- Fixed AIX compile problem. For portability, the typeof operator is not used
anymore.
+ Added partial support for the deprecated notify extension. However, it turns
out that the implementation provided by cmusieve is even older (2001),
meaning that this is currently not backwards compatible with cmusieve. Should
be fixed in next release.
Changelog for ManageSieve v0.11.7:
* Adjusted to changes in the Dovecot login API. This release now depends on
Dovecot v1.2.1 or newer.
* Incorporated various small changes in IMAP into ManageSieve. This includes
properly enabling the generation of core dumps.
- The previous release implicitly resolved the FreeBSD script truncation error.
This release adds a small correction to the code that detects the truncation.
- Fixed panic occurring when many errors are produced by the Sieve compiler
(bug found by Pascal Volk).
- Fixed memory leak in the PUTSCRIPT command.
(ManageSieve patch)
- Forgot to add the managesieve_logout_format setting to the config file. Now
it works (bug reported by Pascal Volk).
Changes since rc5:
* imap proxy: Pass through to client unexpected untagged replies
from remote server (e.g. alerts).
* Solr: Don't use "any" copyfield, it doubles the index size.
* mail_location: Allow using ":" characters in dir names by escaping
it as "::".
- mbox: Don't crash with invalid From_-lines.
- IMAP: Don't crash if IDLE command is pipelined after a long-running
UID FETCH or UID SEARCH.
- ACL / shared mailbox fixes
- Some metadata files were incorrectly getting 0666 permissions.
Changes since rc6:
* Removed configure --with-deliver, --with-pop3d and --disable-ipv6
parameters.
+ Improved permission related error messages.
- mbox: Don't write garbage to mbox if message doesn't have a body.
- virtual: Fixed saving messages with keywords.
- virtual: Fixed infinite looping bug.
- zlib: Fixed error handling.
Changes since rc7:
- Fixed building LDAP as plugin
- Fixed starting up in OS X
Changelog Sieve v0.1.7:
+ Improved consistency of sieve tool documentation and fixed missing
parameters in internal tool help output.
+ Enhanced extensions configuration, allowing to specify the enabled
extensions relatively to the default (patch by Steffen Kaiser).
- Forgot to initialize script execution status in Sieve plugin, causing
segfaults on compile errors in specific conditions.
- Fixed logging in Sieve plugin for execution of default main script
(went to STDERR).
Changelog ManageSieve v0.11.6:
* Adjusted to changes in Dovecot regarding client idle timeout
vs authentication timeout. This release now depends on Dovecot
v1.2.rc6 or newer.
- Fixed CRLF line breaks in compile errors (bug reported by Pascal
Volk).
- Corrected directory/file creation behavior with respect to mode bits
and gid (bug reported by Pascal Volk).
- Improved handling of script truncation bugs: connection is now closed
and and error is logged (bug itself not fixed yet).
- Prevented temp script name from showing up in error output.
v1.2.rc5 2009-06-04 Timo Sirainen <tss@iki.fi>
* auth_cache_negative_ttl is now used also for password mismatches
(currently only with plaintext authentication mechanisms).
+ Added support for EXTERNAL SASL mechanism.
+ FETCH X-SAVEDATE can now be used to get messages' save timestamps
+ deliver_log_format: %s is now in UTF8
- If message body started with a space, some operations could have
assert-crashed.
- Fixed using LDAP support as a plugin
- Fixes to virtual mailboxes.
v1.2.rc4 2009-05-17 Timo Sirainen <tss@iki.fi>
* If /dev/arandom exists, use it instead of /dev/urandom (OpenBSD).
* When logging to a file, the lines now start with a timestamp instead
of "dovecot: " prefix.
+ IMAP: When multiple commands are pipelined, try harder to combine
their mailbox syncing together. For example with Maildir pipelining
STORE 1:* +FLAGS \Deleted and EXPUNGE commands the files won't
be unnecessarily rename()d before being unlink()ed.
+ imap-proxy: Send backend's CAPABILITY if it's different from what
was sent to client before.
+ IMAP: struct mail now keeps track of all kinds of statistics, such
as number of open()s, stat()s, bytes read, etc. These fields could
be exported by some kind of a statistics plugin (not included yet).
+ IMAP: SEARCH command now dynamically figures out how to run about
0.20 .. 0.25 seconds before seeing if there's other work to do.
This makes the SEARCH performance much better.
- Fixes to shared mailbox handling.
- Fixes to virtual mailboxes.
- THREAD command could have crashed.
- Fixes to expire-tool.
- mbox: Don't break if From_-line is preceded by CRLF (instead of LF).
- dict process wasn't restarted after SIGHUP was sent to master.
v1.2.rc3 2009-04-16 Timo Sirainen <tss@iki.fi>
* IMAP proxy no longer simply forwards tagged reply from
remote authentication command. It's now done only if the remote
server sent a [resp-code], otherwise all failure strings are
converted to Dovecot's "Authentication failed." to make sure that
if remote isn't using Dovecot it won't reveal user's existence.
+ Quota roots can now specify which namespace's quota they're
tracking. This is probably the most useful for giving public
namespaces a quota.
+ Added imap_idle_notify_interval setting.
- Fixes to shared mailbox handling
- Fixes to virtual mailboxes
- Fixed compiling with some FreeBSD and NetBSD versions
- THREAD REFS still might have returned one (0) at the beginning.
- deliver wasn't using mail_access_groups setting.
- Fixed some error handling in maildir and index code.
v1.2.rc2 2009-04-03 Timo Sirainen <tss@iki.fi>
- rquota.x file was missing from rc1 distribution, causing compiling
to fail.
v1.2.rc1 2009-04-03 Timo Sirainen <tss@iki.fi>
* When creating files or directories to mailboxes, Dovecot now uses
the mailbox directory's permissions and GID for them. Previous
versions simply used 0600 mode always. For backwards compatibility
dovecot-shared file's permissions still override these with Maildir.
* SQL dictionary (quota) configuration file is different than in v1.1.
See doc/dovecot-dict-sql-example.conf for the new format.
* deliver -m: Mailbox name is now assumed to be in UTF-8 format,
not modified-UTF7. Stephan Bosch's new Sieve implementation also
assumes UTF-8 format in fileinto parameters.
+ Full support for shared mailboxes and IMAP ACL extension.
The code is mainly from Sascha Wilde and Bernhard Herzog.
+ IMAP: Added support for extensions: CONDSTORE, QRESYNC, ESEARCH,
ESORT, SEARCHRES, WITHIN, ID and CONTEXT=SEARCH.
+ SEARCH supports INTHREAD search key, but the rest of the INTHREAD
draft isn't implemented yet so it's not advertised in capability.
+ THREAD REFS algorithm where threads are sorted by their latest
message instead of the thread root message. There is also no base
subject merging.
+ IMAP: Implemented imap-response-codes draft.
+ Thread indexes for optimizing IMAP THREAD command and INTHREAD
search key.
+ Added userdb checkpassword (by Sascha Wilde)
+ Virtual mailboxes: http://wiki.dovecot.org/Plugins/Virtual
+ Autocreate plugin: http://wiki.dovecot.org/Plugins/Autocreate
+ Listescape plugin: http://wiki.dovecot.org/Plugins/Listescape
+ Added userdb checkpassword (by Sascha Wilde)
+ Autocreate plugin: http://wiki.dovecot.org/Plugins/Autocreate
+ Listescape plugin: http://wiki.dovecot.org/Plugins/Listescape
- All the same fixes as for v1.1.5:
* Dovecot prints an informational message about authentication problems
at startup. The message goes away after the first successful
authentication. This hopefully reduces the number of "Why doesn't
my authentication work?" questions.
+ Maildir/dbox: Try harder to assign unique UIDVALIDITY values to
mailboxes to avoid potential problems when recreating or renaming
mailboxes. The UIDVALIDITY is tracked using dovecot-uidvalidity*
files in the mail root directory.
+ Many logging improvements
- In some conditions Dovecot could have stopped using existing cache
file and never used it again until it was deleted.
- pop3 + Maildir: Make sure virtual sizes are always written to
dovecot-uidlist. This way if the indexes are lost Dovecot will never
do a huge amount of work to recalculate them.
- mbox: Fixed listing mailboxes in namespaces with prefix beginning
with '~' or '/' (i.e. UW-IMAP compatibility namespaces didn't work).
- dict quota: Don't crash when recalculating quota (when quota warnings
enabled).
- Fixes to handling "out of disk space/quota" failures.
- Blocking passdbs/userdbs (e.g. PAM, MySQL) could have failed lookups
sometimes when auth_worker_max_request_count was non-zero.
- Fixed compiling with OpenBSD
Changes since 1.1rc11:
rc12:
- mbox: Don't give "Can't find next message offset" warnings when
plugin (e.g. quota) accesses the message being saved.
- deliver: Settings inside protocol imap {} weren't ignored.
rc13:
- mbox: Fixed a crash when adding a new X-IMAPbase: header with
keywords.
- Message parser: Fixed assert-crash if cached MIME structure was
broken.
- Squat: Potential crashfix with mmap_disable=3Dyes.
Major changes since 1.0:
* After Dovecot v1.1 has modified index or dovecot-uidlist files,
they can't be opened anymore with Dovecot versions earlier than
v1.0.2.
* See doc/wiki/Upgrading.1.1.txt (or for latest changes,
http://wiki.dovecot.org/Upgrading/1.1) for list of changes since
v1.0 that you should be aware of when upgrading.
+ IMAP: Added support for UIDPLUS and LIST-EXTENDED extensions.
+ IMAP SORT: Sort keys are indexed, which makes SORT commands faster.
+ When saving messages, update cache file immediately with the data
that we expect client to fetch later.
+ NFS caches are are flushed whenever needed. See mail_nfs_storage and
mail_nfs_index settings.
+ Out of order command execution (SEARCH, FETCH, LIST), nonstandard
command cancellation (X-CANCEL <tag>)
+ IMAP: STATUS-IN-LIST draft implementation
+ Expire plugin can be used to keep track of oldest messages in
specific mailboxes. A nightly run can then quickly expunge old
messages from the mailboxes that have them. The tracking is done
using lib-dict, so you can use either Berkeley DB or SQL database.
+ Namespaces are supported everywhere now.
+ Namespaces have new list and subscriptions settings.
+ Full text search indexing support with Lucene and Squat backends.
+ OTP and S/KEY authentication mechanisms (by Andrey Panin).
+ mbox and Maildir works with both Maildir++ and FS layouts. You can
change these by appending :LAYOUT=3Dmaildir++ or :LAYOUT=3Dfs to
mail_location.
+ LDAP: Support templates in pass_attrs and user_attrs
+ Support for listening in multiple IPs/ports.
+ Quota plugin rewrite: Support for multiple quota roots, warnings,
allow giving storage size in bytes or kilo/mega/giga/terabytes,
per-mailbox quota rules.
+ Filesystem quota backend supports inode limits, group quota and
RPC quota for NFS.
+ SEARCH and SORT finally compare non-ASCII characters
case-insensitively. We use i;unicode-casemap algorithm.
+ Config files support splitting values to multiple lines with \
This is the final v1.1 RC. Tomorrow I'll change only the version number,
update the documentation and call it v1.1.0. But please test this anyway
to make sure I didn't happen to break anything since rc10 :)
- dovecot-uidlist is now recreated if it results in file shrinking
over 25%.
- Some other minor fixes
v1.1.0 will be released on next Friday if nothing horrible happens.
* LIST X-STATUS renamed to LIST STATUS and fixed its behavior with
LIST-EXTENDED options. It's now compatible with STATUS-IN-LIST
draft 00.
- Message parsing could have sometimes produced incorrect results,
corrupting BODY/BODYSTRUCTURE replies and perhaps others.
- SORT: Fixed several bugs
- FreeBSD 7.0: Environment clearing wasn't working correctly.
This caused "environment corrupted" problems at least with deliver
trying to call sendmail and running Dovecot from inetd.
- HP-UX: Several fixes to get it to work (by Christian Corti)
- Fixes to using expire plugin with SQL dictionary.
- dbox fixes
Not many bug reports these last few days, so maybe this release will be
a good one.
+ Maildir: When hardlink-copying a file, copy the W=<vsize> in the
filename if it exists in the original filename.
- mbox: With rc8 empty lines were inserted in the middle of saved
mails' headers.
- maildir: Fixed problems with opening newly saved messages which we
saw in index file but couldn't see in dovecot-uidlist. Happened only
when messages weren't saved via Dovecot (deliver or IMAP).
- Several bugfixes to handling sort indexes
- deliver: Boolean settings that were supposed to default to "yes" were
set to "no" unless explicitly defined in dovecot.conf:
dotlock_use_excl, maildir_copy_with_hardlinks, mbox_dirty_syncs,
mbox_lazy_writes.
I then decided to add the deliver -p feature to this release. Seems to
work in my tests, but who knows if it breaks something.. Although most
of the code is called only if -p parameter is given. Anyway we really
should have a comprehensive test suite written some day (yes, help is
really wanted for this :).
So let's hope this is the last RC release. If there aren't any major
problems I'll release v1.1.0 in a couple of weeks.
I'll also try to merge all my different development trees into a single
v1.2 code tree within a few weeks. v1.2.0 will probably be released this
summer as well, since it mainly has new features that don't change
existing code all that much (CONDSTORE is a bit invasive though).
+ deliver: Added -c parameter to provide path to delivered mail.
This allows maildir to save identical mails to multiple recipients
using hard links.
- rc6/rc7 broke POP3 with non-Maildir formats
- mbox: Saving a message without a body or the end-of-headers line
could have caused an assert-crash later.
- Several dbox fixes
This is it. The first v1.1 release that actually deserves the "release
candidate" name. It contains everything I require from v1.1.0 release.
There are two bugs left that I'd like to get fixed, but they won't block
v1.1.0 release:
* index_mailbox_set_recent_uid() assert (reported by Diego Liziero)
* Maildir not always finding new messages and returning them as empty
(reported by Anders).
The major change in v1.1.rc6 release is the SORT indexing half-rewrite.
I hadn't much stress tested that code before, and once I started I just
kept finding more and more weird bugs and it became extremely difficult
to figure out how to fix them, so I finally decided to just redesign how
it's supposed to work and then implemented that.
The resulting sort code is a lot cleaner and it should also perform
better (although it could still be improved a bit: the basic binary
searching could be replaced with one that first binary searches between
already-looked-up sort-strings and only after that binary searches the
resulting space which requires slower sort-string lookups). Hopefully
there are also no stupid bugs left like returning messages in wrong sort
order. :)
I've been wasting time this past week getting new stuff for my new
apartment, but that's nearly done now. I think (hope) I'm going to be
more productive in here, there are less neighbours behind walls/floors
(just 1), so less potential for annoying noises. :) Thinking also seems
to work better when there's more space to walk around.
And finally, the changes since v1.1.rc5:
* Index file format changed a bit. If an older Dovecot v1.1 reads
index files updated by rc6+, they may give "Invalid header record
size" or "ext reset: invalid record size" warnings. v1.0 won't give
these errors.
* IMAP: LIST .. RETURN (X-STATUS) command return now LIST entries
before STATUS entries.
* zlib plugin: Uncompress if the message begins with zlib header
instead of looking at the 'Z' flag. This fixes copying with hard
links. Based on a patch by Richard Platel.
+ IMAP: SORT index handling code was half-rewritten to fix several bugs
when multiple sessions were sorting at the same time. The new code is
hopefully also faster.
+ Maildir: If POP3 UIDL extra field is found from dovecot-uidlist,
it's used instead of the default UIDL format (or X-UIDL: header).
This allows easily preserving UIDLs when migrating from other POP3
servers. Patch by Nicholas Von Hollen @ Mailtrust.
+ Maildir: ,W=<vsize> is now always added to maildir filenames
+ deliver: Avoid reading dovecot-uidlist's contents if possible.
+ Added %T modifier = Trim whitespace from end of string
- IMAP: Fixed some bugs in LIST-EXTENDED implementation.
- IMAP: If client tries to change the selected mailbox state while
another command is still running, wait until the command is finished.
This fixes some crashes and other unwanted behavior.
- allow_nets userdb setting was broken with big endian CPUs
And for rc7:
One extra RC release, just to fix compiling problems with non-Linux OSes.
Nothing else changed since rc6.
I've finally gone through all my unread mails and fixed most of the reported
bugs. There are only a couple ones left that I can't reproduce. Please report
if you still have any problems with rc5, even if you already have reported the
same bug before.
v1.1.rc6 will hopefully be the last RC before v1.1.0.
+ Support cross-realm Kerberos 5 authentication. Based on patch by
Zachary Kotlarek.
+ Added dict_db_config setting to point to a Berkeley DB config file.
+ If mail_chroot ends with "/.", remove chroot prefix from home
directory.
- Fixed several bugs and memory leaks in ACL plugin. LIST and LSUB
may have listed mailboxes where user had no 'l' access. STORE could
have been used to update any flags without appropriate access.
- mbox: Valid-looking From_-lines in message bodies caused the message
to be split to two messages (broken since v1.0).
- Plugin initialization hooks were called in wrong order, possibly
causing problems when multiple plugins were used at the same time.
- Expire plugin was broken
- LIST-EXTENDED options were ignored.
- LDAP: Static attribute names weren't working correctly
- deliver: mail_uid and mail_gid settings weren't used.
- pop3 + maildir++ quota: maildirsize file wasn't created if it
didn't exist already.
- dnotify: Waiting for dotlock to be deleted used 100% CPU
I didn't have time/energy to fix everything I wanted, so it'll probably be a
few more RCs left until v1.1.0. This is anyway an important release, because it
fixes two buffer overflows in search code which have been in all v1.1 releases
(but not v1.0). Really stupid mistakes, I must have been tired or something
when writing the code.. Anyway I now added code to notice these kind of buffer
overflows when they happen (if --enable-debug is used), so hopefully these will
be the last ones.
* Fixed two buffer overflows in str_find_init(). It was used by
SEARCH code when searching for headers or message body. Added code
to catch these kind of overflows when compiling with --enable-debug.
Found by Diego Liziero.
+ LDAP: Added debug_level and ldaprc_path settings (OpenLDAP-only)
+ Squat: Added fts_squat =3D partial=3Dn full=3Dm settings. See the wiki.
- dbox metadata updating fixes.
- quota: backend=3Dn didn't work
- SEARCH RECENT may have returned non-recent messages if index files
were created by v1.0.
- If mailbox was opened as read-only with EXAMINE, STOREs were
permanently saved.
- LDAP: Templates were somewhat broken (by richs at whidbey.net)
Note that the changes for the security hole fix were quite large. I
tested with several auth configurations myself and they seemed to work,
but it's possible I left a bug somewhere in there breaking someone's
configuration. So make sure to test that it works after upgrading.
Of course it would be really nice if Dovecot had a proper test suite
where testing all configurations could be automated and run before each
release. I've already started this with my imaptest tool
(http://imapwiki.org/ImapTest), but it only does IMAP tests and a lot of
things are still missing. Some help would be nice here.
* Fixed a security hole in blocking passdbs (MySQL always. PAM, passwd
and shadow if blocking=yes) where user could specify extra fields
in the password. The main problem here is when specifying
"skip_password_check" introduced in v1.0.11 for fixing master user
logins, allowing the user to log in as anyone without a valid
password.
- mail_privileged_group was broken in some systems (OS X, Solaris?)
- IMAP THREAD: Fixed some correctness problems
Changes since rc1:
* mail_extra_groups setting was commonly used insecurely. This setting
is now deprecated. Most users should switch to using
mail_privileged_group setting, but if you really need the old
functionality use mail_access_groups instead.
+ Expire plugin now supports wildcards in mailbox names.
+ dbox: Expire plugin supports moving old mails to alternative
dbox directory
+ Maildir++ quota: quota_rule=?:<rule> specifies a default rule
which is used only if the maildirsize file doesn't exist.
+ If SSL/TLS connection isn't closed cleanly, log the last error
in the disconnection line.
+ EXPUNGE: If new \Deleted messages were found while expunging,
do it again and expunge them as well (Outlook workaround)
- IMAP: SEARCH, LIST and THREAD command correctness fixes
- Maildir++ quota: Quota rules and warnings with % rules didn't work
if the default limits were taken from maildirsize file.
- Maildir++ quota: If both byte and message limits weren't specified,
maildirsize file was recalculated all the time
- mbox: Flag and keyword updates may have gotten lost in some
situations (happens with v1.0 too)
- ldap: Don't crash if userdb lookup fails
- Squat fixes and performance improvements
Things left to do for v1.1.0:
- dbox has a metadata corruption bug, find and fix it
- Squat has some locking issues that causes errors when stress testing
with multiple connections
- Squat doesn't do NFS cache flushing and has some other NFS problems.
Finally the first v1.1 release candidate. Please test so we can have a
fully stable v1.1.0 release. v1.1.betas are already running in a few
large installations, so I don't expect there to be many bugs left.
There are no release critical bugs left and no known crash bugs. There
are a few issues I'd like to fix before v1.1.0, but I don't expect to
have more than 3-5 release candidates this time (certainly much less
than 31 anyway..)
Changes since beta16:
- ioloop defaults now to best one availablable instead of poll
- IMAP SEARCH correctness fixes
- Fixed proxy_maybe handling with caching and with mysql
- IMAP: ENVELOPE's subject field now always has TABs changed to spaces
- Some crashfixes
From the release announcement mail:
If all goes well, I'll release v1.1.rc1 in a couple of days. Now's a good time
to start testing v1.1 :)
Changes since beta15:
- Squat is finally working and supports expunging messages from it. I've been
stress testing it and can't find any problems anymore.
- Some index/cache crashfixes
TODO for v1.1.0:
- mbox: We write From_-lines to message bodies unescaped and assume
Content-Length: header allows us to skip over them. This probably worked in
v0.99, but got broken when mbox code was rewritten for v1.0. This should be
fixed somehow.
- dbox: fsync()ing isn't done for saved messages.
- maildir: after rename()ing files from tmp/ to new/ we should probably
fsync() the new/ directory.
- Squat: NFS support. Check/fix a potential locking problem.
- Lucene: It gives all kinds of locking errors which cause other problems.
Maybe Dovecot should do the locking itself so Lucene never needs to wait for
locks? Has anyone here used Lucene before and knows about these issues?
Changes in beta14:
Pretty much the same things are in TODO for v1.1.rc1 as there were in beta13.
But there are quite a lot of other changes:
- Added proxy_maybe setting. If the returned IP/port/user points to ourself,
log in normally. Otherwise proxy to the IP.
- Added quota_exceeded_message setting for quota plugin. Add it to plugin {}
for global, or protocol lda {} for deliver-only.
- mysql: default_file and default_group settings (by Luca Longinotti)
- Timeout handling rewritten using a priority queue (heap). Dovecot should now
be able to handle lots of timeouts quite fast.
- Using the new timeout changes several places in code have been changed from
iterate-through-objects-in-one-timeout to timeout-per-object. This means
that there are no longer timeouts triggering every couple of seconds for no
reason. dovecot master and dovecot-auth processes haven't been changed yet.
- deliver without -d parameter: if $USER and $HOME exists, don't do getpwuid()
lookup.
- Maildir locking fix
- Index file performance fixes
- Don't allow RENAME box box/child. It breaks some clients (which do it
themselves..) and there's really no reason to allow it.
- Quota warnings were broken
- Maildir quota didn't use limits from maildirsize if no quota rules were
specified
I'm also thinking about getting rid of the "time moved backwards" error and
change it to a warning. First I'd just need to fix the timeout handling code to
handle time jumps and then verify that all timestamp comparisons can handle it
correctly.
Also besides warning about "time moved backwards" it should warn about "time
moved forwards a lot" where "lot" is probably something like a minute. That
could cause problems with dotlocks just the same as time moving backwards.
Changes in beta15:
- If dovecot master kills itself, the error message is now written to a file
in base_dir as well as to log file. When Dovecot starts the next time it
shows this error message to user and asks to look into error log file. I'm
hoping this will reduce "why dovecot exits silently after starting it?"
questions.
- LDAP: Added tls_* settings for using TLS with OpenLDAP.
- POP3-only users shouldn't get dovecot.index.cache files created anymore when
quota plugin is used
- Fixed/optimized handling pipelined commands
- rawlog: added -b parameter to log packet boundaries.
- auth: %a and %b were broken
Changes since beta12:
- Half of LDAP code was rewritten to fix reconnect/queuing problems. I did
test that the new code works with and without auth binds, but be careful.
- \Recent flags should finally work correctly with maildir.
- last_used field wasn't updated for cache fields that were permanently
cached. This caused them to be dropped after a month.
TODO for RC1:
- When pipelining commands, do only one sync after all of them. Besides
improving performance, this fixes some rare problems when multiple commands
are running simultaneously.
- SEARCH/SORT: Replace invalid input with unicode "replacement character"
instead of just skipping it.
- Squat: Handle expunges. NFS support.
- Fix Lucene support.
This release fixes a lot of bugs and adds some new sanity checks. Fixes
quite a lot of mbox problems.
v1.1.beta11 (no other versions) had a potential security hole where
memory was free()d multiple times.
\Recent flags should work perfectly now with mbox. Still somewhat broken
with maildir.
This one should be the last beta release before the first v1.1 release
candidate.
The main things left in my TODO are:
- Squat indexes should handle expunges
- Lucene indexes are broken
- See if \recent flag handling could be fixed for maildir/mbox (it works for
dbox though)
- Some other minor things which I'll do if I have time, but won't block v1.1.0
release.
Changes since beta10:
- One major performance issue found and fixed. This was the main reason why we
weren't yet in release candidate stage.
- configure --with-package now gives an error if it can't find the necessary
libs/headers for the package. Use --with-package=auto for the old behavior.
- Memory leak fixes
- Convert plugin fixes. Conversion is now done to namespace with INBOX.
- Changes to handling group adding/removing to processes. Hopefully didn't
break anything.
- Message flag/keyword searches are now faster
- Fixes/optimizations to handling SORT. After building initial indexes, my
260k mail mailbox sorts in about 0.01 seconds. :)
- Fixes to searching mails with unknown charsets/invalid data
- deliver_log_format setting
Changes since beta9:
- dotlock_use_excl=yes is now the default. I think this should work in all NFS
setups that are in use nowadays. O_EXCL has worked since NFSv3.
- fs quota: Added "noenforcing" option
- Fixed compiling with non-gcc
- Fixed quota plugin crash
- Lots of fixes to handling message searches, especially related to non-ASCII
searches.
And most importantly: It includes the new Squat full text search indexing code.
There are a few things left in my TODO for it:
- It's currently used only to optimize root level AND searches. So for example
SEARCH (OR TEXT hello TEXT world) is still searched the slow way.
- Expunged messages are never removed from the indexes
- The index could be updated while messages are being saved, but this isn't
done yet.
- Indexed substring length is hardcoded to 4 characters. This should be
configurable, although I think 4 should work quite nicely.
Lucene plugin is probably completely broken now, but it was also in beta9.
Some changes since beta8:
- This release should work perfectly with NFS attribute cache enabled.
- Fixes to handling what should be written to cache file and when
- Some index handling optimizations
- IMAP LIST: dbox and cydir can now return children state
Changes since beta7:
- Added a new "raw" mail storage backend which allows opening files/streams as
single mail mailboxes. deliver uses this now instead of opening the incoming
mail as a mbox. So deliver should be now faster and it doesn't anymore remove
Dovecot's private mbox headers if you're not using mbox.
- Cache file tracks message expunges again
- All kinds of other fixes
- Some optimizations
I think we're getting closer to v1.1 RCs.
Changes since beta6:
- Beginnings of unit tests
- Message parsing fixes
- Cache file handling fixes
Known bugs:
- Cache file doesn't keep track of how much it contains deleted data, which
means it could grow infinitely. This worked at some point, so I'm not sure
what I did to break it. I'll figure it out later.
- Apparently for some use cases v1.1 is still slower (about 2x) than v1.0.
Probably more or less specific to NFS + mmap_disable=yes.
Fixes since beta5:
- dovecot.index.cache file wasn't actually being created/updated
(or something like that)
- SORT assert-crashed sometimes when sorting by string fields [this
was already fixed in pkgsrc version of dovecot 1.1beta5]
- etc.
APPEND should be working now. Also lots of fixes to handling namespace
prefixes and namespaces where virtual separator differs from real
separator.
zlib plugin now supports opening compressed maildir files. This is done
for files that have Z flag.
SORT still assert-crashes sometimes. Would be great if someone could
show me how to reproduce it. [*** fixed in patches/patch-ad ***]
SEARCH TEXT or Squat indexes apparently still have some problems, but I
couldn't reproduce them
(http://dovecot.org/list/dovecot/2007-October/026254.html).
Lots of fixes since beta3, but apparently there are still a few bugs left:
- Is SORT working?
- APPEND seems to have problems in some setups.
- Still some SEARCH TEXT problems? Or Squat indexing problems?
Changes since beta2:
- SORT fixes. Still buggy?
- If Date: header doesn't exist or is broken, fallback to INTERNALDATE (as
required by newer sort drafts, which I hadn't noticed before, v1.0.6 will
have this too)
- Log fatals/panics as such, instead of converting them to errors.
- Don't bother logging "returned error 89" if the child process logged a fatal
before that.
- dovecot.index.cache file may have been updated wrong when saving messages
causing all kinds of problems if it was
- Some crashfixes
"Several bug/crashfixes. deliver now supports -a parameter (see
http://wiki.dovecot.org/LDA) which allows Sieve plugin v1.1.2 to use
envelope :detail "to" checks.
I also did one more API change for mailbox_transaction_commit*().
There's probably something still wrong with SORT command, but other
than that I've fixed everything that's been reported."
Also this release can again be built with BSD make.