Exim

Last updated
Exim Internet Mailer
Original author(s) Philip Hazel
Developer(s) The Exim Maintainers
Initial release1995;28 years ago (1995)
Repository
Written in C
Operating system Unix-like
Platform Cross-platform
Type Mail transfer agent
License GPL-2.0-or-later [1]
Website www.exim.org OOjs UI icon edit-ltr-progressive.svg

Exim is a mail transfer agent (MTA) used on Unix-like operating systems. Exim is a free software distributed under the terms of the GNU General Public License, and it aims to be a general and flexible mailer with extensive facilities for checking incoming e-mail.

Contents

Exim has been ported to most Unix-like systems, as well as to Microsoft Windows using the Cygwin emulation layer. Exim 4 is currently the default MTA on Debian Linux systems. [2]

Many Exim installations exist, especially within Internet service providers [3] and universities in the United Kingdom. Exim is also widely used with the GNU Mailman mailing list manager, and cPanel.

In March 2023 a study performed by E-Soft, Inc., [4] approximated that 59% of the publicly reachable mail-servers on the Internet ran Exim.

Origin

The first version of Exim was written in 1995 by Philip Hazel for use in the University of Cambridge Computing Service’s e-mail systems. The name initially stood for EXperimental Internet Mailer. [5] It was originally based on an older MTA, Smail-3, but it has since diverged from Smail-3 in its design and philosophy. [6] [7]

Design model

Exim, like Smail, still follows the Sendmail design model, where a single binary controls all the facilities of the MTA. Exim has well-defined stages during which it gains or loses privileges. [8]

Exim's security has had a number of serious security problems diagnosed over the years. [9] Since the redesigned version 4 was released there have been four remote code execution flaws and one conceptual flaw concerning how much trust it is appropriate to place in the run-time user; the latter was fixed in a security lockdown in revision 4.73, one of the very rare occasions when Exim has broken backwards compatibility with working configurations.

Configuration

Exim is highly configurable and therefore has features that are lacking in other MTAs. It has always had substantial facilities for mail policy controls, providing facilities for the administrator to control who may send or relay mail through the system. In version 4.x this has matured to an Access Control List based system allowing very detailed and flexible controls. The integration of a framework for content scanning, which allowed for easier integration of anti-virus and anti-spam measures, happened in the 4.x releases. This made Exim very suitable for enforcing diverse mail policies.

The configuration is done through a (typically single) configuration file, which must include the main section with generic settings and variables, as well as the following optional sections:

The configuration file permits inclusion of other files, which leads to two different configuration styles.

Configuration styles

There are two main schools of configuration style for Exim. The native school keeps the Exim configuration in one file and external files are only used as data sources; this is strongly influenced by Philip Hazel's preferences and notes on performance as the configuration file is re-read at every exec, which happens post-fork for receiving inbound connections and at delivery.

The second commonly encountered style is the Debian style which is designed to make it easier to have an installed application automatically provide mail integration support without having the administrator edit configuration files. There are a couple of variants of this and Debian provide documentation of their approach as part of the packages. In these approaches, a debconf configuration file is used to build the Exim configuration file, together with templates and directories with configuration fragments. The meta-config is tuned with macros which have names starting DC_. When the supervisor for exim is invoked it re-processes the configuration files producing a single-file configuration that the exim binary uses.

Because the Debian approach diverges significantly from the Exim one it is common to find a lack of support for the Debian approach on the regular Exim mailing-lists, with people advised [10] [11] to ask Debian questions on the Debian-managed mailing-list. The Ubuntu packaging [12] still advises users to use the Debian mailing-list.

Documentation

Exim has extensive and exhaustive documentation; if a feature or some behaviour is not documented then this is classed as a bug. The documentation consists of The Exim Specification and two ancillary files: the experimental specification for features that might disappear and "NewStuff", which tracks very recent changes that might not have been fully integrated into the main specification. The Exim Specification is available in multiple formats, including online in HTML and in plain-text for fast searching. The document preparation system ensures that the plain-text format is highly usable.

Performance

Exim has been deployed in busy environments, often handling thousands of emails per hour efficiently. Exim is designed to deliver email immediately, without queueing. However, its queue processing performance is comparatively poor when queues are large (which happens rarely on typical low-traffic sites but can happen regularly on high-traffic sites).

Unlike qmail, Postfix, and ZMailer, Exim does not have a central queue manager (i.e. an equivalent of qmail-send, qmgr, or scheduler). There is thus no centralized load balancing of queue processing (leading to disproportionate amounts of time being spent on processing the same queue entries repeatedly). System-wide remote transport concurrency is unlimited by default (leading to a "thundering herd problem" when multiple messages addressed to a single domain are submitted at once) but can be limited by the configuration. In Philip Hazel's own words: [13]

"The bottom line is that Exim does not perform particularly well in environments where the queue regularly gets very large. It was never designed for this; deliveries from the queue were always intended to be 'exceptions' rather than the norm."

In 1997, Hazel replaced Exim's POSIX regular expression library written by Henry Spencer with a new library he developed called PCRE (Perl Compatible Regular Expressions). Perl regular expressions are much more powerful than POSIX and other common regular expressions, and PCRE has become popular in applications other than Exim. In 2021 (after the 4.95 release) Exim transitioned to PCRE2.

Updates

Historically, Exim used a peculiar version numbering scheme where the first decimal digit is updated only whenever the main documentation is fully up to date; until that time, changes were accumulated in the file NewStuff. For this reason, a 0.01 version change can signify important changes, not necessarily fully documented. [14] In 2005, changes to Exim's version numbering were on the table of discussion. [15]

In more recent times, the document preparation system for Exim has been overhauled and changes are much more likely to just go immediately into The Exim Specification. The 4.70 release just followed on naturally from 4.69 and the 4.6x releases had up-to-date documentation.

Philip Hazel retired from the University of Cambridge in 2007 and maintenance of Exim transitioned to a team of maintainers. Exim continues to be maintained actively, with frequent releases.

See also

Related Research Articles

The Simple Mail Transfer Protocol (SMTP) is an Internet standard communication protocol for electronic mail transmission. Mail servers and other message transfer agents use SMTP to send and receive mail messages. User-level email clients typically use SMTP only for sending messages to a mail server for relaying, and typically submit outgoing email to the mail server on port 587 or 465 per RFC 8314. For retrieving messages, IMAP is standard, but proprietary servers also often implement proprietary protocols, e.g., Exchange ActiveSync.

<span class="mw-page-title-main">Maildir</span> E-mail format

The Maildir e-mail format is a common way of storing email messages in which each message is stored in a separate file with a unique name, and each mail folder is a file system directory. The local file system handles file locking as messages are added, moved and deleted. A major design goal of Maildir is to eliminate the need for program code to handle file locking and unlocking.

A mail exchanger record specifies the mail server responsible for accepting email messages on behalf of a domain name. It is a resource record in the Domain Name System (DNS). It is possible to configure several MX records, typically pointing to an array of mail servers for load balancing and redundancy.

<span class="mw-page-title-main">GNOME Evolution</span> Personal information manager software and workgroup information management tool for GNOME

GNOME Evolution is the official personal information manager for GNOME. It has been an official part of GNOME since Evolution 2.0 was included with the GNOME 2.8 release in September 2004. It combines e-mail, address book, calendar, task list and note-taking features. Its user interface and functionality is similar to Microsoft Outlook. Evolution is free software licensed under the terms of the GNU Lesser General Public License (LGPL).

qmail is a mail transfer agent (MTA) that runs on Unix. It was written, starting December 1995, by Daniel J. Bernstein as a more secure alternative to the popular Sendmail program. Originally license-free software, qmail's source code was later dedicated in the public domain by the author.

Greylisting is a method of defending e-mail users against spam. A mail transfer agent (MTA) using greylisting will "temporarily reject" any email from a sender it does not recognize. If the mail is legitimate, the originating server will try again after a delay, and if sufficient time has elapsed, the email will be accepted.

MMDF, the Multichannel Memorandum Distribution Facility, is a message transfer agent (MTA), a computer program designed to transmit email.

<span class="mw-page-title-main">Postfix (software)</span> Mail transfer agent

Postfix is a free and open-source mail transfer agent (MTA) that routes and delivers electronic mail.

<span class="mw-page-title-main">Microsoft Mail</span> Several Microsoft email products

Microsoft Mail was the name given to several early Microsoft e-mail products for local area networks, primarily two architectures: one for Macintosh networks, and one for PC architecture-based LANs. All were eventually replaced by the Exchange and Outlook product lines.

Variable envelope return path (VERP) is a technique used by some electronic mailing list software to enable automatic detection and removal of undeliverable e-mail addresses. It works by using a different return path for each recipient of a message.

The UW IMAP server was the reference server implementation of the Internet Message Access Protocol. It was developed at the University of Washington by Mark Crispin and others.

The comparison of mail servers covers mail transfer agents (MTAs), mail delivery agents, and other computer software that provide e-mail services.

Opportunistic TLS refers to extensions in plain text communication protocols, which offer a way to upgrade a plain text connection to an encrypted connection instead of using a separate port for encrypted communication. Several protocols use a command named "STARTTLS" for this purpose. It is a form of opportunistic encryption and is primarily intended as a countermeasure to passive monitoring.

<span class="mw-page-title-main">Callback verification</span> Technique used with SMTP to validate e-mail addresses

Callback verification, also known as callout verification or Sender Address Verification, is a technique used by SMTP software in order to validate e-mail addresses. The most common target of verification is the sender address from the message envelope. It is mostly used as an anti-spam measure.

Email forwarding generically refers to the operation of re-sending a previously delivered email to an email address to one or more different email addresses.

The Courier Mail Server is a mail transfer agent (MTA) server that provides SMTP, IMAP, POP3, SMAP, webmail, and mailing list services with individual components. It is best known for its IMAP server component.

Smail-3 is a mail transfer agent (MTA) used on Unix-like operating systems. It is Free Software and is licensed under the GNU GPL. It aims to be a general and flexible mailer with extensive facilities for checking incoming e-mail and for routing between disparate networks. It is still in use on the Internet, but it has been mostly superseded by Exim and other more modern mail transfer agents.

Philip Hazel is a computer programmer best known for writing the Exim mail transport agent in 1995 and the PCRE regular expression library in 1997. He was employed by the University of Cambridge Computing Service until he retired at the end of September 2007. In 2009 Hazel wrote an autobiographical memoir about his computing career which he updated in 2017.

Amavis is an open-source content filter for electronic mail, implementing mail message transfer, decoding, some processing and checking, and interfacing with external content filters to provide protection against spam and viruses and other malware. It can be considered an interface between a mailer and one or more content filters.

References

  1. "NOTICE". GitHub .
  2. Adelstein, Tom; Lubanovic, Bill (2007-03-27). Linux System Administration. "O'Reilly Media, Inc.". ISBN   978-0-596-00952-6.
  3. Golanski, Y (2000) The Exim Mail Transfer Agent in a Large Scale Deployment
  4. "E-Soft MX survey". securityspace.com. E-Soft Inc. 1 March 2023. Retrieved 20 March 2023.
  5. Philip Hazel The Exim SMTP Mail Server (Preface) Archived 2008-12-30 at the Wayback Machine
  6. "Philip Hazel's original thoughts on implementing a future MTA based on Smail". cam.ac.uk. Archived from the original on 2008-12-15.
  7. "The Smail-3 MTA". weird.com.
  8. "Security considerations". exim.org.
  9. "EximSecurity". GitHub.
  10. "DebianExim4". GitHub.
  11. "The Exim FAQ". exim.org.
  12. "Ubuntu – Details of package exim4 in lucid". ubuntu.com.
  13. posting by Philip Hazel
  14. [Exim] Exim 4.21 released
  15. "Exim Development - From The Cathedral Towards The Bizarre". Archived from the original on 14 October 2007. Retrieved 25 February 2015.

Bibliography