On Tue, Nov 20, 2007 at 03:41:20PM +0900, Miles Bader wrote:
> Postfix has a reputation for being faster and more secure than exim.
When talking about security, exim doesn't exactly have a horribly bad
track record. It's not qmail, but then I wouldn't *want* to use qmail
for other reasons.
> Why is it worth worrying about, though? Are the difference between exim
> and postfix really great enough to matter for typical use?!?
If flexibility matters (and I think it does, even in "typical use",
which is a myth):
A fair while back (January 2006), a customer asked me to configure a new
system using postfix in such a way that it'd do some fairly complex
things (LDAP lookups and virtual users, amongst others).
As an exim fanboy, I have to admit that I found postfix much more
contrived at the time. For instance, it was easy to do a virtual users
setup, and it was fairly easy to do an LDAP setup; but the postfix
subsystem that one needed to use to do virtual users had a totally
different idea about how LDAP works than did the rest of the system,
requiring me to jump through a number of hoops and create a few ugly
hacks to even make it possible (eventually I got it to work, but it took
much longer than expected, and almost nobody on mailinglists or IRC
channels could explain to me how to do it).
In exim, by contrast, "lookups" are done using "string expansion", and
string expansion can be done almost everywhere in the exim configuration
file; the lookups can even be nested. This makes exim much more
flexible; if you were insane, you could even perform a lookup in a file
to find the name of another file containing the value of the primary of
a database tuple in which to look up the URL of the LDAP directory to
find the location of the Maildir in which to store the current email[1].
Of course nobody in their right mind would do such a thing for a
production server, but the point is that it's possible because of the
flexibility given by exim's string expansion system; it appeared to me
that postfix doesn't have this flexibility.
[1] As in this transport:
insane_local_delivery:
driver = appendfile
directory = ${lookup ldap{
${lookup pgsql{select url from ldapuris where id=
${readfile{
${lookup{$local_part}lsearch{/etc/primary-keys}}
}{}}
}{$value}}
}}
maildir_format
--
<Lo-lan-do> Home is where you have to wash the dishes.
-- #debian-devel, Freenode, 2004-09-22