I've been running this for two hours now without problems. I guess it's pretty stable.
Keyword support finally included. Not too well tested, but I couldn't get it to break. Doesn't store the keywords into maildir/mbox yet. Hopefully soon.
Major reorganization of code in dovecot-auth, and not yet finished. Load balancing between multiple auth procsses (ie. auth_count > 1) was before done by connecting to each one's socket separately. Now there's a single socket which a balancer process listens to and distributes the requests to worker processes.
What's left to do is make a single auth process support handling multiple auth sections in config file. This makes it possible to:
- have ordering-sensitive fallbacking for multiple passdbs
- have fallbacking work with non-plaintext authentication
- allow for all kinds of new great features more easily. For example we could add PAM-like "required" vs. "sufficient" selection for auth sections, or some rules when each passdb is used (eg. based on username, domain or IP range).
After that it should also be easy to run dovecot-auth standalone because it would read its own config file. I'm also planning on making it compatible with Postfix's master process, so you could directly add it to master.cf (actually I think I only have to move one fd from 3 to 6 and it'd work).
- Added "passdb" userdb. Basically means that the passdb already returned all the information needed for userdb. With SQL this means you could do:
SELECT password, uid AS userdb_uid, gid AS userdb_gid, home AS userdb_home FROM ...
If authentication failed because of some internal error, tell it to client instead of showing a generic "Authentication failed." error.
MySQL driver supports load balancing between multiple servers. Just add a new host=xx to connect string. It's not currently supported to have different usernames/passwords. Probably not worth it?
rawlog code rewritten. Should work better.
If userdb returns non-numeric UID or GID, look it up from passwd/group.
Rewritten message address parser. The old code could have lost some spaces and might have even returned invalid MIME string because of it. This affected only clients which use FETCH ENVELOPE command.
mbox: If lines began with NUL characters, things broke. Also fixed another potential problem with parsing mboxes. As a result hopefully these fix a problem with expunge sometimes leaving a few extra characters to beginning of mbox.
Added mail_debug setting which logs where and how Dovecot is trying to locate mails. Helpful when initially figuring out why Dovecot isn't working right. auth_debug=yes now also logs all SQL queries and LDAP lookups and some other things.
etc.