Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Exim
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Mail transfer agent}} {{About|the electronic mail transfer agent||Exim Bank (disambiguation)}} {{Infobox software | title = Exim Internet Mailer | name = Exim | logo = Exim-blue-ld-sml.png | screenshot = | caption = | author = [[Philip Hazel]] | developer = [http://git.exim.org/exim.git/blob/HEAD:/src/ACKNOWLEDGMENTS The Exim Maintainers] | released = {{Start date and age|1995}} | latest release version = {{wikidata|property|preferred|references|edit|Q994121|P348|P548=Q2804309}} | latest release date = {{wikidata|qualifier|preferred|single|Q994121|P348|P548=Q2804309|P577}} | latest preview version = {{wikidata|property|preferred|references|edit|Q994121|P348|P548=Q51930650}} | latest preview date = {{wikidata|qualifier|preferred|single|Q994121|P348|P548=Q51930650|P577}} | programming language = [[C (programming language)|C]] | operating system = [[Unix-like]] | platform = [[Cross-platform]] | genre = [[Mail transfer agent]] | license = [[GNU General Public License|GPL-2.0-or-later]]<ref>{{cite web|url=https://github.com/Exim/exim/blob/master/src/NOTICE|title=NOTICE|website=[[GitHub]] }}</ref> | website = {{official url}} }} '''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]]. Exim has been [[porting|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.<ref>{{Cite book |last1=Adelstein |first1=Tom |url=https://books.google.com/books?id=-jYe2k1p5tIC&dq=Exim+4+is+currently+the+default+MTA+on+Debian+Linux+systems&pg=PA105 |title=Linux System Administration |last2=Lubanovic |first2=Bill |date=2007-03-27 |publisher="O'Reilly Media, Inc." |isbn=978-0-596-00952-6 |language=en}}</ref> Many Exim installations exist, especially within [[Internet service provider]]s<ref>Golanski, Y (2000) [http://www.neverness.org/docs/lsm.pdf The Exim Mail Transfer Agent in a Large Scale Deployment]</ref> 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.,<ref>{{Cite web |url=http://www.securityspace.com/s_survey/data/man.202302/mxsurvey.html |title=E-Soft MX survey |website=securityspace.com |publisher=E-Soft Inc. |date=1 March 2023 |access-date=20 March 2023 }}</ref> 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 '''EX'''perimental '''I'''nternet '''M'''ailer.<ref>Philip Hazel [http://www.uit.co.uk/exim-book/preface.pdf The Exim SMTP Mail Server (Preface)] {{Webarchive|url=https://web.archive.org/web/20081230113926/http://www.uit.co.uk/exim-book/preface.pdf |date=2008-12-30 }}</ref> It was originally based on an older MTA, [[Smail]]-3, but it has since diverged from Smail-3 in its design and philosophy.<ref>{{cite web|url=http://people.pwf.cam.ac.uk/ph10/MPD100|title=Philip Hazel's original thoughts on implementing a future MTA based on Smail|website=cam.ac.uk|url-status=dead|archive-url=https://web.archive.org/web/20081215104953/http://people.pwf.cam.ac.uk/ph10/MPD100|archive-date=2008-12-15}}</ref><ref>{{cite web|url=http://www.weird.com/~woods/projects/smail.html|title=The Smail-3 MTA|website=weird.com}}</ref> ==Design model== Exim, like [[Smail]], still follows the [[Sendmail]] [[Software design|design model]], where a [[Executable|single binary]] controls all the facilities of the MTA. Exim has well-defined stages during which it gains or loses [[Privilege (computing)|privileges]].<ref>{{cite web|url=https://www.exim.org/exim-html-current/doc/html/spec_html/ch-security_considerations.html|title=Security considerations|website=exim.org}}</ref> Exim's security has had a number of serious [[Vulnerability (computing)|security problems]] diagnosed over the years.<ref>{{cite web|url=http://wiki.exim.org/EximSecurity|title=EximSecurity|website=GitHub}}</ref> 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 (program lifecycle phase)|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 [[Backward compatibility|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 access control list (ACL) section which defines behaviour during the [[SMTP]] sessions, * the routers section which includes a number of processing elements which operate on addresses (the delivery logic), each tried in turn, * the transports section which includes processing elements which transmit actual messages to destinations, * the retry section where policy on retrying messages that fail to get delivered at the first attempt is defined, * the rewrite section, defining if and how the mail system will rewrite addresses on incoming e-mails * the authenticators' section with settings for [[SMTP AUTH]], a rule per auth mechanism. 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 {{mono|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 <ref>{{cite web|url=http://wiki.exim.org/DebianExim4|title=DebianExim4|website=GitHub}}</ref><ref>{{cite web|url=http://www.exim.org/exim-html-4.40/doc/html/FAQ_25.html#TOC383|title=The Exim FAQ|website=exim.org}}</ref> to ask Debian questions on the Debian-managed mailing-list. The Ubuntu packaging <ref>{{cite web|url=http://packages.ubuntu.com/lucid/exim4|title=Ubuntu β Details of package exim4 in lucid|website=ubuntu.com}}</ref> 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 (software)|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:<ref>[news://news.gmane.org/Pine.SOC.4.61.0412010932030.9481%40draco.cus.cam.ac.uk posting by Philip Hazel]</ref> :"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.<ref name="versions">[http://lists.exim.org/lurker/message/20030814.082503.499c8332.en.html [Exim] Exim 4.21 released<!-- Bot generated title -->]</ref> In 2005, changes to Exim's version numbering were on the table of discussion.<ref name="versions2">{{cite web| url=http://www.uit.co.uk/exim-conference/full-papers/nigel-metheringham/| title=Exim Development - From The Cathedral Towards The Bizarre| access-date=25 February 2015| archive-url=https://web.archive.org/web/20071014121845/http://www.uit.co.uk/exim-conference/full-papers/nigel-metheringham/| archive-date=14 October 2007}}</ref> 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== {{Portal|Free and open-source software}} * [[Comparison of mail servers]] * [[List of mail servers]] ==References== {{Reflist}} ==Bibliography== {{refbegin}} * {{cite book |first = Philip |last = Hazel |date = April 1, 2007 |title = The Exim SMTP Mail Server: Official Guide for Release 4 |publisher = UIT Cambridge Ltd |edition = Second |pages = 640 |isbn = 978-0-9544529-7-1 |url = http://www.uit.co.uk/Authors/PHazel |access-date = 2010-12-13 |archive-date = 2010-11-07 |archive-url = https://web.archive.org/web/20101107081115/http://www.uit.co.uk/Authors/PHazel |url-status = dead }} {{refend}} ==External links== * {{Official website}} * [https://github.com/Exim/exim/wiki Exim wiki] * [https://wiki.debian.org/PkgExim4 Debian information on their packaging of Exim] {{Email servers}} {{Authority control}} [[Category:Message transfer agents]] [[Category:Free email server software]] [[Category:Free email software]] [[Category:Cross-platform software]] [[Category:Email server software for Linux]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:Authority control
(
edit
)
Template:Cite book
(
edit
)
Template:Cite web
(
edit
)
Template:Email servers
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Mono
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Refbegin
(
edit
)
Template:Refend
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Webarchive
(
edit
)