Extended SMTP (ESMTP), sometimes referred to as Enhanced SMTP, is a definition of protocol extensions to the Simple Mail Transfer Protocol standard. The extension format was defined in November 1995 in IETF publication RFC 1869 which established a general structure for all existing and future extensions.
ESMTP defines consistent and manageable means by which ESMTP clients and servers can be identified and servers can indicate supported extensions.
ESMTP is a protocol used to transport internet mail. It is used as both an inter-server transport protocol and (with restricted behavior enforced) a mail submission protocol.
The main identification feature is for ESMTP clients to open a transmission with the command EHLO (Extended HELLO), rather than HELO (Hello, the original RFC 821 standard). A server will respond with success (code 250), failure (code 550) or error (code 500, 501, 502, 504, or 421), depending on its configuration. An ESMTP server would return the code 250 OK in a multi-line reply with its domain and a list of keywords to indicate supported extensions. A RFC 821 compliant server would return error code 500, allowing ESMTP clients to try either HELO or QUIT.
Each service extension is defined in an approved format in subsequent RFCs and registered with the Internet Assigned Numbers Authority (IANA). The first definitions were the RFC 821 optional services - SEND, SOML (Send or Mail), SAML (Send and Mail), EXPN, HELP, and TURN. The format of additional SMTP verbs was set and for new parameters in MAIL and RCPT.
Some relatively common keywords (not all of them corresponding to commands) used today are:
8BITMIME— 8 bit data transmission, RFC 6152
TURNfor On-Demand Mail Relay, RFC 2645
AUTH— Authenticated SMTP, RFC 4954
CHUNKING— Chunking, RFC 3030
DSN— Delivery status notification, RFC 3461 (See Variable envelope return path)
ETRN— Extended version of remote message queue starting command
TURN, RFC 1985
HELP— Supply helpful information, RFC 821
PIPELINING— Command pipelining, RFC 2920
SIZE— Message size declaration, RFC 1870
STARTTLS— Transport layer security, RFC 3207 (2002)
SMTPUTF8— Allow UTF-8 encoding in mailbox names and header fields, RFC 6531
UTF8SMTP— Allow UTF-8 encoding in mailbox names and header fields, RFC 5336 (deprecated)
The ESMTP format was restated in RFC 2821 (superseding RFC 821) and updated to the latest definition in RFC 5321 in 2008. Support for the EHLO command in servers became mandatory, and HELO designated a required fallback.
Non-standard, unregistered, service extensions can be used by bilateral agreement, these services are indicated by an EHLO message keyword starting with "X", and with any additional parameters or verbs similarly marked.
SMTP commands are case-insensitive. They are presented here in capitalized form for emphasis only. An SMTP server that requires a specific capitalization method is a violation of the standard.
List of supporting servers
- Postfix source code patch may be necessary for RFC 6531 UTF-8 header support.
- Sendmail source code patch necessary for UTF8SMTP support
- MailEnable Support only in Enterprise Edition
- MagicMail Pipe-lining not used, check on the latest status of listed features.
The 8BITMIME extension was standardized in 1994. It facilitates the transparent exchange of e-mail messages containing octets outside the seven-bit ASCII character set. Prior to the availability of 8BITMIME implementations, mail user agents employed several techniques to cope with the seven-bit limitation, such as binary-to-text encodings (including ones provided by MIME) and UTF-7. However, each of these workarounds inflates the required amount of data for transmission of non-ASCII text. Some non-ESMTP servers allowed the sending of 8-bit characters, but it is risky to send such data to a server whose 8-bit capabilities are unknown.
List of supporting servers
At least the following servers advertise the 8BITMIME extension:
- Apache James (since 2.3.0a1)
- Citadel (since 7.30)
- Courier Mail Server
- IIS SMTP Service
- Kerio Connect
- Lotus Domino
- MDaemon Messaging Server
- Microsoft Exchange Server (as of Exchange Server 2000)
- Novell GroupWise
- Sendmail (since 6.57)
The following servers can be configured to advertise 8BITMIME, but do not perform conversion of 8-bit data to 7-bit when connecting to non-8BITMIME relays:
- Exim and qmail do not translate eight-bit messages to seven-bit when making an attempt to relay 8-bit data to non-8BITMIME peers, as is required by the RFC. This does not cause problems in practice, since virtually all modern mail relays are 8-bit clean.
- Microsoft Exchange Server 2003 advertises 8BITMIME by default, but relaying to a non-8BITMIME peer results in a bounce. This is allowed by RFC 6152 section 3.
As of June 2005[update], the following servers do not implement the extension:
- Microsoft Exchange Internet Mail Service (through version 5.5)
- Netscape Messaging Server 4.15
Remote Message Queue Starting is a feature of SMTP that permits a remote host to start processing of the mail queue on a server so it may receive messages destined to it by sending the TURN command. This feature however was deemed insecure and was extended in ESMTP with the ETRN command which operates more securely using an authentication method based on Domain Name System information.
The SMTP-AUTH extension provides an access control mechanism. It consists of an authentication step through which the client effectively logs in to the mail server during the process of sending mail. Servers that support SMTP-AUTH can usually be configured to require clients to use this extension, ensuring the true identity of the sender is known. The SMTP-AUTH extension is defined in RFC 4954.
SMTP-AUTH can be used to allow legitimate users to relay mail while denying relay service to unauthorized users, such as spammers. It does not necessarily guarantee the authenticity of either the SMTP envelope sender or the RFC 2822 "From:" header. For example, spoofing, in which one sender masquerades as someone else, is still possible with SMTP-AUTH unless the server is configured to limit message from-addresses to addresses this AUTHed user is authorized for.
The SMTP-AUTH extension also allows one mail server to indicate to another that the sender has been authenticated when relaying mail. In general this requires the recipient server to trust the sending server, meaning that this aspect of SMTP-AUTH is rarely used on the Internet. The recipient of an e-mail message cannot tell whether the sender was authenticated, so use of SMTP-AUTH is only a very partial solution to the problem of spam.
While SMTP-AUTH is a security improvement over unauthenticated SMTP, it won't eliminate all abuse. Common passwords can be guessed in a brute force attack. Even a secure password can be stolen if a user's machine is infected, for example, by insecure web browsing. A good password policy and per-account rate limits on outgoing mail are two very effective countermeasures. Domains that implement these countermeasures for their outgoing mail servers will be much less tempting targets.
The SMTPUTF8 extension allows UTF-8 encoding in mailbox names and header fields. This provides the capability for sending email to internationalized addresses such as Pelé@example.com, δοκιμή@παράδειγμα.δοκιμή, and 测试@测试.测试. This extension is defined in RFC 6531.
List of supporting servers
- Sendmail (Under development)
- Postfix (Under development)
List of supporting local servers
Local delivery servers (LMTP)
List of supporting clients
- VMime (Under development)
- SMTP Authentication
- CRAM-MD5 (a SASL mechanism for ESMTPA) RFC 2195
- Simple Authentication and Security Layer (SASL) RFC 4422
- List of mail servers
- RFC 3516, Internet Message Access Protocol Binary Content Extension
- "SMTP Service Extension Parameters". IANA. Retrieved 5 November 2013.
- RFC 1653 - SMTP Service Extension for Message Size Declaration. Tools.ietf.org. Retrieved on 2013-07-17.
- James Server - ChangeLog. James.apache.org. Retrieved on 2013-07-17.
- 8BITMIME service advertised in response to EHLO on gmail-smtp-in.l.google.com port 25, checked 23 November 2011
- Qmail bugs and wishlist. Home.pages.de. Retrieved on 2013-07-17.
- The 8BITMIME extension. Cr.yp.to. Retrieved on 2013-07-17.
- RFC 1985, SMTP Service Extension for Remote Message Queue Starting, J. De Winter, The Internet Society (August 1996)
- IANA registry of mail parameters includes service extension keywords
- RFC 1869 SMTP Service Extensions
- RFC 5321 Simple Mail Transfer Protocol
- RFC 4954 - SMTP Service Extension for Authentication (obsoletes RFC 2554)
- RFC 3848 - SMTP and LMTP Transmission Types Registration (with ESMTPA)
- RFC 6409 - Message Submission for Mail (obsoletes RFC 4409, which obsoletes RFC 2476)