There is a, what I think a very interesting, project at which implements an IMAP server that stores messages to and retrieves them from a relational database (MySQL and PostgreSQL are currently implemented, SqLite is in the works). While I was designing our new servers, I was very interested in implementing dbmail but thought better of it at the time, preferring to go with Dovecot because it offered a more transparent storage and less initial risk for us. Not that I think dbmail is unsafe to use; quite on the contrary: it looks and feels rock solid. It is just that at that time I couldn’t imagine having thousands of messages in a database, and I was a bit concerned about issues such as backup & recovery of messages. So we went the Maildir way. Our Maildirs are backed up via Tivoli Storage Manager so it is of course quite easy to retrieve a single folder with restore /home/user/Maildir/cur/* -pick, although identification of an individual message is near to impossible. If all mail was in a relational database, say MySQL, the whole database would need backing up and not just the “touched” message files. For the time being, and because I haven’t really thought out a plan on how one could restore a user’s INBOX when all data is in a relational system, I’m quite pleased. We’ve already had to retrieve the whole INBOX for two users who accidentally used shift + DEL. dbmail still occupies me though, and I’d just love to see it in a bit larger scale, although I will wait until the server natively supports SSL/TLS.

Mail, MySQL, and IMAP :: 03 Mar 2006 :: e-mail