DBMail is an open-source project that enables storage of mail messages in a relational database.

Currently MySQL, PostgreSQL, Oracle, and SQLite can be used as storage backends.

Commercial development and support is also available.

What are the advantages?

Scalability
Dbmail is as scalable as the database system used for storage.
Manageability
Dbmail can be managed by updating the relational database or directory service - without shell access.
Speed
Dbmail uses very efficient, database specific queries for retrieving mail information.
Security
Dbmail doesn't require filesystem access. It's as secure as the database and directory server used.
Flexibility.
Changes in a Dbmail system (adding of users, changing passwords etc.) are effective immediately. Users can be stored in the database, or managed separately in an LDAP server such as OpenLDAP or Active Directory.

How does it work?

DBMail is made up of several components. A normal MTA (Postfix, SendMail, QMail, Exim) is used for accepting messages. The MTA hands the messages over to dbmail-deliver, using a pipe interface, or to dbmail-lmtpd, using LMTP (Local Mail Transport Protocol).

These programs take care of injecting the message into the database. Messages can be retreived from the database using dbmail-pop3d, using the POP3 protocol, or dbmail-imapd, using the IMAP4Rev1 protocol.

Emails are stored in the database. This includes attachments. User information is also stored in the database, so users do not need a system account on machines DBMail is running on.

Components

DBMail Components

Available

DBMail is primarily developed and tested on the GNU Linux and FreeBSD platforms. Users have also reported successfull deployments on OpenSolaris, NetBSD and OSX.

DBMail is released under the GNU Public Licence (version 2).

Blog

Migrating from MySQL to PostgreSQL
2012-09-13
Pruning the dbmail_headervalue table
2010-02-13
DBMail on twitter
2010-01-19

Recent changes

master branch

POP3: fix a couple of segfaults
2013-06-18
increase max debug message size in error logs
2013-06-18
IMAP: replace GMutex with pthread_mutex_t; #990
2013-06-15

3.0 stable branch

document backlog parameter, and increase the default
2013-05-31
backport socket write fix
2013-05-31
LMTP: check results in load-test script
2013-05-28