Timo Sirainen [Tue, 18 Sep 2012 16:57:48 +0000 (19:57 +0300)]
auth: userdb static used auth caching wrong when verifying user existence with passdb lookup.
Cache entries were being looked/added for userdbs instead of passdbs. This
caused problems at least with:
a) Multiple userdbs (where static userdb was the last). Passdb results were
added as cache entries to the first userdbs, possibly causing some confusion.
b) Multiple passdbs, because the first passdb result was added to cache and
used for the rest of the passdbs.
Timo Sirainen [Tue, 18 Sep 2012 15:44:46 +0000 (18:44 +0300)]
Added mailbox-alias plugin.
Aliases can be created like:
plugin {
mailbox_alias_old = Sent
mailbox_alias_new = Sent Messages
mailbox_alias_old2 = Sent
mailbox_alias_new2 = Sent Items
}
When creating an alias, the original mailbox is also created. The alias
itself is a symlink to the original. Deleting an alias deletes the symlink.
The original mailbox can't be deleted or renamed while it has aliases.
Aliases cannot be renamed. Aliases are skipped when recalculating quota.
If a mailbox with the alias's name was already created before the aliasing
was enabled, it's not treated as alias until it's first deleted.
Timo Sirainen [Tue, 18 Sep 2012 15:40:17 +0000 (18:40 +0300)]
lib-storage: MAILBOX_LIST_ITER_SKIP_ALIASES now skips also "alias symlinks"
An "alias symlink" is a symlink that points to the same directory. These can
safely be skipped when iterating through all mails in all mailboxes (unlike
other symlinks that may point to external storages).
Timo Sirainen [Tue, 11 Sep 2012 15:42:05 +0000 (18:42 +0300)]
Decrease minimum memory allocations.
This is mainly to avoid wasting settings-related memory for IMAP processes.
Probably something more radical should be done at some point.
Timo Sirainen [Fri, 17 Aug 2012 06:17:48 +0000 (09:17 +0300)]
doveadm backup: Fixed "is source empty" check.
In POP3 boxes there is only INBOX, and it's possible that source becomes
empty while backup has mails. The check is now "has source always been
empty?"
Timo Sirainen [Tue, 14 Aug 2012 20:09:44 +0000 (23:09 +0300)]
imapc: Added imapc_max_idle_time setting to force activity on connection.
Reducing this from the default 29 minutes should help when there's a
stateful firewall between imapc and the backend server.
Timo Sirainen [Tue, 14 Aug 2012 00:03:26 +0000 (03:03 +0300)]
fs layout: Kludge to show INBOX/INBOX mailbox when necessary.
This happens with one prefix="" namespace and another prefix=INBOX/
namespace when the INBOX mailbox itself has children.
Timo Sirainen [Tue, 14 Aug 2012 00:01:07 +0000 (03:01 +0300)]
lib-storage: If alias_for references inbox=yes namespace, copy the inbox=yes to the alias ns.
So even though this still doesn't allow giving multiple inbox=yes settings
in configuration file, it's now possible for multiple namespaces to have
them. They just need to point to the exact same INBOX.
Timo Sirainen [Tue, 7 Aug 2012 14:56:24 +0000 (17:56 +0300)]
lib-master: Settings cache crashed after config_cache_size was reached.
This affected login processes when local {} and/or remote {} blocks were
specified. Also fixed the cache behavior to be MRU.
Timo Sirainen [Mon, 23 Jul 2012 11:23:32 +0000 (14:23 +0300)]
quota: Added quota_ignore_save_errors plugin setting.
If mail is being saved but current quota usage lookup fails with internal
error, save the mail anyway instead of failing.
Timo Sirainen [Tue, 17 Jul 2012 13:20:20 +0000 (16:20 +0300)]
auth: Fixed error handling in GSSAPI when __gss_userok() was used.
An invalid username would have been treated as successful and auth process
probably would have crashed.
Timo Sirainen [Tue, 17 Jul 2012 13:17:40 +0000 (16:17 +0300)]
auth: GSSAPI RFC compliancy fixes.
Patch by Ben Morrow:
The first problem is that, because of the way the client invokes
libsasl, it sends a GSSAPI request which does not ask for mutual
authentication. This means that on the server gss_accept_sec_context
returns GSS_S_COMPLETE with a zero-length output token. Dovecot
currently sends this to the client as a zero-length continuation
response, but this is incorrect according to RFC 4752: what it ought to
do instead is proceed straight to the security layer negotiations, and
send a gss_wrap packet.
The second is that Cyrus sends an empty authz identity; that is, the
security layer negotiation packet, when gss_unwrapped, is exactly 4
bytes long. Dovecot objects to this, but in RFC 4422 this is explicitly
allowed, and means the authz identity is identical to the authn
identity.