<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc1846 PUBLIC '' 'reference.RFC.1846.xml'>
<!ENTITY rfc2119 PUBLIC '' 'reference.RFC.2119.xml'>
<!ENTITY rfc5321 PUBLIC '' 'reference.RFC.5321.xml'>
<!ENTITY nbsp "&#160;">
]>

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

<!-- <?rfc rfcedstyle="yes" ?>  -->
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc symrefs="no"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>

<rfc number="7504" submissionType="IETF" consensus="yes"
     ipr="trust200902"  category="std"
	 updates="1846, 5321">

  <!-- ***** FRONT MATTER ***** -->

  <front>

    <title>SMTP 521 and 556 Reply Codes</title>

    <author fullname="John C Klensin" initials="J.C." surname="Klensin">
      <organization/>
      <address>
        <postal>
          <street>1770 Massachusetts Ave, Ste 322</street>
          <city>Cambridge</city> <region>MA</region>
          <code>02140</code>
          <country>United States</country>
        </postal>
        <phone>+1 617 245 1457</phone>
        <email>john-ietf@jck.com</email>
      </address>
    </author>  

    <date month="June" year="2015" />

    <!-- Meta-data Declarations -->
    <area>Applications</area>

	<keyword>Reply code</keyword>
	<keyword>Email</keyword>
	<keyword>Server</keyword>
	<keyword>No Mail</keyword>

    <abstract>
      <t>   This memo defines two Simple Mail Transfer Protocol (SMTP)
	   reply codes, 521 and 556.  The 521 code was originally described in an
	   Experimental RFC in 1995 and is in wide use, but has not
	   previously been formally incorporated into SMTP.  The 556 code
	   was created to support the new tests and actions specified in RFC 7505.  These codes are used to indicate
	   that an Internet host does not accept incoming mail at all.
	   This specification is not applicable when the host
	   sometimes accepts mail but may reject particular messages, or
	   even all messages, under specific circumstances. </t> 

    </abstract>
	
  </front>

  <middle>
	 <section title="Introduction" anchor="intro">

		<t>The SMTP specification <xref target="RFC5321"/> (referred
		   to, along with its various updates, as "SMTP" below) contains a
		   list and discussion of reply codes.  This document updates
		   that list with a new code, 521, for use in
		   response to an initial connection.  In that context, it
		   specifically denotes a
		   system that does not receive mail or otherwise handle
		   SMTP mail or inquiry transactions.  That code differs from
		   the use of reply code 554, recommended by RFC 5321, because
		   the latter code can be used in a larger variety of
		   situations, including mail that is not accepted for, or
		   from, particular sources, destinations, or addresses.  It
		   also introduces a second reply code, 556, for use when an
		   SMTP client encounters a domain in a forward-pointing
		   address that it can determine (e.g., from the DNS "null MX"
		   convention <xref target="RFC7505"/>) does not support
		   receipt of mail and has to report that condition to a host
		   that delivered the message to it for further processing. </t>
		<t>This specification updates RFC 5321 to add the new codes.
		   The 521 code was first formally proposed in the
		   Experimental <xref target="RFC1846">RFC 1846</xref>; this
		   document updates that specification to standardize the code
		   and provide more specific treatment of it.</t>
	   <section title="Terminology">
		<t>The reader of this document is expected to have reasonable
		   familiarity with the SMTP specification in RFC 5321,
		   particularly its discussion of reply codes and their use
		   and theory.</t>
        <t>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
		  <xref target="RFC2119">RFC 2119</xref>.</t>
	   </section>

		  
	 </section>
		
	 <section title="Background">
	   <t>  Many Internet hosts
		   are not in a position -- whether technically, operationally, or
		   administratively -- to offer mail service.  If an SMTP
		   client (sender) attempts to open a mail 
		   connection to a system that does not have an SMTP server, the
		   connection attempt will time out.  SMTP requires that
		   timeouts result in the client queuing the message and
		   retrying it for an extended period.  That behavior will
		   result in wasted resources and long delays in getting an
		   error message back to its originator.</t>
		<t>One alternative is to run a dummy SMTP server on hosts that
		   do not receive mail under any circumstances and have that
		   dummy server return a fatal error reply code in response to
		   any connection-opening attempt.  Another is to determine,
		   from a separate source such as a DNS record, that the
		   host does not receive mail.  This document specifies 
		   reply codes to be used for those purposes.</t>
	  </section>
	  <section title="The 521 Reply Code" anchor="code521">

		 <t> This specification adds the 521 reply code to the
			repertoire specified in SMTP, reserving it for use at
			connection-opening time to indicate that the host does
			not accept mail 
			under any circumstances.  It SHOULD be used for dummy SMTP
			servers whose sole purpose is to notify systems that
			attempt to open mail connections that the host never
			accepts mail.  It MAY be used in other situations where
			the intent is to indicate that the host never accepts
			mail.  It SHOULD NOT be used for situations in which the
			server rejects mail from particular hosts or addresses or
			in which mail for a particular destination host is not
			accepted.   As discussed in SMTP, reply code 554 is more
			appropriate for most of those conditions; an additional
			case, in which the determination that mail is not accepted
			is determined outside the mail system, is covered in the
			next section (<xref target="Reply556"/>).</t>
		 <t>"Server does not accept mail" (or a variant such as
			"Host", "Domain", or a related term) is an acceptable
			message to accompany a 521 code used for this
			purpose.</t>
		 <t> Once the 521 reply code is returned instead of the usual
			220, the SMTP session proceeds normally.   If the SMTP
			client attempts to send additional commands other than
			QUIT, the server MAY either continue sending 521 reply
			codes or simply close the connection.  If the purpose of
			running a dummy SMTP server that returns a 521 code is to
			conserve resources, the latter will usually be
			preferable.</t>
	   </section>
	   <section title="The 556 Reply Code" anchor="Reply556">
		 <t>This specification adds the 556 reply code to the
			repertoire specified in SMTP.
			When an intermediate SMTP system (typically a relay)
			that would normally attempt to open a mail connection to
			a host referred to in a forward-pointing address can
			determine that the host does not accept mail
			connections, and do so without attempting to open a
			connection to that target host, it is appropriate for it
			to return a reply with a 556 code to the system that
			sent it the message for outbound transmission.
			<!-- Above inserted during IETF LC - see email 2015-03-16
			and 2015-03-17 -->
			Interpretation of a special DNS record, found when a
			lookup is performed in conjunction with a RCPT command
			<xref target="RFC7505"/>, is one such method (and the
			only standardized one at the time this specification
			was written).</t>
		 <t>When an SMTP server returns a 556 reply code after receiving a
			command (such as RCPT, which contains a forward-pointing address) because
			it has information (such as discussed above) that the mail will
			not be accepted, the SMTP client is expected
			to handle the response like any other permanent negative completion
			reply to the command. This is consistent with the SMTP specification.
         </t>
	   </section>

	   <section title="Small Details to Avoid Loose Ends">
		  <section title="Specific Changes to RFC 5321">
			 <t>This document adds the 521 code, with message "Host
				does not accept mail", and the 556 code, with message
				"Domain does not accept mail", to the function group and
				numerical lists (Sections 4.2.2 and 4.2.3,
				respectively) of RFC 5321.  It also adds the 521 code
				to the "CONNECTION ESTABLISHMENT" portion of Section
				4.3.2 ("Command-Reply Sequences"), preceding the 554
				code, and the 556 code to the "RCPT" portion of that
				same section.</t>
		  </section>
		 <!-- <section title="Postmaster">
			  <t>An SMTP server that sends a reply message using a 521
				 code in response to an initial connection is not
				 subject to the postmaster requirement of Section 4.5.1 of
				 RFC 5321.  This should be obvious: if a RCPT command is
				 not allowed, mail addressed to Postmaster cannot be
				 sent.</t> 
		   </section> -->
		   <section title="The RFC 1846 Experiment">
			  <t> By formalizing reply code 521, this specification
				 ends the experiment proposed in RFC 1846.  That
				 document also discusses general strategies 
				 for hosts that do not accept mail directly.
				 That discussion is out of scope for the present
				 document.</t>
		  </section>
	   </section>

	   <section title="IANA Considerations">
		  <t>This document updates RFC 5321 to add descriptions and
			 text for two reply codes, but there is no registry for
			 those codes.  IANA has updated the
"Enumerated Status Codes" subregistry of the "Simple Mail Transfer Protocol
(SMTP) Enhanced Status Codes Registry" <xref target="IANA-SMTP-ESC"/>
			 to include these codes, specifically:
			 <list style="symbols">
				<t>Added 521 to the list of codes associated with the
				   enhanced code entry for X.3.2, which now
				   references this
				   document.</t>
				<t>Added this document to the references associated with
				   the enhanced code entry for X.1.10 and reply
				   code 556.  Note that, if a use for 556 arises that
				   is not associated with null MX
				   <xref target="RFC7505"/>, it may be necessary 
				   to add an additional enhanced code, but such action
				   is outside the scope of this document.</t>
			  </list></t> 
	   </section>

	   <section title="Security Considerations">
		  <t>Not running any SMTP server, or running an SMTP server that simply
		   emits fixed strings in response to incoming connections, should provide
		   significantly fewer opportunities for security problems than running
		   a complete SMTP implementation.  See the Security
		   Considerations section of
		   <xref target="RFC7505">RFC 7505</xref>
		   for a discussion of security issues with that approach.
		   Use of the specific codes provided here provides more
		   information to the client than a generic or
		   arbitrarily chosen 5yz code but should have no other
		   effect on security.</t>  
	   </section>


  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split to informative and normative -->

  <references title="Normative References">

	   &rfc2119;
	   &rfc5321;

    <reference anchor="IANA-SMTP-ESC"
	    target="http://www.iana.org/assignments/smtp-enhanced-status-codes">
	   <front>
		  <title>Simple Mail Transfer Protocol (SMTP) Enhanced Status
			 Codes Registry</title>
		  <author><organization>IANA</organization></author>
		  <date/>
	   </front>
	</reference>
	  
    </references>

    <references title="Informative References">

	   &rfc1846;

<!-- draft-ietf-appsawg-nullmx: in queue RFC 7505 -->
<reference anchor='RFC7505' target='http://www.rfc-editor.org/info/rfc7505'>
<front>
<title>A "Null MX" No Service Resource Record for Domains that Accept No Mail</title>

<author initials='J' surname='Levine' fullname='John Levine'>
    <organization />
</author>

<author initials='M' surname='Delany' fullname='Mark Delany'>
    <organization />
</author>

<date month='June' year='2015' />

<abstract><t>Internet mail determines the address of a receiving server through the DNS, first by looking for an MX record and then by looking for an A/AAAA record as a fallback.  Unfortunately this means that the A/ AAAA record is taken to be mail server address even when that address does not accept mail.  The no service MX RR, informally called null MX, formalizes the existing mechanism by which a domain announces that it accepts no mail, without having to provide a mail server, which permits significant operational efficiencies.</t></abstract>

</front>

<seriesInfo name="RFC" value="7505"/>
<seriesInfo name="DOI" value="10.17487/RFC7505"/>

</reference>
	   
    </references>

	   <section title="Acknowledgments" numbered="no">
		  <t>Alain Durand and Francis Dupont proposed the 521 code in
			 <xref target="RFC1846">RFC 1846</xref>.  They also
			 participated in an extended conversation and provided
			 many useful comments that led to this document.  The
			 document also contains, with their permission, some text
			 copied from that early specification.</t>
		  <t>Discussion of the "null MX" approach and
			 proposal <xref target="RFC7505"/> inspired the creation of
			 this specification.  Specific comments and suggestions
			 from John Levine (co-author of that document) were also
			 helpful.</t> 
		  <t>Martin Duerst and Tom Petch identified significant issues
			 in the initial draft of the current form of the
			 document.</t>
		  <t>Dilyan Palauzov did a careful reading and identified an
			 editorial error.</t>
		  <t> Ned Freed, Tony Hansen, and Rolf Sonneveld suggested
			 textual improvements 
			 that were incorporated.  Tony Hansen also acted as
			 document shepherd and made several contributions in
			 conjunction with that role.</t>
	   </section>

  </back>
</rfc>
