Review of smail

smail version 2.5 and earlier were simple MTSes that were designed primarily to perform mail transport via UUCP. They are not particularly useful nowadays, except perhaps as UUCP transport agents for Sendmail, and will not be mentioned further.

smail version 3 is an MTS for UNIX and UNIX-like systems that was written by Ronald S. Karr and Landon Curt Noll.

smail has an mailing list for users, but no official web page that can be located and no third-party user-run web pages. It has its own Usenet newsgroup.

smail is monolithic.

Like Sendmail and exim, smail comprises one, single, huge set-UID root binary. This binary can be invoked by a variety of names, each of which alters the default behaviour (in the absence of subsequent command line options): smail, sendmail, runq, mailq, rsmtp, rmail, smtpd, and newaliases.

The command line syntax is similar, but not identical, to that of Sendmail, meaning that smail can be used as a drop-in replacement for /usr/lib/sendmail as it is commonly used. smail extends the "traditional" Sendmail syntax with some of its own extensions.

Unlike exim, smail stores its configuration in a set of several files rather than in one large configuration file. However, the format of all of the files is not "flat". Moreover, the separation into individual files is purely for human readability. It does not increase efficiency. Unlike the case with qmail, with smail in all cases that one of the main four configuration files ("config", "directors", "routers", and "transports") needs to be read and parsed, they all need to be read and parsed.

smail uses "directors", "routers", and "transports".

smail's design uses the concepts of "transports", "directors", and "routers", which might be confusing to those used to the comparatively straight "paper paths" of qmail and postfix. These are applied to the envelope recipient mailboxes of messages.

Mailboxes at "local" hosts are checked against a set of "directors", which either cause further mailboxes to be added to the list of envelope recipients, or cause the message to be delivered in some manner. smail has aliasfile and forwardfile director drivers that support /etc/aliases and ~/.forward files. Its user director driver supports delivery to "mbox" format mailboxes. ("Maildir" format mailboxes are not supported.)

Mailboxes at "non-local" hosts are checked against a set of "routers", which provide a form of next-hop routing, resulting in a target host to which the message should be sent and mailbox name to supply to it. The pathname and uuname router drivers, which route messages according to a pathalias database and the uuname command respectively, are evidence of smail's UUCP heritage. smail also supports routing according to gethostbyname() lookup, and according to mail exchanger information in the public DNS database obtained from a proxy DNS server.

smail makes some simplistic design choices.

By default, smail sends all local mail addressed to "Mailer-dæmon" or "Postmaster" to the user named "root". By contrast, other MTSes such as qmail do not consider "root" to be a real user and indeed take pains to avoid delivering mail as the superuser.

smail also assumes that two user names that differ only in case are the same.

Where and what to download

smail version 3.1.29.1 can be obtained via anonymous FTP.


© Copyright 1998–2004 Jonathan de Boyne Pollard. "Moral" rights asserted.
Permission is hereby granted to copy and to distribute this web page in its original, unmodified form as long as its last modification datestamp information is preserved.