back in 2000, Postfix didn't have any possibility to get its user information from an external
database. What you had to do was to patch in some custom patch which would have made it
impossible for me to use the distribution package management system. Well. Not impossible, but
it would have been much harder to work with.
In 2001, when I had my second look, there was some database-solution but it wasn't nearly as
flexible as Exim was and it forced you into a certain schema.
With exim, I can create completely custom queries to the database and I don't need to emulate
unix UID or stuff like that. Exim treats a user looked up via SQL just the same as an user found in
/etc/passwd or whererver else.
This means that I was able to completely integrate Exim into a normalized schema of my liking
without the need to midify anything but /etc/exim.conf
My data model consists of
- domains (each site can have multiple domains)
- users (each site can have multiple users)
- aliases (each site can have multiple aliases)
So I can have a site named lipfi to which the domains lipfi.ch and gnegg.ch are assigned to. Then
I can have the user pilif in the site lipfi which means that this user can get email adressed to
I can also have an alias in the site lipfi that assigns * (catchall) to pilif, meaning that the same
account is reachable via [whatever]@(gnegg|lipfi).ch
All that based on my completely custom (MySQL) Schema with just a few lines of customized
code in exim.conf. The configuration even creates maildirs for later use with Courier, sets quota
stored in the database and uses an exim filter per user to prefilter incoming messages *without
spawning and MDA process*.
That and the extremely well optimized MySQL-Schema make this configuration very, very fast,
capable of handling a very large amount of mail while still providing as much flexibility as I ever
When I was last looking at postfix, it treated SQL-Users as aliases which had to be mapped to
some "real" users.
So this is why I went and still am going with Exim whenever I can.
Btw, this configuration uses Courier for access to the mailboxes. I created a custom authdaemon
in Perl which courier talks to to authenticate users. Users log in to the IMAP server with
<username>@<domain> and my custom authdaemon uses the domains-table to get the right
site to find the right username and then leads courier to the right maildir (previously created by
All this works without patching any upstream package.
Copyright © 2017, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds