<?xml version="1.0" encoding="us-ascii"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
  <!ENTITY RFC2119 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC3463 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3463.xml">
  <!ENTITY RFC5248 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5248.xml">
  <!ENTITY RFC6376 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6376.xml">
  <!ENTITY RFC7001 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7001.xml">
  <!ENTITY RFC7208 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7208.xml">
]>

<rfc ipr="trust200902" category="std" updates="7208"
        docName="draft-ietf-appsawg-email-auth-codes-03">

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc strict="no" ?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>

<front>
	<title abbrev="Email Auth Status Codes">
		Email Authentication Status Codes
	</title>

	<author initials="M. S." surname="Kucherawy"
	        fullname="Murray S. Kucherawy">

		<organization/> 

		<address>
			<postal>
				<street>270 Upland Drive</street>
				<city>San Francisco</city>
				<region>CA</region>
				<code>94127</code>
				<country>USA</country>
			</postal>

			<email>superuser@gmail.com</email>
		</address>
	</author>

	<date year="2014"/>

	<area>Applications</area>

	<abstract>
		<t> There is at present no way to return a status code to
		    an email client that indicates a message is
		    being rejected or deferred specifically because of email
		    authentication failures.  This document registers codes
		    for this purpose. </t>
	</abstract>
</front>

<middle>
	<section anchor="intro" title="Introduction">
		<t> <xref target="RFC3463"/> introduced Enhanced Mail System
		    Status Codes, and <xref target="RFC5248"/> created an IANA
		    registry for these. </t>

		<t> <xref target="RFC6376"/> and <xref target="RFC7208"/>
		    introduced, respectively, DomainKeys Identified Mail
		    and Sender Policy Framework, two protocols for conducting
		    email authentication.  Another common email acceptance
		    test is the reverse Domain Name System check on an email
		    client's IP address, as described in Section 3 of
		    <xref target="RFC7001"/>. </t>

		<t> The current set of enhanced status codes does not include
		    any code for indicating that a message is being rejected
		    or deferred due to local policy reasons related to any
		    of these mechanisms.  This is potentially useful
		    information to agents that need more than rudimentary
		    handling information about the reason a message was
		    rejected on receipt.  This document introduces enhanced
		    status codes for reporting those cases to clients. </t>
	</section>

	<section anchor="keywords" title="Key Words">
		<t> 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
		    <xref target="RFC2119"/>. </t>
	</section>

	<section anchor="codes" title="New Status Codes">
		<t> The following new status codes are defined: </t>

		<section anchor="dkim-code" title="DKIM Failure Codes">
			<t><figure><artwork>
   Code:               X.7.20
   Sample Text:        No valid DKIM signature found
   Associated basic status code:  5
   Description:        This status code is returned when a message
                       did not contain a valid DKIM signature,
                       contrary to local policy requirements.
                       (Note that this violates the advice of
                       Section 6.1 of RFC6376.) 
   Reference:          [this document]; RFC6376
   Submitter:          M. Kucherawy
   Change controller:  IESG
			</artwork></figure> </t>

			<t><figure><artwork>
   Code:               X.7.21
   Sample Text:        No valid author-aligned DKIM signature found
   Associated basic status code:  5
   Description:        This status code is returned when a message
                       did not contain a valid DKIM signature
                       matching the domain(s) found in the From
                       header field, contrary to local policy
                       requirements.  (Note that this violates the
                       advice of Section 6.1 of RFC6376.) 
   Reference:          [this document]; RFC6376
   Submitter:          M. Kucherawy
   Change controller:  IESG
			</artwork></figure> </t>
		</section>

		<section anchor="spf-code" title="SPF Failure Codes">
			<t><figure><artwork>
   Code:               X.7.22
   Sample Text:        SPF validation failed
   Associated basic status code:  5
   Description:        This status code is returned when a message
                       completed an SPF check that produced a
                       "fail" result, contrary to local policy
                       requirements.  Used in place of 5.7.1 as
                       described in Section 8.4 of RFC7208.
   Reference:          [this document]; RFC7208
   Submitter:          M. Kucherawy
   Change controller:  IESG
			</artwork></figure> </t>

			<t><figure><artwork>
   Code:               X.7.23
   Sample Text:        SPF validation error
   Associated basic status code:  4/5
   Description:        This status code is returned when evaluation
                       of SPF relative to an arriving message
                       resulted in an error.  Used in place of
                       4.4.3 or 5.5.2 as described in Sections
                       8.6 and 8.6 of RFC7208.
   Reference:          [this document]; RFC7208
   Submitter:          M. Kucherawy
   Change controller:  IESG
			</artwork></figure> </t>
		</section>

		<section anchor="iprev-code" title="Reverse DNS Failure Code">
			<t><figure><artwork>
   Code:               X.7.24
   Sample Text:        Reverse DNS validation failed
   Associated basic status code:  5
   Description:        This status code is returned when an SMTP
                       client's IP address failed a reverse DNS
                       validation check, contrary to local policy
                       requirements.
   Reference:          [this document]; Section 3 of RFC7001
   Submitter:          M. Kucherawy
   Change controller:  IESG
			</artwork></figure> </t>
		</section>

		<section anchor="multi-code"
		         title="Multiple Authentication Failures Code">
			<t><figure><artwork>
   Code:               X.7.25
   Sample Text:        Multiple authentication checks failed
   Associated basic status code:  5
   Description:        This status code is returned when a message
                       failed more than one message authentication
                       check, contrary to local policy requirements.
                       The specific mechanisms that failed are not
                       specified.
   Reference:          [this document]
   Submitter:          M. Kucherawy
   Change controller:  IESG
			</artwork></figure> </t>
		</section>
	</section>

	<section anchor="discuss" title="General Considerations">
		<t> By the nature of the Simple Mail Transfer Protocol (SMTP),
		    only one enhanced status code can be returned for a given
		    exchange between client and server.  However, an
		    operator might decide to defer or reject a message for a
		    plurality of reasons.  Clients receiving these codes
		    need to consider that the failure reflected by one of these
		    status codes might not reflect the only reason, or
		    the most important reason, for non-acceptance of the
		    message or command. </t>

		<t> It is important to note that Section 6.1 of
		    <xref target="RFC6376"/> discourages special treatment of
		    messages bearing no valid signature.  There are some
		    operators that disregard this advice, a few of which go
		    so far as to require a valid Author Domain signature (that
		    is, one matching the domain(s) in the From header field) in
		    order to accept the message.  Moreover, some nascent
		    technologies built atop SPF and DKIM depend on such
		    authentications.  This work does not endorse
		    configurations that violate DKIM's recommendations, but
		    rather acknowledges that they do exist and merely seeks to
		    provide for improved interoperability with such
		    operators. </t>

		<t> A specific use case is mailing list software, which
		    processes rejections in order to remove from the
		    subscriber set those addresses that are no longer valid.
		    There is a need in that case to distinguish authentication
		    failures versus indications that the recipient address is
		    no longer valid. </t>

		<t> When multiple authentication methods fail, the SMTP server
		    SHOULD use the code that indicates multiple methods failed
		    rather than only the first one that failed.  It may be the
		    case that one method is always expected to fail, and thus
		    returning that method's specific code is not information
		    useful to the sending agent. </t>

		<t> The reverse IP DNS check is defined in Section 2.6.3 of
		    <xref target="RFC7001"/>. </t>
	</section>

	<section anchor="security" title="Security Considerations">
		<t> Use of these codes reveals local policy with respect to
		    email authentication, which can be useful information to
		    actors attempting to deliver undesirable mail.  It should
		    be noted that there is no specific obligation to use these
		    codes; if an operator wishes not to reveal this aspect
		    of local policy, it can continue using a generic result
		    code such as 5.7.7, 5.7.1, or even 5.7.0. </t>
	</section>

	<section anchor="iana" title="IANA Considerations">
		<t> Registration of new enhanced status codes, for addition
		    to the SMTP Enhanced Status Codes Registry, can be found
		    in <xref target="codes"/>. </t>
	</section>
</middle>

<back>
	<references title="Normative References">
		&RFC2119;
		&RFC3463;
		&RFC5248;
		&RFC6376;
		&RFC7001;
		&RFC7208;
	</references>

	<section anchor="thanks" title="Acknowledgments">
		<t> Claudio Allocchio,
		    Dave Crocker,
		    Ned Freed,
		    Arnt Gulbrandsen,
		    Scott Kitterman,
		    Barry Leiba,
		    Alexey Melnikov,
		    and
		    Hector Santos
		    contributed to this work. </t>
	</section>
</back>

</rfc>
