Difference between revisions of "Mail server"

From CNM Wiki
Jump to: navigation, search
 
(102 intermediate revisions by the same user not shown)
Line 1: Line 1:
A [[mail server]] (hereinafter, the ''Server'') is any digital construct that is located in a computer network under its distinguishable hostname in order to transfer [[email|electronic mail message]]s (or, simply, [[email]]s) from [[mail user agent]]s ([[mail user agent|MUA]]s) to [[mail exchanger]]s ([[mail exchanger|MX host]]s) and vice versa.
+
A [[mail server]] (hereinafter, the ''Server'') is any digital construct that is located in a computer network under its distinguishable [[hostname]] in order to accept, analyze, adjust, clarify, and transfer [[email|electronic mail message]]s (or, simply, [[email]]s) from [[email client]]s to [[mail exchanger]]s ([[mail exchanger|MX host]]s) and vice versa.
  
The ''Server'' can also refer to [[mail server software]]. More broadly, [[email software]] may refer to all the software utilized for the ''Servers'', [[mail user agent|MUA]]s, or [[mail exchanger]]s.  
+
The ''Server'' can also refer to [[mail server software]]. More broadly, [[email software]] may refer to all the software utilized for [[email client]]s, the ''Servers'', or [[mail exchanger]]s.  
  
  
Line 7: Line 7:
  
 
===Protocols===
 
===Protocols===
from or to other ''Servers'' most commonly using the [[Simple Mail Transfer Protocol]] ([[Simple Mail Transfer Protocol|SMTP]]) or its modifications. The ''Servers'' may also take the messages from sender's [[mail user agent]]s ([[mail user agent|MUA]]s) and deliver those to recipient's [[mail user agent|MUA]]s, usually, using [[POP3]] and/or [[IMAP]] protocols.  
+
:To communicate with:
 +
#[[Mail exchanger]]s, all the ''Servers'' use the [[Simple Mail Transfer Protocol]] ([[Simple Mail Transfer Protocol|SMTP]]).
 +
#[[Email client]]s, the ''Servers'' use a variety of protocols, most commonly, [[POP3]] and/or [[IMAP]].
  
 
===Functions===
 
===Functions===
:The ''Server'' may be one or more of the following:
+
:With regard to:
:#'''[[Mail submission agent]]''' (also known as [[outgoing mail server]], [[message submission agent]] or by its acronym [[MSA]]), which is a [[computer application]] used to accept, analyze, correct, and send [[email]]s that end-users enter into their [[mail user agent|MUA]]s;
+
:*'''Outgoing''' messages, the ''Servers'' may be designed to:
:#'''[[Mail transfer agent]]''' (also known as [[message transfer agent]] or by its acronym [[MTA]]), which is a [[computer application]] used to transfer [[email]]s between computers;
+
:*#Accept messages from [[email client]]s.
:#'''[[Mail exchanger]]''' (also known as [[mail relay]], [[message exchanger]] or [[MX]], and [[MX host]]), which is a [[computer application]] that locates [[DNS record]]s such as [[MX record]]s and use those in order to route [[email]]s;
+
:*#Analyze messages looking for their inconsistencies and/or missing data.
:#'''[[Mail delivery agent]]''' (also known as [[incoming mail server]], [[message delivery agent]] or by its acronym [[MDA]]), which is a [[computer application]] used to deliver an [[email]] to its recipient's [[mail user agent|MUA]].
+
:*#Adjust messages while correcting inconsistencies and/or adding the missing data.
 +
:*#Transfer messages to [[mail exchanger]]s.
 +
:*'''Incoming''' messages, the ''Servers'' may be designed to:
 +
:*#Accept messages from [[mail exchanger]]s.
 +
:*#Analyze messages looking for their inconsistencies and/or missing data.
 +
:*#Add information about the found inconsistencies and/or missing data to the messages. This information may further be used by [[email client]]s to combat spam.
 +
:*#Transfer messages to [[email client]]s.
  
===Process model===
+
===Hosting===
:The following model illustrates the process of electronic mail message transfer:
+
:To communicate with [[email client]]s and [[mail exchanger]]s, the ''Servers'' shall be located between those two.
:#A common sender enters some electronic mail message to his or her [[mail user agent|MUA]];
 
:#The [[mail user agent|MUA]] transfers the message to a [[mail submission agent]];
 
:#The [[mail submission agent]] transfers the message to a [[mail exchanger]];
 
:#The [[mail exchanger]] finds the location of recipient's [[mail delivery agent]] in order to transfer the message to this agent directly or through those [[mail exchanger]]s that communicate with the recipient's [[mail delivery agent]];
 
:#The [[mail delivery agent]] transfers the message to receiver's [[mail user agent|MUA]] or [[mail user agent|MUA]]s;
 
:#The recipient now is able to read the message and send the response.
 
  
===Locations===
+
:#'''[[Email client]]s''' are hosted at either:
:Depending on their functionality, the ''Servers'' are hosted in two types of locations:
+
:#*End-user devices such as a mail app on a cell phone; or
:*[[Internet service provider]]s ([[Internet service provider|ISP]]s) tend to run both [[mail exchanger]]s and [[DNS resolver]]s, which provide [[mail exchanger]]s with [[DNS record]]s.
+
:#*Mail service provider such as [[Gmail]] locations.
:*[[Mail submission agent|mail submission]], [[mail transfer agent|mail transfer]], and [[mail delivery agent]]s are usually hosted by local computing devices that are connected to the [[Internet]].
+
:#'''The ''Servers''''' are hosted by local computing devices that are connected to the [[Internet]]. On the one side, they can be colocated with [[email client]]s, especially if the [[email client]] is hosted by a mail service provider. On another side, the ''Server'' can can colocated with [[mail exchanger]]s when the mail service provider is an [[Internet service provider]] ([[Internet service provider|ISP]]). [[Unix]]-based [[operating system]]s include the ''Server'' in their bundles, so do some [[end-user application]]s such as [[MediaWiki]], [[Moodle]], and [[Redmine]]. At the same time, the ''Servers'' can also be hosted separately from [[email client]]s and [[mail exchanger]]s.
 +
:#'''[[Mail exchanger]]s''' are hosted by [[Internet service provider]]s ([[Internet service provider|ISP]]s), who also run [[DNS resolver]]s, which provide [[mail exchanger]]s with [[DNS record]]s.
  
==Records==
+
===Agents===
:''Main wikipage: [[DNS record]]''
+
:*'''[[Mail submission agent]]''' (also known as [[outgoing mail server]], [[message submission agent]] or by its acronym [[MSA]]), which is a [[software application]] used to accept, analyze, correct, and send [[email]]s that end-users enter into their [[email client]]s;
Several [[DNS record]]s are used to both evaluate sent mail and map mail transfers.
+
:*'''[[Mail transfer agent]]''' (also known as [[message transfer agent]] or by its acronym [[MTA]]), which is a [[software application]] used to transfer [[email]]s between computers;
 +
:*'''[[Mail delivery agent]]''' (also known as [[incoming mail server]], [[message delivery agent]] or by its acronym [[MDA]]), which is a [[software application]] used to deliver an [[email]] to its recipient's [[email client]].
  
===A record===
+
==Best practices==
:''Main wikipage: [[A record]]''
+
*https://skrilnetz.net/setup-your-own-mailserver/
 +
*https://www.linuxbabe.com/mail-server/block-email-spam-postfix
 +
*https://manuals.gfi.com/en/kerio/connect/content/server-configuration/mail-delivery-and-dns-records/essential-dns-records-for-mail-delivery-and-spam-protection-1223.html
 +
*https://www.cyberpunk.rs/mail-server-setup-postfix
  
:[[Mail exchanger]]s look for [[A record]]s to locate the [[IPv4 address]] of the recipient's host device. An example of this record is<blockquote><code>mail.friendsofcnm.org. IN A 134.209.40.232</code></blockquote>
+
==Software==
  
===MX record===
+
===General comparison===
:''Main wikipage: [[MX record]]''
+
:{|class="wikitable" width=100% style="text-align:center;"
 +
|+General comparison of the actively-developed ''Servers''
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|-
 +
|rowspan="4"|Legal properties
 +
!Ownership
 +
|[[open-source|OSS]]||[[Open-source|OSS]]||[[Open-source|OSS]]||[[Proprietary]]||[[open-source|OSS]]
 +
|-
 +
!Developer
 +
|Sam Varshavchik||Timo Sirainen, contributors||Community||[[Microsoft]]||Wietse Venema, contributors
 +
|-
 +
![[Software license|License]]
 +
|[[GNU General Public License|GPL]]||[[MIT License|MIT-L]], [[LGPLv2]]||[[GNU General Public License|GPL]]||Unknown||[[IBM Public License|IBM-PL]], [[Eclipse Public License|EPL]]
 +
|-
 +
!rowspan="2"|Latest release
 +
|1.0.8||2.3.5||4.92||2019&nbsp;RTM||3.4.6
 +
|-
 +
|rowspan="2"|History
 +
|6/8/2019||3/5/2019||2/10/2019||10/22/2018||06/29/2019
 +
|-
 +
!Introduction
 +
|2000||2002||1995||1996||1998
 +
|-
 +
|rowspan="2"|[[Operating system|OS]]
 +
![[Linux]]/[[Unix]]
 +
|Yes||Yes||Yes||No||Yes
 +
|-
 +
![[Microsoft Windows|Windows]]
 +
|No||No||No||Yes||No
 +
|-
 +
|rowspan="4"|Technology properties
 +
!Description
 +
|Full-stack mail server best known for its IMAP server component||IMAP and POP3 server||SMTP server||Full-stack mail and calendar server||SMTP server
 +
|-
 +
!Database
 +
|No||Yes||Yes||via [[ESE]]||Yes
 +
|-
 +
!File system
 +
|[[maildir]]||[[maildir]], [[mbox]], [[dbox]]||Own||Own||Own
 +
|-
 +
![[Webmail]]
 +
|Yes||No||No||Yes||No
 +
|-
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|}
  
:Any [[MX record]] is the [[DNS record]] that identifies the server that handles email address for the [[hostname]]. ''MX'' is an abbreviation for ''mail exchanger''.
+
===Communication protocols===
 +
:{|class="wikitable" width=100% style="text-align:center;"
 +
|+[[Communication protocol]]s supported by the popular ''Clients''
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|-
 +
|Transfer
 +
![[SMTP]]
 +
|Yes||No||Yes||Yes||Yes
 +
|-
 +
|rowspan="2"|Access
 +
![[IMAP]]
 +
|Yes||Yes||via [[Dovecot]], etc.||Yes||via [[Dovecot]], etc.
 +
|-
 +
![[POP3]]
 +
|Yes||Yes||via [[Dovecot]], etc.||Yes||via [[Dovecot]], etc.
 +
|-
 +
|Compatibility
 +
![[IPv6]]
 +
|Yes||Yes||Yes||Yes||Yes
 +
|-
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|}
  
:Each [[MX record]] contains three pieces of information: the [[hostname]], the priority, and the [[hostname]] of the mail server that handles mail for the host device. The sample of the [[MX record]] is as follows: <code>friendsofcnm.org IN MX 10 friendsofcnm.org</code>, where:
+
===Access===
:{|class="wikitable" width=100%
+
:{|class="wikitable" width=100% style="text-align:center;"
!Sample&nbsp;code
+
|+Access features in the popular ''Clients''
|style="text-align:center;"|Field
+
!Category
!Description!!Values
+
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|-
 +
|rowspan="4"|Protocols
 +
![[LDAP]]
 +
|Yes||Yes||Yes||Yes||Yes
 +
|-
 +
![[SMTP AUTH]]
 +
|Yes||No||Yes||Yes||Yes
 +
|-
 +
!POP before SMTP
 +
|Yes||via DRAC plugin||Yes||Unknown||No
 
|-
 
|-
|style="background-color:#fff;"|<code>friendsofcnm.org</code>
+
![[APOP]]
!Labels
+
|Yes||Yes||Yes||Yes||No
|One or more labels of the [[hostname]] and [[TLD]] name.||Selected
 
 
|-
 
|-
|style="background-color:#fff;"|<code>IN</code>
+
|rowspan="2"|Mechanisms
!Class
+
!APOP and SASL
|The [[Internet]] or [[intranet]]; other options are all outdated.||IN
+
|rowspan="2"|Managed by Courier authentication library which can use PAM, Userdb, PostgreSQL, MySQL, and EXTERNAL.||Not an SMTP server, but offers [[Dovecot SASL]] to [[MTA]]s: ANONYMOUS, PLAIN, LOGIN, CRAM-MD5, DIGEST-MD5, SCRAM-SHA1, EXTERNAL, GSSAPI, NTLM, OTP, SKEY, RPA.||rowspan="2"|Cyrus SASL, Dovecot SASL, GNU SASL, CRAM-MD5, Heimdal GSSAPI, PLAIN, LOGIN, SPA||rowspan="2"|LOGIN, NTLM||rowspan="2"|Supports all Cyrus SASL authentication methods except for APOP.
 
|-
 
|-
|style="background-color:#fff;"|<code>MX</code>
+
!Other
![[MX record|Record]]
+
|PAM, MySQL, PostgreSQL, SQLite, Kerberos 5, proxied IMAP auth, getpwent, shadow, SIA, BSDauth, Vpopmail.
|''MX'' stands for [[MX record]] and sets up the relationship between hostname labels and [[IP address]]||Stable
 
 
|-
 
|-
|style="background-color:#fff;"|<code>10</code>
+
|rowspan="2"|Support
!Priority
+
!Filesystem
|A numerical value that signifies the priority of this particular [[MX record]] and, consequently, for the mail server. The values used for this are only important if more than one mail server is used. The lower the value of the priority field, the higher the priority of the mail server.||Assigned
+
|Yes||Yes||Yes||No||Yes
 
|-
 
|-
|style="background-color:#fff;"|<code>mail.friendsofcnm.org</code>
+
!Database
!Mail server hostname
+
|Yes||Yes||Yes||No||Yes
|The [[hostname]] of the mail server that handles email for this domain. This hostname is a google address when [[Google Apps]] handle emails for this host device. Any mail server hostname should have a validly configured [[A record]] in order to receive emails smoothly.||Assigned
+
|-
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 
|}
 
|}
  
===TXT record===
+
===Security===
:''Main wikipage: [[TXT record]]''
+
:{|class="wikitable" width=100% style="text-align:center;"
 +
|+Security features in the popular ''Clients''
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|-
 +
|rowspan="3"|[[SSL]]/TLS support
 +
!SMTP over TLS
 +
|Yes||No||Yes||Yes||Yes
 +
|-
 +
!POP over TLS
 +
|Yes||Yes||No||Yes||No
 +
|-
 +
![[SSL]]
 +
|Yes||Yes||Yes||Yes||Yes
 +
|-
 +
|rowspan="2"|Security features other than [[SSL]]/TLS
 +
!IMAP IDLE
 +
|Yes||Yes||via [[Dovecot]], etc.||Yes||via [[Dovecot]], etc.
 +
|-
 +
!DANE
 +
|No||Unknown||Yes||Unknown||Yes
 +
|-
 +
|Filtering
 +
!Sieve
 +
|[[maildrop]]||Yes||Yes||Unknown||No
 +
|-
 +
!Category
 +
|Features
 +
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 +
|}
  
:Any [[TXT record]] is a [[DNS record]] that allows for storage of human-readable and machine-readable texts that, if posted, would be assigned to a specific [[hostname]].
+
===Antispam===
 
+
:{|class="wikitable" width=100% style="text-align:center;"
:With regard to machine-readable texts, [[TXT record]]s may serve multiple purposes, including:
+
|+Antispam features in the popular ''Clients''
:*[[Sender policy framework]] ([[SPF]]) data storage. This data confirms the actual systems that are authorized to send mail on behalf of the given [[hostname]]. This is useful in the prevention of spam emails being sent with a forged sender address originating from the particular host device. RFC 4408 discourages this practice as "not optimal," however, because SPF now has its own DNS resource record type (code 99);
+
!Category
:*[[DomainKeys Identified Mail]] ([[DKIM]]) data. This data allows a receiving mail server to authenticate entities that have signed a specific email message. [[DKIM]] is similar to [[SPF]] in that it can help reduce spam email from containing forged email addresses originating from your domain, but it also contains a large amount of additional functionality.
+
|Features
 
+
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
:''Main wikipage: [[A record]]''
+
|-
 
+
|rowspan="4"|Listings
:[[Mail exchanger]]s look for [[A record]]s to locate the [[IPv4 address]] of the recipient's host device. An example of this record is<blockquote><code>mail.friendsofcnm.org. 134.209.40.232</code></blockquote>
+
!DNSBL
 
+
|Yes||Unknown||Yes||Yes||Yes
Setting up the MX record
+
|-
 
+
!SURBL
c7Apht1[1]
+
|Unknown||Unknown||Yes||Unknown||Unknown
 
+
|-
(There is a ‘dot’ after the domain name)
+
!Spamtraps
Setting up the SPF record
+
|Yes||Unknown||Yes||Unknown||Unknown
 
+
|-
We create a new TXT record
+
!Greylisting
 
+
|Yes||Unknown||Yes||Yes||Yes
"v=spf1 a mx ip4:1.2.3.4 -all"
+
|-
 
+
|rowspan="3"|Analysis-based
cyFoSjh[1]
+
!SPF
 
+
|Yes||Unknown||Optional at build time||Yes||Yes
The SPF record protects from email spoofing. It will simply tell other mail servers that only our server is authorized to send emails for yourdomain.com (more aboutSPF).
+
|-
Setting up the DMARC record
+
!DKIM
 
+
|Yes||Unknown||Yes||Unknown||Optional
We create a new TXT record named _dmarc.yourdomain.com.
+
|-
(There is a ‘dot’ after the domain name)
+
!DMARC
 
+
|Yes||Unknown||Optional at build time||Unknown||Optional
"v=DMARC1; p=quarantine; rua=mailto:postmaster@yourdomain.com"
+
|-
 
+
|rowspan="5"|Manipulation-based
Now we will setup the hostname for the PTR record
+
!Tarpit
 
+
|Yes||Unknown||Yes||Yes||Unknown
Gg6s1vv
+
|-
Our configuration should look similar to this
+
!Bayesian filters
 
+
|Yes||Unknown||via [[Apache SpamAssassin|SpamAssassin]], etc.||Unknown||via [[Apache SpamAssassin|SpamAssassin]], etc.
o1BA9Fy
 
 
 
It will take a while to propagate the new configuration throughout the entire internet.
 
 
 
===PTR record===
 
:''Main wikipage: [[PTR record]]''
 
 
 
:Any [[PTR record]] is a [[DNS record]] that translates a [[hostname]] into an [[IP address]]. ''PTR'' is an abbreviation for ''pointer''; [[PTR record]]s ''point'' to [[IP address]]es. In comparison with [[A record]]s, [[PTR record]]s perform the exact opposite function.
 
 
 
:[[PTR record]]s use the following format: <code><IP address in a reverse order>.in-addr.arpa PTR <hostname></code>. For instance, <code>1.93.89.159.in-addr.apra PTR friendsofcnm.org</code>, where:
 
:{|class="wikitable" width=100%
 
!Sample&nbsp;code
 
|style="text-align:center;"|Field
 
!Description!!Values
 
 
|-
 
|-
|style="background-color:#fff;"|<code>1.93.89.159</code>
+
!Regular expressions
!Reversed IP address
+
|Yes||Unknown||Yes||Unknown||Yes
|The [[IP address]] of the location that the resulting [[hostname]] points to in a reverse order. The actual [[IP address]] used in this example is <code>159.89.93.1</code>||Assigned
 
 
|-
 
|-
|style="background-color:#fff;"|<code>.in-addr.arpa</code>
+
!Embedded Antivirus
!Domain
+
|Yes, [[ClamAV]]||Unknown||Optional, any||Unknown||Optional, via content filter interface
|The domain name that historically arrived from the times when the Internet was called ''Arpa''. ''In-addr'' is an abbreviation for ''internet address''.||No other options
 
 
|-
 
|-
|style="background-color:#fff;"|<code>PTR</code>
+
!Embedded Antispam
![[PTR record|Record]]
+
|Yes||Unknown||Optional, any||Unknown||Optional, via content filter interface
|''PTR'' stands for [[PTR record]] and sets up the relationship between [[IP address]] and [[hostname]].||Stable
 
 
|-
 
|-
|style="background-color:#fff;"|<code>friendsofcnm.org</code>
+
!Category
![[Hostname]]
+
|Features
|The [[hostname]] that points to the [[IP address]].||Selected
+
![[Courier Mail Server|Courier]]!![[Dovecot]]!![[Exim]]!![[Microsoft Exchange Server|MS&nbsp;Exchange]]||[[Postfix]]
 
|}
 
|}
  
:[[PTR record]]s are needed for outgoing mail servers such as [[Postfix]], because most of the mail providers reject or mark as spam messages received by mail servers without valid reverse dns configuration such as a missing [[PTR record]] or mismatch with an [[A record]] for the [[hostname]].
+
===Other notable software===
 
+
*[[Cyrus IMAP]]
==Best practices==
+
*[[Kolab]]
*https://skrilnetz.net/setup-your-own-mailserver/
+
*[[Sendmail]]
*https://www.linuxbabe.com/mail-server/block-email-spam-postfix
+
*[[Zimbra]]
*https://manuals.gfi.com/en/kerio/connect/content/server-configuration/mail-delivery-and-dns-records/essential-dns-records-for-mail-delivery-and-spam-protection-1223.html
 
*https://www.cyberpunk.rs/mail-server-setup-postfix
 

Latest revision as of 16:03, 17 April 2020

A mail server (hereinafter, the Server) is any digital construct that is located in a computer network under its distinguishable hostname in order to accept, analyze, adjust, clarify, and transfer electronic mail messages (or, simply, emails) from email clients to mail exchangers (MX hosts) and vice versa.

The Server can also refer to mail server software. More broadly, email software may refer to all the software utilized for email clients, the Servers, or mail exchangers.


Features

Protocols

To communicate with:
  1. Mail exchangers, all the Servers use the Simple Mail Transfer Protocol (SMTP).
  2. Email clients, the Servers use a variety of protocols, most commonly, POP3 and/or IMAP.

Functions

With regard to:
  • Outgoing messages, the Servers may be designed to:
    1. Accept messages from email clients.
    2. Analyze messages looking for their inconsistencies and/or missing data.
    3. Adjust messages while correcting inconsistencies and/or adding the missing data.
    4. Transfer messages to mail exchangers.
  • Incoming messages, the Servers may be designed to:
    1. Accept messages from mail exchangers.
    2. Analyze messages looking for their inconsistencies and/or missing data.
    3. Add information about the found inconsistencies and/or missing data to the messages. This information may further be used by email clients to combat spam.
    4. Transfer messages to email clients.

Hosting

To communicate with email clients and mail exchangers, the Servers shall be located between those two.
  1. Email clients are hosted at either:
    • End-user devices such as a mail app on a cell phone; or
    • Mail service provider such as Gmail locations.
  2. The Servers are hosted by local computing devices that are connected to the Internet. On the one side, they can be colocated with email clients, especially if the email client is hosted by a mail service provider. On another side, the Server can can colocated with mail exchangers when the mail service provider is an Internet service provider (ISP). Unix-based operating systems include the Server in their bundles, so do some end-user applications such as MediaWiki, Moodle, and Redmine. At the same time, the Servers can also be hosted separately from email clients and mail exchangers.
  3. Mail exchangers are hosted by Internet service providers (ISPs), who also run DNS resolvers, which provide mail exchangers with DNS records.

Agents

Best practices

Software

General comparison

General comparison of the actively-developed Servers
Category Features Courier Dovecot Exim MS Exchange Postfix
Legal properties Ownership OSS OSS OSS Proprietary OSS
Developer Sam Varshavchik Timo Sirainen, contributors Community Microsoft Wietse Venema, contributors
License GPL MIT-L, LGPLv2 GPL Unknown IBM-PL, EPL
Latest release 1.0.8 2.3.5 4.92 2019 RTM 3.4.6
History 6/8/2019 3/5/2019 2/10/2019 10/22/2018 06/29/2019
Introduction 2000 2002 1995 1996 1998
OS Linux/Unix Yes Yes Yes No Yes
Windows No No No Yes No
Technology properties Description Full-stack mail server best known for its IMAP server component IMAP and POP3 server SMTP server Full-stack mail and calendar server SMTP server
Database No Yes Yes via ESE Yes
File system maildir maildir, mbox, dbox Own Own Own
Webmail Yes No No Yes No
Category Features Courier Dovecot Exim MS Exchange Postfix

Communication protocols

Communication protocols supported by the popular Clients
Category Features Courier Dovecot Exim MS Exchange Postfix
Transfer SMTP Yes No Yes Yes Yes
Access IMAP Yes Yes via Dovecot, etc. Yes via Dovecot, etc.
POP3 Yes Yes via Dovecot, etc. Yes via Dovecot, etc.
Compatibility IPv6 Yes Yes Yes Yes Yes
Category Features Courier Dovecot Exim MS Exchange Postfix

Access

Access features in the popular Clients
Category Features Courier Dovecot Exim MS Exchange Postfix
Protocols LDAP Yes Yes Yes Yes Yes
SMTP AUTH Yes No Yes Yes Yes
POP before SMTP Yes via DRAC plugin Yes Unknown No
APOP Yes Yes Yes Yes No
Mechanisms APOP and SASL Managed by Courier authentication library which can use PAM, Userdb, PostgreSQL, MySQL, and EXTERNAL. Not an SMTP server, but offers Dovecot SASL to MTAs: ANONYMOUS, PLAIN, LOGIN, CRAM-MD5, DIGEST-MD5, SCRAM-SHA1, EXTERNAL, GSSAPI, NTLM, OTP, SKEY, RPA. Cyrus SASL, Dovecot SASL, GNU SASL, CRAM-MD5, Heimdal GSSAPI, PLAIN, LOGIN, SPA LOGIN, NTLM Supports all Cyrus SASL authentication methods except for APOP.
Other PAM, MySQL, PostgreSQL, SQLite, Kerberos 5, proxied IMAP auth, getpwent, shadow, SIA, BSDauth, Vpopmail.
Support Filesystem Yes Yes Yes No Yes
Database Yes Yes Yes No Yes
Category Features Courier Dovecot Exim MS Exchange Postfix

Security

Security features in the popular Clients
Category Features Courier Dovecot Exim MS Exchange Postfix
SSL/TLS support SMTP over TLS Yes No Yes Yes Yes
POP over TLS Yes Yes No Yes No
SSL Yes Yes Yes Yes Yes
Security features other than SSL/TLS IMAP IDLE Yes Yes via Dovecot, etc. Yes via Dovecot, etc.
DANE No Unknown Yes Unknown Yes
Filtering Sieve maildrop Yes Yes Unknown No
Category Features Courier Dovecot Exim MS Exchange Postfix

Antispam

Antispam features in the popular Clients
Category Features Courier Dovecot Exim MS Exchange Postfix
Listings DNSBL Yes Unknown Yes Yes Yes
SURBL Unknown Unknown Yes Unknown Unknown
Spamtraps Yes Unknown Yes Unknown Unknown
Greylisting Yes Unknown Yes Yes Yes
Analysis-based SPF Yes Unknown Optional at build time Yes Yes
DKIM Yes Unknown Yes Unknown Optional
DMARC Yes Unknown Optional at build time Unknown Optional
Manipulation-based Tarpit Yes Unknown Yes Yes Unknown
Bayesian filters Yes Unknown via SpamAssassin, etc. Unknown via SpamAssassin, etc.
Regular expressions Yes Unknown Yes Unknown Yes
Embedded Antivirus Yes, ClamAV Unknown Optional, any Unknown Optional, via content filter interface
Embedded Antispam Yes Unknown Optional, any Unknown Optional, via content filter interface
Category Features Courier Dovecot Exim MS Exchange Postfix

Other notable software