Internet DRAFT - draft-dougotis-smtp-caa
draft-dougotis-smtp-caa
Internet Draft Douglas Otis
Category: Standards Track Mail Abuse Prevention System
draft-dougotis-smtp-caa-00.txt May 2004
Expires: December 2004
SMTP Client Address Authorization (SMTP-CAA)
Status of this Memo
This document is an Internet-Draft and is subject to all provisions
of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
This Internet-Draft will expire in December 2004.
Abstract
The helo/ehlo domain reported by a client at the beginning of an SMTP
[RFC2821] session has largely been ignored without reliable means to
verify this information. To properly recognize a domain sending
mail, the domain of the client must be verifiable. This document
utilizes a DNS SRV record that extends the definitions for fields of
this record as defined in [RFC2782] where the label becomes unique by
appending a label of "__caa" following the Proto field. Server
verification of permitted client addresses becomes possible as a
method to confirm the domain of a client without having prior
information shared. Cooperation between client and server domains
utilizing this method exclude third party masquerades as originating
from within cooperative domains. Initially only a notice of Unknown
or Unconfirmed will be added to mail from uncooperative domains
unless the domain is determined to be not valid, where then the mail
Otis [Page 1]
RFC Draft May 2004
will be refused. This added notice provides assurance the server is
checking client domains in addition to alerting users to the level of
mail compliance on received mail. Once use of this method is common
practice in conjunction with other means for confirming the client
domain, mail may be refused if the client and/or domain fails these
confirmation checks.
Introduction
Use of DNS SRV-CAA enables publishing outbound SMTP hosts of a domain
as a strategic solution for preventing client domain spoofing which
threatens network integrity. DNS references using the helo/ehlo
domain scales with DNS MX host relationships, in addition, a practice
using the MX RR targets (or labels if the MX host is on a different
domain) for defining the SRV-CAA name provides a method where all
outbound SMTP hosts can be resolved using a series of DNS queries.
This convention then allows validations for a higher level domain
that may appear in the Mail-From as example. For determining the
validity of the Mail-From address however, a hint can be obtained by
the helo/ehlo domain, otherwise all MX RR targets as SRV-CAA labels
may need queried. The companion SRV-CAA RR to the MX RR confirms a
message was sourced from a valid client of this domain. Exceptions
for a Mail-From check must be allowed however for situations where
the Mail-From domain is unrelated to the client. In these situations
of not being able to confirm the source of the Mail-From, alternative
means for determining the client/domain relationship should be used.
Definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC2119.
Applicability Statement
It is expected the SRV-CAA records will enable SMTP servers a means
to confirm the client helo/ehlo domain when receiving connections
from SMTP clients without a prior relationship established. Normally,
an SMTP server restricts mail to being destine for only domains
published as labels in the server MX records. In the absence of
stronger methods, use of the DNS SRV-CAA record allows servers to
also confirm the domain of the client publishing a SRV-CAA record, in
addition to checking destination domains. This check may eventually
extend to requiring Mail-From be within client domains or requiring
other mechanisms to enable acceptance of mail in exceptional cases
where client domains are unrelated to the Mail-From domain.
This specification is optional, and will only affect cooperating
Otis [Page 2]
RFC Draft May 2004
domains. Any domain not offering SRV-CAA records will be unaffected,
and any SMTP server not checking for client SRV-CAA records at the
time of receipt will be unaffected. However, both domains working
together CAN exclude forged mail domains.
If SRV-CAA records are to apply to Mail-From domains, forwarding must
be explicit. For example if somebody@example.com account had a
".forward" file to somebody@another-example.com, then mail sent to
the former will be received by the latter, but with no change in the
SMTP Mail-From return path. It would be unreasonable to bridge
domains subject to ad hoc ".forward" file changes. Either another
mechanism exists between domains hosting SMTP clients and servers, or
the return path needs to be rewritten by the sender to denote the
current client with enough information retained to allow the original
return path to be used. This document does not offer details
regarding this issue, other than to note this exception.
Introductory Example
If an SRV-CAA cognizant SMTP server wants to verify the authorization
of an SMTP client using TCP protocol for the where the domain
returned in the helo/elho response was "mx_01.example.com", it does a
lookup of:
_smtp._tcp.__caa.mx-01.example.com
The example zone file near the end of this document contains
answering RRs for an SRV-CAA query.
Format of the SRV-CAA RR
The format of SMTP SRV-CAA RR, whose DNS type code is 33:
_smtp._tcp.__caa.Name TTL Class SRV Priority Weight Port Target
(There is an example near the end of this document.)
Service
Service is the symbolic name of the desired service which is
"_smtp" as defined in this document. As per [RFC2782], an
underscore '_' is prepended to the service identifier to avoid
collisions with DNS labels used to locate hosts.
Proto
Proto is the symbolic name of the desired protocol which is "_tcp",
Otis [Page 3]
RFC Draft May 2004
as defined in this document. As per [RFC2782], underscore '_'
prepended to prevent collisions with DNS labels used to locate
hosts and "__caa" label is appended after the Proto identifier to
avoid collisions with labels used to discover services.
Name
Name is the domain this RR refers to and, by convention, is also
either a target or label used to access an MX host for this domain.
As with other SRV RR queries, the SRV-CAA RR name used for queries
is composed from the domain name obtained from client helo/ehlo
identification; there is an example near the end of this document.
TTL
Standard DNS meaning [RFC 1035].
Class
Standard DNS meaning [RFC 1035]. SRV-CAA records are defined for
the IN Class.
Priority
The meaning of Priority differs from [RFC2782]. Priority is
generally used to indicate the nature of the client list as defined
by the service protocol, for example whether the list is complete
or open-ended. Priority should be the same for all SRV-CAA records
accessed by the same label and, if not, then records in this set
are treated as if a message format decoding error had occurred.
Priority with a value of zero indicates a closed or comprehensive
list. A value of 1 indicates the client is open or not fully
defined. A value of 65535 means the list is null and contains no
valid hosts. The label "localhost" rather than "." may used as a
placeholder for the target with a record defining a null client
list.
Weight
The meaning of Weight differs from [RFC2782]. Weight defines the
nature of the target. Weight can have the following meaning as
defined by the summation of the values distinguishing four SMTP
message-handling components, a service, and a domain relationship:
1 = Mail User Agents (MUAs)
2 = Mail Submission Agents (MSAs)
4 = Mail Transfer Agents (MTAs)
8 = Mail Delivery Agents (MDAs)
16 = Mail Sender Rewriting of Mail-From (SR)
Otis [Page 4]
RFC Draft May 2004
32 = Mail Domain Bridging of Mail-From (DBFM)
As a client, a MUA on behalf of end-users introduces mail into the
mail system using SMTP. An MSA accepts mail from an MUA and
performs any necessary processing before relaying the mail. MTA
and MSA implement server and client roles in transferring mail to
its destination. MTAs may relay mail to other MTAs in sequence
before reaching a destination MDA. The MUA obtains mail from the
MDA using a protocol other than SMTP. These components are often
combined and are denoted by a summation of the Weight value.
The Mail Domain Bridging acts as a method for indicating a
relationship with Mail-From domains differing from the helo/ehlo
domain. Bridging allows a limited number of domains to be included
as authorized but a preferred method would be to use a helo/ehlo
domain sharing the same root domain to simplify address resolution.
This feature does allow a check upon receipt at the MUA if the
headers are trusted and the mail does not indicate either a Not
Confirmed or Unknown domain.
Port
The meaning of Port differs from [RFC2782]. Port indicates the
allowed server port accessed by the client to initiate
communications. The range is 0-65535. A port value of 0 indicates
all server ports are allowed. This is a 16 bit unsigned integer in
network byte order. This value will be 25 unless the host also
accepts mail on other ports, in which case, the value of port
should be zero.
Target
The meaning of Target differs from [RFC2782]. Target is the domain
name of the client. There MUST be one or more address records for
this name, the name MUST NOT be an alias (in the sense of RFC1034
or RFC2181). Implementors are urged, but not required, to return
the address record(s) in the Additional Data section. Unless and
until permitted by future standards action, name compression is not
to be used for this field.
Domain Administrator Advice
Expecting everyone to update their server applications when the first
client publishes a SRV-CAA RR is futile nor is this effective in some
environments. Therefore SRV-CAA will coexist with other means used to
authorize the client.
Otis [Page 5]
RFC Draft May 2004
Where clients within a domain are spread over several hosts, it seems
advisable to have a list of address records at the same DNS node as
the SRV-CAA RR.
Currently there's a practical limit of 512 bytes for DNS replies. It
is advised that domain administrators limit the size of the SRV
RRsets described by this proposal such that the total response size,
exclusive of optional elements of the additional data section, be
under 512 octets.
Usage rules
A SRV-CAA cognizant server SHOULD use this procedure to verify the
address of the client has been authorized:
Do a lookup for QNAME=_smtp._tcp.__caa.name, QCLASS=IN, QTYPE=SRV.
If the reply is NOERROR, ANCOUNT>0 and there is at least one SRV-
CAA RR which specifies the requested label in the reply.
If there were no SRV-CAA RR matching this label, the client
authorization is Unknown.
Else, for all such RR's, do a query for the address records of the
target name, using a QTYPE appropriate to the network protocol used
by the client, for example, if the client reached the server over
IPv4, then QTYPE=A, and if the client reached the server over IPv6,
then QTYPE=AAAA".
If the Priority indicated an open list, and there was no match,
then the client authorization is Not Confirmed.
If the Weight indicates the host is a DBMF, this is not used to
resolve authorization of the helo/ehlo domain. A DBMF entry is to
resolve for differing Mail-From domains where the DBMF target
points to a domain to query MX records to obtain labels to
transpose into SRV-CAA queries. If the Weight indicates that the
client host is a DBMF as well as other mail components, then this
is treated as a format error. The DBMF target domain MX targets
are used to construct a SRV-CAA query based on the MX preference.
The above steps are repeated for these SRV-CAA records. A domain
referenced as an MBMF, however, is not allowed to also reference
another DBMF within its SRV-CAA records or this is also treated as
a format error. Otherwise, if Weight indicates a component
different from DBMF that has a matching address, and the port
information indicates an authorized port in use, then client
authorization is Confirmed. If the component was not a DBMF
record, the client list is closed, and there was no match, the
Otis [Page 6]
RFC Draft May 2004
client authorization is then not valid and is rejected with a 550
Requested Action not Taken.
If the mail is accepted but the client is either Not Confirmed or
Unknown, a header is appended to the message being "X-Client-
Domain: <domain> (Not Confirmed)" or "X-Client-Domain: <domain>
(Unknown)" respectively.
Fictional Example
This example uses fictional mx-01.example.com as an aid in
understanding SRV-CAA records. Publishing the SRV-CAA records i
optional. This is (part of) the zone file for a fictitious
example.com:
$ORIGIN example.com.
@ SOA server.example.com. root.example.com. (
1995032001 3600 3600 604800 86400 )
NS server.example.com.
NS ns1.ip-provider.net.
NS ns2.ip-provider.net.
_smtp._tcp.__caa.mx-01 SRV 0 0 0 fred.example.com.
SRV 0 0 0 sam.example.com.
MX 10 mx-01.example.com.
fred A 172.30.79.11
sam A 172.30.79.12
mx-01 A 172.30.79.13
server A 172.30.79.14
In this example, an SMTP client "mx-01.example.com" in the
"example.com." domain needs an SRV lookup of
"_smtp._tcp.__caa.example.com." and possibly A lookups of
"fred.example.com.", and/or the other hosts named.
IANA Considerations
IANA will register the "__caa", "_smtp", and "_tcp" and "X-Client-
Domain:" labels for use with this document.
Security Considerations
Otis [Page 7]
RFC Draft May 2004
The author believes this RR to not cause any new security problems.
Some problems become more visible, though.
There is no way a site can keep its hosts from being referenced as
servers. This could lead to denial of service.
With SRV, DNS spoofers can supply false addresses. Because this
vulnerability exists already with names and addresses, this is not
a new vulnerability, merely a slightly extended one, with little
practical effect. However as SRV-CAA records are used in an
authorization context, the DNS servers should be protected by
DNSSEC [RFC3008].
SRV-CAA Labeled TXT Records
A TXT record associated with the same label used to access the SRV-
CAA may be used to provide information related to error reporting as
determined by the Service protocol specification.
Otis [Page 8]
RFC Draft May 2004
Informative References
STD 2: Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
1700, October 1994.
RFC 1034: Mockapetris, P., "Domain names - concepts and facilities",
STD 13, RFC 1034, November 1987.
RFC 1035: Mockapetris, P., "Domain names - Implementation and
Specification", STD 13, RFC 1035, November 1987.
RFC 974: Partridge, C., "Mail routing and the domain system", STD
14, RFC 974, January 1986.
RFC 2181: Elz, R. and R. Bush, "Clarifications to the DNS
Specification", RFC 2181, July 1997.
RFC 2219: Hamilton, M. and R. Wright, "Use of DNS Aliases for Network
Services", BCP 17, RFC 2219, October 1997.
RFC 3008 Wellington, B, "Domain Name System Security (DNSSEC) Signing
Authority", November 2000.
RFC 3225 D. Conrad., "Indicating Resolver Support of DNSSEC."
December 2001.
RFC 3226 Gudmundsson, 0, "DNSSEC and IPv6 A6 aware server/resolver message size
requirements. December 2001.
RMF Vixie, Paul. "Repudiating Mail-From".
http://ops.ietf.org/lists/namedroppers/namedroppers.2002/msg00658.html
RFC 2782: Gulbrandsen, A., P. Vixie, and L. Esibov, L.,"A DNS RR for
specifying the location of services (DNS SRV)" February
2000.
RFC 2821: Klensin, J., "Simple Mail Transfer Protocol" April 2001.
RFC 2822: Resnick, P., "Internet Message Format" April 2001.
Otis [Page 9]
RFC Draft May 2004
Author's Address:
Douglas Otis
Mail Abuse Prevention System (MAPS)
1732 North First St. #680
San Jose, CA 95112
dotis@mail-abuse.org
Otis [Page 10]
RFC Draft May 2004
Full Copyright Statement
Copyright (C) The Internet Society (2004). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Otis [Page 11]