SMTP Require TLS Option
Altmode Networks
Los Altos
California
94024
United States of America
fenton@bluepopcorn.net
General
Internet Engineering Task Force
SMTP
The SMTP STARTTLS option, used in negotiating transport-level
encryption of SMTP connections, is not as useful from a security
standpoint as it might be because of its opportunistic nature;
message delivery is, by default, prioritized over security. This
document describes an SMTP service extension, REQUIRETLS, and
a message header field, TLS-Required. If the REQUIRETLS option or
TLS-Required message header field is used when sending a message,
it asserts a request on the part of the message sender to
override the default negotiation of TLS, either by requiring that
TLS be negotiated when the message is relayed or by requesting
that recipient-side policy mechanisms such as MTA-STS and DNS-Based
Authentication of Named Entities (DANE) be
ignored when relaying a message for which security is
unimportant.
Introduction
The SMTP STARTTLS service extension provides a
means by which an SMTP server and client can establish a
Transport Layer Security (TLS) protected session for the
transmission of email messages. By default, TLS is used only upon
mutual agreement (successful negotiation) of STARTTLS between the
client and server; if this is not possible, the message is sent
without transport encryption. Furthermore, it is common practice
for the client to negotiate TLS even if the SMTP server's
certificate is invalid.
Policy mechanisms such as DANE
and MTA-STS may
impose requirements for the use of TLS for email destined for
some domains. However, such policies do not allow the sender to
specify which messages are more sensitive and require
transport-level encryption and which ones are less sensitive and
ought to be relayed even if TLS cannot be negotiated
successfully.
The default opportunistic nature of SMTP TLS enables several
on-the-wire attacks on SMTP security between MTAs. These
include passive eavesdropping on connections for which TLS is not
used, interference in the SMTP protocol to prevent TLS from being
negotiated (presumably accompanied by eavesdropping), and insertion
of a man-in-the-middle attacker exploiting the lack of
server authentication by the client. Attacks are described
in more detail in the section
of this
document.
REQUIRETLS consists of two mechanisms: an SMTP service
extension and a message header field. The service extension is
used to specify that a given message sent during a particular session
MUST be sent over a TLS-protected session with specified security
characteristics. It also requires that the SMTP server advertise
that it supports REQUIRETLS, in effect promising that it
will honor the requirement to enforce TLS transmission and
REQUIRETLS support for onward transmission of those messages.
The TLS-Required message header field is used to convey a
request to ignore recipient-side policy mechanisms such as
MTA-STS and DANE, thereby prioritizing delivery over ability to
negotiate TLS. Unlike the service extension, the TLS-Required
header field allows the message to transit through one or more
MTAs that do not support REQUIRETLS.
Requirements Language
The key words "MUST", "MUST NOT",
"REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are
to be interpreted as described in BCP 14
when, and only when, they appear in all capitals,
as shown here.
The formal syntax uses the Augmented Backus-Naur Form (ABNF)
, including the core rules defined in
Appendix B of that document.
The REQUIRETLS Service Extension
The REQUIRETLS SMTP service extension has the following characteristics:
- The textual name of the extension is "Require TLS".
- The EHLO keyword value associated with this extension is
"REQUIRETLS".
- No additional SMTP verbs are defined by this extension.
- One optional parameter ("REQUIRETLS") is added to the MAIL
FROM command by this extension. No value is associated with
this parameter.
- The maximum length of a MAIL FROM command line is increased
by 11 octets by the possible addition of a space and the
REQUIRETLS keyword.
- One new SMTP status code is defined by this extension to
convey an error condition resulting from failure of the client to
send data to a server that does not also support
the REQUIRETLS extension.
- The REQUIRETLS extension is valid for message relay , submission , and the Local Mail Transfer Protocol
(LMTP) .
-
The ABNF syntax for the MAIL FROM parameter is as follows:
In order to specify REQUIRETLS treatment for a given message,
the REQUIRETLS option is specified in the MAIL FROM command when
that message is transmitted. This option MUST only be specified in the
context of an SMTP session meeting the security requirements of
REQUIRETLS:
- The session itself MUST employ TLS transmission.
- If the SMTP server to which the message is being transmitted
is identified through an MX record lookup, its name
MUST be validated via a DNSSEC signature on the recipient
domain's MX record, or the MX hostname MUST be
validated by an MTA-STS policy as described in . DNSSEC is defined
in ,
, and
.
- The certificate presented by the SMTP server either MUST
be verified successfully by a trust chain leading to a certificate
trusted by the SMTP client, or it MUST be verified successfully using
DANE, as specified in . For trust chains, the
choice of trusted (root) certificates is at the discretion of
the SMTP client.
- Following the negotiation of STARTTLS, the SMTP server MUST
advertise in the subsequent EHLO response that it supports REQUIRETLS.
The TLS-Required Header Field
One new message header field ,
TLS-Required, is defined by this
specification. It is used for messages for which the originator
requests that the recipient
TLS policy (including MTA-STS and
DANE) be ignored. This might be
done, for example, to report a misconfigured mail server, such as
an expired TLS certificate.
The TLS-Required header field has a single REQUIRED parameter:
- No - The SMTP client SHOULD attempt to send the message
regardless of its ability to negotiate STARTTLS with the SMTP
server, ignoring policy-based mechanisms (including MTA-STS and
DANE), if any, asserted by
the recipient domain. Nevertheless, the client SHOULD negotiate
STARTTLS with the server if available.
More than one instance of the TLS-Required header field MUST
NOT appear in a given message.
The ABNF syntax for the TLS-Required header field is as
follows:
CRLF = ]]>
REQUIRETLS Semantics
REQUIRETLS Receipt Requirements
Upon receipt of the REQUIRETLS option on a MAIL FROM command
during the receipt of a message, an SMTP server MUST tag that
message as needing REQUIRETLS handling.
Upon receipt of a message not specifying the REQUIRETLS
option on its MAIL FROM command but containing the TLS-Required
header field in its message header, an SMTP server implementing
this specification MUST tag that message with the option
specified in the TLS-Required header field. If the REQUIRETLS
MAIL FROM parameter is specified, the TLS-Required header field
MUST be ignored but MAY be included in the onward relay of the
message.
The manner in which the above tagging takes place is
implementation dependent. If the message is being locally
aliased and redistributed to multiple addresses, all instances
of the message MUST be tagged in the same manner.
REQUIRETLS Sender Requirements
Sending with TLS Required
When sending a message tagged as requiring TLS for which the
MAIL FROM return-path is not empty (an empty MAIL FROM
return-path indicating a bounce message), the sending
(client) MTA MUST:
- Look up the SMTP server to which the message is to be sent,
as described in .
- If the server lookup is accomplished via the recipient
domain's MX record (the usual case) and is not accompanied by a valid
DNSSEC signature, the client MUST also validate the SMTP
server name using MTA-STS, as described in
.
- Open an SMTP session with the peer SMTP server using the
EHLO verb.
- Establish a TLS-protected SMTP session with its peer SMTP
server and authenticate the server's certificate as specified
in or , as applicable. The hostname from the
MX record lookup (or the domain name in the absence of an MX
record where an A record is used directly) MUST match the DNS-ID
or CN-ID of the certificate presented by the server.
- Ensure that the response to the subsequent EHLO following
establishment of the TLS protection advertises the REQUIRETLS
capability.
The SMTP client SHOULD follow the recommendations in or its successor with respect to
negotiation of the TLS session.
If any of the above steps fail, the client MUST issue a QUIT
to the server and repeat steps 2-5 with each host on the
recipient domain's list of MX hosts in an attempt to find a
mail path that meets the sender's requirements. The client MAY
send other, unprotected messages to that server if it has any
such messages prior to issuing the QUIT. If there are no more MX hosts, the
client MUST NOT transmit the message to the domain.
Following such a failure, the SMTP client MUST send a
non-delivery notification to the reverse-path of the failed
message, as described in . The
following status codes SHOULD be used:
- REQUIRETLS not supported by server: 5.7.30 REQUIRETLS
support required
- Unable to establish TLS-protected SMTP session: 5.7.10
Encryption needed
Refer to for further requirements regarding
non-delivery messages.
If all REQUIRETLS requirements have been met, transmit the
message, issuing the REQUIRETLS option on the MAIL FROM command
with the required option(s), if any.
Sending with TLS Optional
Messages tagged "TLS-Required: No" are handled as
follows. When sending such a message, the sending (client)
MTA MUST:
- Look up the SMTP server to which the message is to be
sent, as described in .
- Open an SMTP session with the peer SMTP server using the
EHLO verb. Attempt to negotiate STARTTLS if possible, and
follow any policy published by the recipient domain, but do
not fail if this is unsuccessful.
Some SMTP servers may be configured to require STARTTLS
connections as a matter of policy and not accept messages in
the absence of STARTTLS. A non-delivery notification MUST be
returned to the sender if message relay fails due to an
inability to negotiate STARTTLS when required by the
server.
Since messages tagged with "TLS-Required: No" will sometimes
be sent to SMTP servers not supporting REQUIRETLS, that
option will not be uniformly observed by all SMTP relay
hops.
REQUIRETLS Submission
A Mail User Agent (MUA) or other agent making the initial introduction of a
message has the option to decide whether to require TLS. If
TLS is to be required, it MUST do so by negotiating STARTTLS
and REQUIRETLS and including the REQUIRETLS option on the MAIL
FROM command, as is done for message relay.
When TLS is not to be required, the sender MUST include the
TLS-Required header field in the message. SMTP servers
implementing this specification MUST interpret this header
field as described in .
In either case, the decision whether to specify REQUIRETLS
MAY be done based on a user interface selection or based on a
ruleset or other policy. The manner in which the decision to
require TLS is made is implementation dependent and is beyond
the scope of this specification.
Delivery of REQUIRETLS messages
Messages are usually retrieved by end users using protocols
other than SMTP such as IMAP,
POP, or Web mail systems. Mail
delivery agents supporting the REQUIRETLS SMTP option SHOULD
observe the guidelines in .
Non-delivery Message Handling
Non-delivery ("bounce") messages usually contain important
metadata about the message to which they refer, including the
original message header. They therefore MUST be protected in
the same manner as the original message.
All non-delivery messages resulting from messages with the REQUIRETLS SMTP
option, whether resulting from a REQUIRETLS error or some other issue, MUST
also specify the REQUIRETLS SMTP option unless redacted as described below.
The path from the origination of an error bounce message
back to the MAIL FROM address may not share the same REQUIRETLS
support as the forward path. Therefore, users requiring TLS are
advised to make sure that they are capable of receiving mail
using REQUIRETLS as well. Otherwise, such non-delivery messages
will be lost.
If a REQUIRETLS message is bounced, the server MUST behave
as if RET=HDRS was present, as described in . If both RET=FULL and REQUIRETLS are
present, the RET=FULL MUST be disregarded. The SMTP client for a
REQUIRETLS bounce message uses an empty MAIL FROM
return-path, as required by . When
the MAIL FROM return-path is empty, the REQUIRETLS parameter
SHOULD NOT cause a bounce message to be discarded even if the
next-hop relay does not advertise REQUIRETLS.
Senders of messages requiring TLS are advised to consider
the possibility that bounce messages will be lost as a result
of REQUIRETLS return path failure and that some information
could be leaked if a bounce message is not able to be
transmitted with REQUIRETLS.
Reorigination Considerations
In a number of situations, a mediator
originates a new message as a result of an incoming message. These
situations include but are not limited to mailing lists (including
administrative traffic such as message approval requests),
Sieve, "vacation" responders, and other
filters to which incoming
messages may be piped. These newly originated messages may essentially
be copies of the incoming message, such as with a forwarding service
or a mailing list expander. In other cases, such as with a vacation
message or a delivery notification, they will be different but might
contain parts of the original message or other information for which
the original message sender wants to influence the requirement to use
TLS transmission.
Mediators that reoriginate messages should apply REQUIRETLS requirements
in incoming messages (both requiring TLS transmission and requesting
that TLS not be required) to the reoriginated messages to the extent
feasible. A limitation to this might be that for a message requiring
TLS, redistribution to multiple addresses while retaining the TLS
requirement could result in the message not being delivered to some of
the intended recipients.
User-side mediators (such as use of Sieve rules on a user agent)
typically do not have access to the SMTP details and therefore may
not be aware of the REQUIRETLS requirement on a delivered message.
Recipients that expect sensitive traffic should avoid the use of
user-side mediators. Alternatively, if operationally feasible (such as when
forwarding to a specific, known address), they should apply REQUIRETLS
to all reoriginated messages that do not contain the "TLS-Required: No" header
field.
IANA Considerations
Per this document, IANA has added
the following keyword to the "SMTP Service Extensions" subregistry of the
"Mail Parameters" registry:
-
- EHLO Keyword:
- REQUIRETLS
- Description:
- Require TLS
- Syntax and parameters:
- (no parameters)
- Additional SMTP verbs:
- none
- MAIL and RCPT parameters:
- REQUIRETLS parameter on MAIL
- Behavior:
- Use of the REQUIRETLS parameter on the MAIL verb causes
that message to require the use of TLS and tagging with REQUIRETLS for all onward relay.
- Command length increment:
- 11 characters
Per this document, IANA has added an
entry to the "Enumerated Status Codes" subregistry of the "Simple Mail Transfer Protocol (SMTP) Enhanced Status
Codes Registry":
-
- Code:
- X.7.30
- Sample Text:
- REQUIRETLS support required
- Associated basic status code:
- 550
- Description:
- This indicates that the message was not able to be
forwarded because it was received with a REQUIRETLS requirement and none of
the SMTP servers to which the message should be forwarded provide this support.
- Reference:
- RFC 8689
- Submitter:
- J. Fenton
- Change Controller:
- IESG
Per this document, IANA has added
an entry to the "Permanent Message Header Field
Names" subregistry of the "Message Headers" registry as follows:
-
- Header field name:
- TLS-Required
- Applicable protocol:
- mail
- Status:
- standard
- Author/change controller:
- IETF
- Specification document:
- RFC 8689
Security Considerations
The purpose of REQUIRETLS is to give the originator of a
message control over the security of email they send, either by
conveying an expectation that it will be transmitted in an
encrypted form over the wire or explicitly indicating that transport
encryption is not required if it cannot be successfully
negotiated.
The following considerations apply to the REQUIRETLS service
extension but not the TLS-Required header field, since messages
specifying the header field are less concerned with transport
security.
Passive Attacks
REQUIRETLS is generally effective against passive
attackers who are merely trying to eavesdrop on an SMTP
exchange between an SMTP client and server. This assumes, of
course, the cryptographic integrity of the TLS connection
being used.
Active Attacks
Active attacks against TLS-encrypted SMTP connections can
take many forms. One such attack is to interfere in the
negotiation by changing the STARTTLS command to something
illegal such as XXXXXXXX. This causes TLS negotiation to fail
and messages to be sent in the clear, where they can be
intercepted. REQUIRETLS detects the failure of STARTTLS and
declines to send the message rather than send it
insecurely.
A second form of attack is a man-in-the-middle attack
where the attacker terminates the TLS connection rather than
the intended SMTP server. This is possible when, as is
commonly the case, the SMTP client either does not verify the
server's certificate or establishes the connection even when
the verification fails. REQUIRETLS requires successful
certificate validation before sending the message.
Another active attack involves the spoofing of DNS MX
records of the recipient domain. An attacker with this
capability could potentially cause the message to be redirected to a mail
server under the attacker's own control, which would
presumably have a valid certificate. REQUIRETLS requires that
the recipient domain's MX record lookup be validated either
using DNSSEC or via a published MTA-STS policy that specifies
the acceptable SMTP server hostname(s) for the recipient domain.
Bad-Actor MTAs
A bad-actor MTA along the message transmission path could
misrepresent its support of REQUIRETLS and/or actively strip
REQUIRETLS tags from messages it handles. However, since
intermediate MTAs are already trusted with the cleartext of
messages they handle, and are not part of the threat model
for transport-layer security, they are also not part of the
threat model for REQUIRETLS.
It should be reemphasized that since SMTP TLS is a
transport-layer security protocol, messages sent using
REQUIRETLS are not encrypted end-to-end and are visible to
MTAs that are part of the message delivery path. Messages
containing sensitive information that MTAs should not have
access to MUST be sent using end-to-end content encryption
such as OpenPGP or S/MIME.
Policy Conflicts
In some cases, the use of the TLS-Required header field may conflict
with a recipient domain policy expressed through the DANE or MTA-STS protocols.
Although these protocols encourage the use of TLS transport by advertising
the availability of TLS, the use of the "TLS-Required: No" header field represents an
explicit decision on the part of the sender not to require the use of TLS, such
as to overcome a configuration error. The recipient domain has the ultimate
ability to require TLS by not accepting messages when STARTTLS has not been
negotiated; otherwise, "TLS-Required: No" is effectively directing the client
MTA to behave as if it does not support DANE or MTA-STS.
References
Normative References
Mail Parameters
IANA
Simple Mail Transfer Protocol (SMTP) Enhanced Status
Codes Registry
IANA
Permanent Message Header Field Names
IANA
Informative References
Examples
This section is informative.
REQUIRETLS SMTP Option
The TLS-Required SMTP option is used to express the intention of
the sender to have the associated message relayed using TLS. In
the following example, lines beginning with "C:" are transmitted
from the SMTP client to the server, and lines beginning with "S:"
are transmitted in the opposite direction.
(at this point TLS negotiation takes place. The remainder of this
session occurs within TLS.)
REQUIRETLS
S: 250 OK
C: RCPT TO:
S: 250 Accepted
C: DATA
S: 354 Enter message, ending with "." on a line by itself
]]>
(message follows)
TLS-Required Header Field
The TLS-Required header field is used when the sender requests
that the mail system not heed a default policy of the recipient
domain requiring TLS. It might be used, for example, to allow
problems with the recipient domain's TLS certificate to be
reported:
To: Andy Admin
Subject: Certificate problem?
TLS-Required: No
Date: Fri, 18 Jan 2019 10:26:55 -0800
Message-ID: <5c421a6f79c0e_d153ff8286d45c468473@mail.example.org>
Andy, there seems to be a problem with the TLS certificate
on your mail server. Are you aware of this?
Roger ]]>
Acknowledgements
The author would like to acknowledge many helpful suggestions on the
ietf-smtp and uta mailing lists, in particular those of Viktor Dukhovni,
Tony Finch, Jeremy Harris, Arvel Hathcock, John Klensin, Barry Leiba, John
Levine, Chris Newman, Rolf Sonneveld, and Per Thorsheim.