O'Reilly logo

Sendmail, 3rd Edition by Bryan Costales

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

History

The sendmail program was originally written by Eric Allman while he was a student and staff member at the University of California at Berkeley. At the time, one campus machine (Ingres) was connected to the ARPAnet and was home to the INGRES project where Eric was working. Another machine (Ernie CoVax) was home to the Berkeley Unix project and had recently started using the Unix to Unix Communication Protocol (UUCP). These machines (as well as several others on campus) were connected via a low-cost network built by Eric Schmidt, called BerkNet. Software existed to move mail within ARPAnet, within UUCP, and within BerkNet, but none yet existed to move mail between these three networks.

A sudden increase in protocol types, coupled with the anticipation of an explosion in the number of networks, motivated Eric Allman to write delivermail—the precursor to sendmail. The delivermail program was shipped in 1979 with 4.0 and 4.1 BSD Unix. Unfortunately, delivermail was not flexible enough to handle the changes in mail-routing requirements that actually occurred. Perhaps its greatest weakness was that its configuration was compiled in.

In 1980, ARPAnet began converting from Network Control Protocol (NCP) to Transmission Control Protocol (TCP). This change increased the number of possible hosts from 256 to more than 1 billion. Another change converted from a “flat” host-name space (such as MIT-XX) into a hierarchical namespace (such as XX.MIT.EDU). Prior to these changes, mail was transported using the File Transfer Protocol (FTP). Afterward, a new protocol was developed for transporting mail called Simple Mail Transfer Protocol (SMTP). These developments were not instantaneous. Some networks continued to run NCP years after most others switched to TCP. And SMTP underwent many revisions before finally settling into its present form.

Responding to these and other changes, Eric evolved delivermail into sendmail. To ensure that messages transferred between networks would obey the conventions required by those networks, Eric took a “liberal” approach—modifying address information to conform rather than rejecting it. At the time, for example, UUCP mail often had no headers, so sendmail had to create them from scratch.

The first sendmail program was shipped with 4.1c BSD (the first version of Berkeley Unix to include TCP/IP). From that first release to the present,[2] Eric has continued to enhance sendmail, first at UC Berkeley, then at Britton Lee, then back at UC Berkeley, then with InReference Inc., and now with Sendmail, Inc. The current major version of sendmail is V8, a major rewrite that includes many bug fixes and significant enhancements.

But Eric wasn’t the only one working on sendmail. In 1987, Lennart Lovstrand of the University of Linköping, Sweden, developed the IDA enhancements to BSD sendmail Version 5. IDA (which stands for Institutionen för Datavetenskap) injected a number of improvements into sendmail (such as support for dbm files and separate rewriting of headers and envelopes) and fixed a number of bugs. As the ’90s approached, two offspring of IDA appeared.

Neil Rickert (Northern Illinois University) and Paul Pomes (The University of Illinois) took over maintenance of IDA sendmail. With contributions from around the world, their version (UIUC IDA) represents a continuation of the work begun by Lennart Lovstrand. Neil focused on fixing and enhancing the configuration files into their current m4-based form. Paul maintained the code, continually adding enhancements and fixing bugs. In general, their version was large, ambitious, and highly portable. It succeeded in solving many complex mail-routing problems.

A variation on IDA sendmail was also developed by Paul Vixie (while at Digital Equipment Corporation). Called KJS (for King James sendmail), it was a more conservative outgrowth of Lennart Lovstrand’s last IDA release. The focus of KJS was on code improvement rather than changes to configuration files.

In addition to these major offshoots, many vendors modified sendmail to suit their needs. Sun Microsystems made many modifications and enhancements to sendmail, including support for nis and nisplus maps. Hewlett-Packard also contributed many fine enhancements, including 8BITMIME support.

This explosion of sendmail versions led to a great deal of confusion. Solutions to problems that work for one version of sendmail failed miserably for another. Even worse, configuration files were not portable, and some features could not be shared.

In 1992, Eric started creating a new version of sendmail to merge all the earlier versions. V8 officially adopted most of the good features from IDA, KJS, Sun, and HP’s sendmail, and kept abreast of the latest standards from the Internet Engineering Task Force (IETF). In 1996, Eric began work on V8.8 sendmail. This release continued the trend begun with V8.7, adding many requested new features and options, and tightening security. In 1998, V8.9 was released, continuing the direction started by V8.8.

In 1999, Sendmail, Inc. was founded in Emeryville, California. Sendmail, Inc. took over maintenance and development of the open source version of sendmail, and began work on a commercial version. Sendmail, Inc. has the web site:

http://www.sendmail.com

and is also one of the sponsors of the open source sendmail’s web site:

http://www.sendmail.org

For more information on the open source community and the Open Source Initiative (OSI), go to:

http://www.opensource.org

The first major offering from Sendmail, Inc. was V8.10 sendmail, released in 2000. It was mentored by Eric Allman, but largely written by Greg Shapiro.

V8.10 and V8.11 were developed in parallel. Claus Assmann added to V8.10 SMTP AUTH and STARTTLS, as well as a number of security changes, bringing that version up to V8.11. V8.11 was released as a commercial version because of export restrictions. Shortly afterward, export restrictions were relaxed and V8.11 was released in open source form.

Claus Assmann took sendmail in a somewhat new direction with V8.12, in which he added a suite of new features. V8.12 was supposed to be the last of the V8 series of sendmail, but a V8.13 and perhaps a V8.14 are possible.

Plans are afoot to develop a multithreaded version of sendmail that will be called V9 sendmail, but, as of this writing, it is still in the early planning stages, and probably won’t appear as an alpha release for a few years.



[2] With one long gap between 1982 and 1990.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required