<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-vesely-authmethod-dnswl-16" indexInclude="true" ipr="trust200902" number="8904" prepTime="2020-09-17T16:08:35" scripts="Common,Latin" sortRefs="false" submissionType="independent" symRefs="true" tocDepth="4" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-vesely-authmethod-dnswl-16" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8904" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="DNSWL Email Auth Method Extension">DNS Whitelist (DNSWL) Email Authentication Method Extension</title>
    <seriesInfo name="RFC" value="8904" stream="independent"/>
    <author fullname="Alessandro Vesely" initials="A." surname="Vesely">
      <organization showOnFrontPage="true"/>
      <address>
        <postal>
          <street>v. L. Anelli 13</street>
          <code>20122</code>
          <city>Milano</city>
          <region>MI</region>
          <country>Italy</country>
        </postal>
        <email>vesely@tana.it</email>
      </address>
    </author>
    <date month="09" year="2020"/>
    <area>General</area>
    <workgroup>IETF</workgroup>
    <keyword>DNSWL</keyword>
    <keyword>EMAIL</keyword>
    <keyword>Authentication-Results</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">
This document describes an email authentication method compliant
with RFC 8601.  The method consists of looking up the sender's IP address in a
DNS whitelist.  This document provides information in case the method is seen
in the field, suggests a useful practice, and registers the
relevant keywords.
      </t>
      <t indent="0" pn="section-abstract-2">
	This document does not consider blacklists.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for informational purposes.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This is a contribution to the RFC Series, independently of any
            other RFC stream.  The RFC Editor has chosen to publish this
            document at its discretion and makes no statement about its value
            for implementation or deployment.  Documents approved for
            publication by the RFC Editor are not candidates for any level of
            Internet Standard; see Section 2 of RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc8904" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2020 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-method-details">Method Details</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-txt-record-contents">TXT Record Contents</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-email-authentication-method">Email Authentication Methods</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-email-authentication-proper">Email Authentication Property Type</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.3">
                <t indent="0" pn="section-toc.1-1.4.2.3.1"><xref derivedContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-email-authentication-result">Email Authentication Result Names</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-over-quota-signaling">Over-Quota Signaling</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-of-dnssec-validati">Security of DNSSEC Validation</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-inherited-security-consider">Inherited Security Considerations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example">Example</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="Appendix B" format="default" sectionFormat="of" target="section-appendix.b"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-known-implementation">Known Implementation</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="Appendix C" format="default" sectionFormat="of" target="section-appendix.c"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-future-possibilities-of-the">Future Possibilities of the 'dns' ptype</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">
	One of the many checks that mail servers carry out is to query DNS
	whitelists (DNSWLs).
	That method is fully discussed in <xref target="RFC5782" format="default" sectionFormat="of" derivedContent="RFC5782"/>.
	The DNS <xref target="RFC1034" format="default" sectionFormat="of" derivedContent="RFC1034"/> lookup is based on
	the connecting
	client's IP address, IPv4 or IPv6, and returns zero or more A records.
	The latter are IPv4 IP addresses in the range 127.0.0.0/8.  Depending
	on
	the query, TXT records with varying content can also be retrieved.
	Query examples are given in <xref target="example" format="default" sectionFormat="of" derivedContent="Appendix A"/>.
      </t>
      <t indent="0" pn="section-1-2">
	Since the IP address is known as soon as the connection is accepted,
	this check can occur very early in an SMTP transaction.
	Its result can be used to counterweight policies that typically
	occur at early stages too, such as the Sender Policy Framework
	(SPF) (the last paragraph of <xref target="RFC7208" sectionFormat="of" section="D.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7208#appendix-D.3" derivedContent="RFC7208"/> is also illustrated in
	<xref target="example" format="default" sectionFormat="of" derivedContent="Appendix A"/>). 
	In addition, the result of a DNSWL
	lookup can be used at later stages;  for example, a delivery
	agent can use it to learn the trustworthiness of a mail relay in
	order to estimate the spamminess of an email message.
	The latter possibility needs a place to collect query results for
	downstream use, which is precisely what the Authentication-Results
	header field aims to provide.
      </t>
      <t indent="0" pn="section-1-3">
	Results often contain additional data, encoded according to
	DNSWL-specific criteria.  The method described in this document
	considers only whitelists -- one of the major branches described by
	<xref target="RFC5782" format="default" sectionFormat="of" derivedContent="RFC5782"/>.  There are also
	blacklists/blocklists (DNSBLs) and combined lists.  Since they all have
	the same structure, the abbreviation DNSxL is used to mean any.  The
	core procedures of a Mail Transfer Agent (MTA) tend to be quite
	general, leaving particular cases to be handled by add-on modules.  In
	the case of combined lists, the boundary MTA (see <xref target="RFC5598" format="default" sectionFormat="of" derivedContent="RFC5598"/>), which carries out the check and
	possibly stores the result, has to be able to discern at least the
	color of each entry, as that is required to make accept/reject
	decisions.  This document provides for storing the result when the
	DNSxL record to be reported is a whitelisting one.
      </t>
      <t indent="0" pn="section-1-4">
	Data conveyed in A and TXT records can be stored as properties
	of the method.  The meaning of such data varies widely at the mercy
	of the list operator; hence, the queried zone has to be stored as
	well.
	Mail site operators who configure their MTAs to query specific
	DNWSLs marry the policies of those lists, as, in effect, they
	become tantamount to local policies, albeit outsourced.  

Downstream agents who know DNSWL-specific encoding and understand the meaning
of that data can use it to make delivery or display decisions.  For example,
a mail filter that detects heuristic evidence of a scam can counterweight such
information with the trustworthiness score encoded in the A response so as to
protect against false positives.  Mail User Agents (MUAs) can display those
results or use them to decide how to report abusive messages, if configured to
do so.
      </t>
      <t indent="0" pn="section-1-5">
	This document describes a usage of
	TXT fields consistent with other authentication methods,
	namely to serve the domain name in the TXT record.  That way,
	a downstream filter could also consider whether the sending agent
	is aligned with the author domain, with semantics similar to
	<xref target="RFC7489" format="default" sectionFormat="of" derivedContent="RFC7489"/>.
      </t>
      <t indent="0" pn="section-1-6">
	At the time of this writing, this method is implemented by Courier-MTA
	<xref target="Courier-MTA" format="default" sectionFormat="of" derivedContent="Courier-MTA"/>.  An outline of the
	implementation
	is given in <xref target="implement" format="default" sectionFormat="of" derivedContent="Appendix B"/>.
      </t>
    </section>
    <section anchor="mresults" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-method-details">Method Details</name>
      <t indent="0" pn="section-2-1">
	The result of the method states how the query did, up to the
	interpretation of the returned data.
      </t>
      <t indent="0" pn="section-2-2">
	The method has four possible results:

      </t>
      <dl newline="false" indent="13" spacing="normal" pn="section-2-3">
        <dt pn="section-2-3.1">pass:</dt>
        <dd pn="section-2-3.2">
	  The query successfully returned applicable
	  records.  This result is usually accompanied
	  by one or both of the policy properties
	  described below.  Since the list is configured
	  as a DNSWL, agents unable to interpret
	  list-specific properties can still derive a
	  positive value from the fact that the sender
	  is whitelisted.
	</dd>
        <dt pn="section-2-3.3">none:</dt>
        <dd pn="section-2-3.4">
	  The query worked but yielded no A record or returned
	  NXDOMAIN, so the sender is not whitelisted.
	</dd>
        <dt pn="section-2-3.5">temperror:</dt>
        <dd pn="section-2-3.6">
	  The DNS evaluation could not be completed due to some
	  error that is likely transient in nature, such as a temporary DNS
	  error (e.g., a DNS RCODE of 2, commonly known as SERVFAIL) or
	  other error condition.  A later attempt may produce a
	  final result.
	</dd>
        <dt pn="section-2-3.7">permerror:</dt>
        <dd pn="section-2-3.8">
	  The DNS evaluation cannot work because test entries don't
	  work (that is, DNSWL is broken) or because queries are over quota
	  (reported by a DNS RCODE of 5, commonly known as REFUSED, or by a
	  DNSWL-specific
	  property (policy.ip, defined below) with the same meaning).
	  A later attempt is unlikely to produce a final result.
	  Human intervention is required.
	</dd>
      </dl>
      <t indent="0" pn="section-2-4">
	Note that there is no "fail" result.
      </t>
      <t indent="0" pn="section-2-5">
	The following ptype.property items define how the data provided
	by the whitelist lookup can be saved.
      </t>
      <dl newline="false" indent="13" spacing="normal" pn="section-2-6">
        <dt pn="section-2-6.1">dns.zone:</dt>
        <dd pn="section-2-6.2">
	  DNSWL query root domain, which defines the meaning of the
	  policy.ip property below.
	  Note that an MTA can use a local mirror with a different
	  name.  The name stored here has to be the best available
	  reference for all foreseeable downstream consumers.
	  Setting dns.zone to the global zone makes the result
	  intelligible even if the message is handed outside of the
	  internal network.
	</dd>
        <dt pn="section-2-6.3">policy.ip:</dt>
        <dd pn="section-2-6.4">
	  The bit mask value received in type A response,
	  in dotted quad notation.
	  Multiple entries can be arranged in a quoted, comma-separated list
	  (quotes are necessary because commas are not allowed in a token).
	</dd>
        <dt pn="section-2-6.5">policy.txt:</dt>
        <dd pn="section-2-6.6">
	  The TXT record, if any.  Multiple records are concatenated
	  in the usual way (explained, for example, in
	  <xref target="RFC7208" sectionFormat="of" section="3.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7208#section-3.3" derivedContent="RFC7208"/>).
	  See <xref target="TXTrecord" format="default" sectionFormat="of" derivedContent="Section 3"/> for the resulting
	  content and query options.
	</dd>
        <dt pn="section-2-6.7">dns.sec:</dt>
        <dd pn="section-2-6.8">
          <t indent="0" pn="section-2-6.8.1">
	    This is a generic property stating whether the relevant
	    data was validated using DNSSEC <xref target="RFC4033" format="default" sectionFormat="of" derivedContent="RFC4033"/>. 
	    For the present method, the relevant data consists of the
	    reported policy properties above or, if the method result
	    is "none", its nonexistence.
	    This property has three possible values:

          </t>
          <dl newline="false" indent="6" spacing="normal" pn="section-2-6.8.2">
            <dt pn="section-2-6.8.2.1">yes:</dt>
            <dd pn="section-2-6.8.2.2">
	      DNSSEC validation confirms the integrity of data.
	      <xref target="seccon" format="default" sectionFormat="of" derivedContent="Section 5.2"/>
	      considers how that is 
	      related to the DNS response.
	    </dd>
            <dt pn="section-2-6.8.2.3">no:</dt>
            <dd pn="section-2-6.8.2.4">
	      The data is not signed.  See <xref target="seccon" format="default" sectionFormat="of" derivedContent="Section 5.2"/>.
	    </dd>
            <dt pn="section-2-6.8.2.5">na:</dt>
            <dd pn="section-2-6.8.2.6">
Not applicable.  No DNSSEC validation can be performed, possibly because the
lookup is run through a different means than a security-aware DNS resolver.
This does not necessarily imply less security.  In particular, "na" is used if
the data was downloaded in bulk and then loaded on a local nameserver, which
is the case of an MTA querying a local zone different from the reported
dns.zone.  DNS errors, including validation errors, can also report "na".
This is also the value assumed by default.
	    </dd>
          </dl>
        </dd>
      </dl>
    </section>
    <section anchor="TXTrecord" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-txt-record-contents">TXT Record Contents</name>
      <t indent="0" pn="section-3-1">
	According to <xref target="RFC5782" format="default" sectionFormat="of" derivedContent="RFC5782"/>, TXT records
	describe
	the reason why IP addresses are listed in a DNSWL.
	An example of a DNSWL whose TXT records contain the domain name
	of the organization assignee of the sending IP is given in
	<xref target="implement" format="default" sectionFormat="of" derivedContent="Appendix B"/>.
	The domain name would correspond to the DNS domain
	name used by or within the Administrative Management Domain (ADMD)
	operating
	the relevant MTA, sometimes called the "organizational domain".
	In that case, the authentication provided by this method is
	equivalent to a DomainKeys Identified Mail (DKIM) signature
	<xref target="RFC6376" format="default" sectionFormat="of" derivedContent="RFC6376"/> or 
	an SPF check host <xref target="RFC7208" format="default" sectionFormat="of" derivedContent="RFC7208"/>, if the
	DNSWL is
	trusted.
      </t>
      <t indent="0" pn="section-3-2">
	According to a DNSWL's policy, attributing responsibility of an
	IP address to an organization may require something more than a
	mere PTR record consistency.
	If no domain names can be responsibly associated to a given IP
	address, for example, because the IP address was added without direct
	involvement of the organization concerned, DNSWLs can use a
	subdomain of .INVALID <xref target="RFC2606" format="default" sectionFormat="of" derivedContent="RFC2606"/> where
	the leftmost
	label hints at why an address is whitelisted.
	For example, if the address 192.0.2.38 was added by the list
	managers solely based on their knowledge, the corresponding TXT
	record might be AUTOPROMOTED.INVALID so as to avoid explicitly
	identifying an entity that didn't opt in.
      </t>
      <t indent="0" pn="section-3-3">
	Following the example of Multicast DNS (see the second
	paragraph of <xref target="RFC6762" sectionFormat="of" section="16" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6762#section-16" derivedContent="RFC6762"/>), names containing non-ASCII characters can be
	encoded in UTF-8 <xref target="RFC3629" format="default" sectionFormat="of" derivedContent="RFC3629"/>
	using the Normalization Form C <xref target="NFC" format="default" sectionFormat="of" derivedContent="NFC"/>,
	as
	described in "Unicode Format for Network Interchange" <xref target="RFC5198" format="default" sectionFormat="of" derivedContent="RFC5198"/>.  Inclusion of unaltered
	UTF-8 TXT values in the header entails an environment
	compatible with Email Address Internationalization (EAI) <xref target="RFC6530" format="default" sectionFormat="of" derivedContent="RFC6530"/>.
      </t>
      <t indent="0" pn="section-3-4">
	DNS queries with a QTYPE of ANY may lead to inconsistent replies,
	depending on the cache status.  In addition, ANY is not "all",
	and the provisions for queries that have QTYPE=ANY
	<xref target="RFC8482" format="default" sectionFormat="of" derivedContent="RFC8482"/> don't cover DNSxLs.
	A mail server can issue two simultaneous queries, A and TXT.
	Otherwise, a downstream filter can issue a TXT query on its own,
	if it knows that an A query was successful and that the DNSWL
	serves useful TXT records.
	It is unlikely that TXT records exist if a query for QTYPE A
	brought a result of "none".
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-4-1">
	IANA maintains the "Email Authentication Parameters" registry with
	several subregistries.  IANA has made the assignments 
	set out in the following sections.
      </t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-email-authentication-method">Email Authentication Methods</name>
        <t indent="0" pn="section-4.1-1">
IANA has created four new entries in the "Email Authentication Methods"
registry as follows.
        </t>
        <table align="center" pn="table-1">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Method</th>
              <th align="left" colspan="1" rowspan="1">Definition</th>
              <th align="left" colspan="1" rowspan="1">ptype</th>
              <th align="left" colspan="1" rowspan="1">property</th>
              <th align="left" colspan="1" rowspan="1">Value</th>
              <th align="left" colspan="1" rowspan="1">Status</th>
              <th align="left" colspan="1" rowspan="1">Version</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">dns</td>
              <td align="left" colspan="1" rowspan="1">zone</td>
              <td align="left" colspan="1" rowspan="1">
                <t indent="0" pn="section-4.1-2.2.1.5.1">DNSWL publicly accessible query root domain</t>
              </td>
              <td align="left" colspan="1" rowspan="1">active</td>
              <td align="center" colspan="1" rowspan="1">1</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">policy</td>
              <td align="left" colspan="1" rowspan="1">ip</td>
              <td align="left" colspan="1" rowspan="1">
                <t indent="0" pn="section-4.1-2.2.2.5.1">type A response received (or a quoted,
      comma-separated list thereof)</t>
              </td>
              <td align="left" colspan="1" rowspan="1">active</td>
              <td align="center" colspan="1" rowspan="1">1</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">policy</td>
              <td align="left" colspan="1" rowspan="1">txt</td>
              <td align="left" colspan="1" rowspan="1">type TXT query response</td>
              <td align="left" colspan="1" rowspan="1">active</td>
              <td align="center" colspan="1" rowspan="1">1</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">dns</td>
              <td align="left" colspan="1" rowspan="1">sec</td>
              <td align="left" colspan="1" rowspan="1">one of "yes" for DNSSEC authenticated data, "no" for
      not signed, or "na" for not applicable</td>
              <td align="left" colspan="1" rowspan="1">active</td>
              <td align="center" colspan="1" rowspan="1">1</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="ptype" numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-email-authentication-proper">Email Authentication Property Type</name>
        <t indent="0" pn="section-4.2-1">
	  IANA has created a new entry in the "Email Authentication
	  Property Types" registry as follows.
        </t>
        <table align="center" pn="table-2">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">ptype</th>
              <th align="left" colspan="1" rowspan="1">Definition</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">dns</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">The property being reported belongs to the
	      Domain Name System.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.3">
        <name slugifiedName="name-email-authentication-result">Email Authentication Result Names</name>
        <t indent="0" pn="section-4.3-1">
	  IANA has created four new entries in the "Email
	  Authentication Result Names" registry as follows.
        </t>
        <table align="center" pn="table-3">
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Auth Method</th>
              <th align="left" colspan="1" rowspan="1">Code</th>
              <th align="left" colspan="1" rowspan="1">Specification</th>
              <th align="left" colspan="1" rowspan="1">Status</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">pass</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">active</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">none</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">active</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">temperror</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">active</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">dnswl</td>
              <td align="left" colspan="1" rowspan="1">permerror</td>
              <td align="left" colspan="1" rowspan="1">RFC 8904</td>
              <td align="left" colspan="1" rowspan="1">active</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-over-quota-signaling">Over-Quota Signaling</name>
        <t indent="0" pn="section-5.1-1">
	  Some DNSWLs that provide for free access below a given quota
	  are known to return special codes to signal that the
	  quota has been exceeded (for
	  example, 127.0.0.255).
	  If the MTA cannot interpret that value, that case results
	  in a false positive.
	  It can accept messages that it would otherwise reject.
	  A DNSWL-specific module would realize this fact and call for
	  human intervention.
        </t>
        <t indent="0" pn="section-5.1-2">
	  Returning an RCODE 5 (REFUSED) conveys the
	  concept that the query is "unauthorized" and human
	  intervention required.
        </t>
      </section>
      <section anchor="seccon" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-security-of-dnssec-validati">Security of DNSSEC Validation</name>
        <t indent="0" pn="section-5.2-1">
	  The dns.sec property is meant to be as secure as DNSSEC results.
	  It makes sense to use it in an environment where the DNSSEC
	  validation can succeed.
        </t>
        <t indent="0" pn="section-5.2-2">
	  <xref target="RFC4033" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4033#section-7" derivedContent="RFC4033"/> examines various ways of
	  setting up a stub resolver that either validates DNSSEC locally
	  or trusts the validation provided through a secure
	  channel.

For a different class, it is possible to set up a dedicated,
caching, DNSSEC-enabled resolver reachable by the mail
server through interprocess communication on 127.0.0.1.
In such cases, the property dns.sec=yes corresponds to the
Authenticated Data (AD) bit in the DNS response header.
        </t>
        <t indent="0" pn="section-5.2-3">
	  When the response contains no DNSSEC data, a security-aware
	  resolver seeks a signed proof of the nonexistence
	  of a DS record at some delegation point.  If no error is
	  returned, the zone is unsigned and dns.sec=no can be set.
	  The Security Considerations section of <xref target="RFC3225" format="default" sectionFormat="of" derivedContent="RFC3225"/> states:
        </t>
        <blockquote pn="section-5.2-4">
   The absence of DNSSEC data in response to a query with the DO bit set
   MUST NOT be taken to mean no security information is available for
   that zone as the response may be forged or a non-forged response of
   an altered (DO bit cleared) query.
</blockquote>
        <t indent="0" pn="section-5.2-5">
	  If the application verifies the DNSSEC signatures on its
	  own, it effectively behaves like a validating resolver
	  and hence can set dns.sec correspondingly.
        </t>
        <t indent="0" pn="section-5.2-6">
	  When the data is downloaded in bulk and made available on a
	  trusted channel without using DNSSEC, the application sets dns.sec=na or not
	  at all. For example, consider DNSWLs that publish bulk versions of
	  their data duly signed using OpenPGP <xref target="RFC4880" format="default" sectionFormat="of" derivedContent="RFC4880"/>. 
	  It is the responsibility of system administrators to
	  authenticate the data by downloading and validating the signature.
	  The result of such validation is not reported using dns.sec.
        </t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-inherited-security-consider">Inherited Security Considerations</name>
        <t indent="0" pn="section-5.3-1">
	  For DNSSEC, the considerations of <xref target="RFC4033" sectionFormat="of" section="12" format="default" derivedLink="https://rfc-editor.org/rfc/rfc4033#section-12" derivedContent="RFC4033"/> apply.
        </t>
        <t indent="0" pn="section-5.3-2">
	  All of the considerations described in
	  <xref target="RFC8601" sectionFormat="of" section="7" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8601#section-7" derivedContent="RFC8601"/> apply.
	  That includes securing against tampering all the channels after
	  the production of the Authentication-Results header field.
        </t>
        <t indent="0" pn="section-5.3-3">
	  In addition, the usual caveats apply about importing text from
	  external online sources.  Although queried DNSWLs are well-known,
	  trusted entities, it is suggested that TXT records be reported
	  only if, upon inspection, their content is deemed actionable
	  and their format compatible with the computing environment.
        </t>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-6">
      <name slugifiedName="name-references">References</name>
      <references pn="section-6.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2606" target="https://www.rfc-editor.org/info/rfc2606" quoteTitle="true" derivedAnchor="RFC2606">
          <front>
            <title>Reserved Top Level DNS Names</title>
            <author initials="D." surname="Eastlake 3rd" fullname="D. Eastlake 3rd">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Panitz" fullname="A. Panitz">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1999" month="June"/>
            <abstract>
              <t indent="0">To reduce the likelihood of conflict and confusion, a few top level domain names are reserved for use in private testing, as examples in documentation, and the like.  In addition, a few second level domain names reserved for use as examples are documented.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="32"/>
          <seriesInfo name="RFC" value="2606"/>
          <seriesInfo name="DOI" value="10.17487/RFC2606"/>
        </reference>
        <reference anchor="RFC5782" target="https://www.rfc-editor.org/info/rfc5782" quoteTitle="true" derivedAnchor="RFC5782">
          <front>
            <title>DNS Blacklists and Whitelists</title>
            <author initials="J." surname="Levine" fullname="J. Levine">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="February"/>
            <abstract>
              <t indent="0">The rise of spam and other anti-social behavior on the Internet has led to the creation of shared blacklists and whitelists of IP addresses or domains.  The DNS has become the de-facto standard method of distributing these blacklists and whitelists.  This memo documents the structure and usage of DNS-based blacklists and whitelists, and the protocol used to query them.  This document  is not an Internet Standards Track specification; it is published for  informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5782"/>
          <seriesInfo name="DOI" value="10.17487/RFC5782"/>
        </reference>
        <reference anchor="RFC8601" target="https://www.rfc-editor.org/info/rfc8601" quoteTitle="true" derivedAnchor="RFC8601">
          <front>
            <title>Message Header Field for Indicating Message Authentication Status</title>
            <author initials="M." surname="Kucherawy" fullname="M. Kucherawy">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="May"/>
            <abstract>
              <t indent="0">This document specifies a message header field called "Authentication-Results" for use with electronic mail messages to indicate the results of message authentication efforts.  Any receiver-side software, such as mail filters or Mail User Agents (MUAs), can use this header field to relay that information in a convenient and meaningful way to users or to make sorting and filtering decisions.</t>
              <t indent="0">This document obsoletes RFC 7601.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8601"/>
          <seriesInfo name="DOI" value="10.17487/RFC8601"/>
        </reference>
      </references>
      <references pn="section-6.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC1034" target="https://www.rfc-editor.org/info/rfc1034" quoteTitle="true" derivedAnchor="RFC1034">
          <front>
            <title>Domain names - concepts and facilities</title>
            <author initials="P.V." surname="Mockapetris" fullname="P.V. Mockapetris">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1987" month="November"/>
            <abstract>
              <t indent="0">This RFC is the revised basic definition of The Domain Name System.  It obsoletes RFC-882.  This memo describes the domain style names and their used for host address look up and electronic mail forwarding.  It discusses the clients and servers in the domain name system and the protocol used between them.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1034"/>
          <seriesInfo name="DOI" value="10.17487/RFC1034"/>
        </reference>
        <reference anchor="RFC3225" target="https://www.rfc-editor.org/info/rfc3225" quoteTitle="true" derivedAnchor="RFC3225">
          <front>
            <title>Indicating Resolver Support of DNSSEC</title>
            <author initials="D." surname="Conrad" fullname="D. Conrad">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2001" month="December"/>
            <abstract>
              <t indent="0">In order to deploy DNSSEC (Domain Name System Security Extensions) operationally, DNSSEC aware servers should only perform automatic inclusion of DNSSEC RRs when there is an explicit indication that the resolver can understand those RRs.  This document proposes the use of a bit in the EDNS0 header to provide that explicit indication and describes the necessary protocol changes to implement that notification. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3225"/>
          <seriesInfo name="DOI" value="10.17487/RFC3225"/>
        </reference>
        <reference anchor="RFC3629" target="https://www.rfc-editor.org/info/rfc3629" quoteTitle="true" derivedAnchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author initials="F." surname="Yergeau" fullname="F. Yergeau">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="November"/>
            <abstract>
              <t indent="0">ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
        <reference anchor="RFC4033" target="https://www.rfc-editor.org/info/rfc4033" quoteTitle="true" derivedAnchor="RFC4033">
          <front>
            <title>DNS Security Introduction and Requirements</title>
            <author initials="R." surname="Arends" fullname="R. Arends">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Austein" fullname="R. Austein">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Larson" fullname="M. Larson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Massey" fullname="D. Massey">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Rose" fullname="S. Rose">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="March"/>
            <abstract>
              <t indent="0">The Domain Name System Security Extensions (DNSSEC) add data origin authentication and data integrity to the Domain Name System.  This document introduces these extensions and describes their capabilities and limitations.  This document also discusses the services that the DNS security extensions do and do not provide.  Last, this document describes the interrelationships between the documents that collectively describe DNSSEC.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4033"/>
          <seriesInfo name="DOI" value="10.17487/RFC4033"/>
        </reference>
        <reference anchor="RFC4880" target="https://www.rfc-editor.org/info/rfc4880" quoteTitle="true" derivedAnchor="RFC4880">
          <front>
            <title>OpenPGP Message Format</title>
            <author initials="J." surname="Callas" fullname="J. Callas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Donnerhacke" fullname="L. Donnerhacke">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Finney" fullname="H. Finney">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Shaw" fullname="D. Shaw">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Thayer" fullname="R. Thayer">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="November"/>
            <abstract>
              <t indent="0">This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format.  It is not a step-by-step cookbook for writing an application.  It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network.  It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t>
              <t indent="0">OpenPGP software uses a combination of strong public-key and symmetric cryptography to provide security services for electronic communications and data storage.  These services include confidentiality, key management, authentication, and digital signatures.  This document specifies the message formats used in OpenPGP.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4880"/>
          <seriesInfo name="DOI" value="10.17487/RFC4880"/>
        </reference>
        <reference anchor="RFC5198" target="https://www.rfc-editor.org/info/rfc5198" quoteTitle="true" derivedAnchor="RFC5198">
          <front>
            <title>Unicode Format for Network Interchange</title>
            <author initials="J." surname="Klensin" fullname="J. Klensin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Padlipsky" fullname="M. Padlipsky">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="March"/>
            <abstract>
              <t indent="0">The Internet today is in need of a standardized form for the transmission of internationalized "text" information, paralleling the specifications for the use of ASCII that date from the early days of the ARPANET.  This document specifies that format, using UTF-8 with normalization and specific line-ending sequences.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5198"/>
          <seriesInfo name="DOI" value="10.17487/RFC5198"/>
        </reference>
        <reference anchor="RFC5598" target="https://www.rfc-editor.org/info/rfc5598" quoteTitle="true" derivedAnchor="RFC5598">
          <front>
            <title>Internet Mail Architecture</title>
            <author initials="D." surname="Crocker" fullname="D. Crocker">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="July"/>
            <abstract>
              <t indent="0">Over its thirty-five-year history, Internet Mail has changed significantly in scale and complexity, as it has become a global infrastructure service.  These changes have been evolutionary, rather than revolutionary, reflecting a strong desire to preserve both its installed base and its usefulness.  To collaborate productively on this large and complex system, all participants need to work from a common view of it and use a common language to describe its components and the interactions among them.  But the many differences in perspective currently make it difficult to know exactly what another participant means.  To serve as the necessary common frame of reference, this document describes the enhanced Internet Mail architecture, reflecting the current service.  This memo provides  information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5598"/>
          <seriesInfo name="DOI" value="10.17487/RFC5598"/>
        </reference>
        <reference anchor="RFC6376" target="https://www.rfc-editor.org/info/rfc6376" quoteTitle="true" derivedAnchor="RFC6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author initials="D." surname="Crocker" fullname="D. Crocker" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Hansen" fullname="T. Hansen" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Kucherawy" fullname="M. Kucherawy" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="September"/>
            <abstract>
              <t indent="0">DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message.  This can be an author's organization, an operational relay, or one of their agents.  DKIM separates the question of the identity of the Signer of the message from the purported author of the message.  Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key.  Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t indent="0">This memo obsoletes RFC 4871 and RFC 5672.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC6530" target="https://www.rfc-editor.org/info/rfc6530" quoteTitle="true" derivedAnchor="RFC6530">
          <front>
            <title>Overview and Framework for Internationalized Email</title>
            <author initials="J." surname="Klensin" fullname="J. Klensin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Ko" fullname="Y. Ko">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2012" month="February"/>
            <abstract>
              <t indent="0">Full use of electronic mail throughout the world requires that (subject to other constraints) people be able to use close variations on their own names (written correctly in their own languages and scripts) as mailbox names in email addresses.  This document introduces a series of specifications that define mechanisms and protocol extensions needed to fully support internationalized email addresses.  These changes include an SMTP extension and extension of email header syntax to accommodate UTF-8 data.  The document set also includes discussion of key assumptions and issues in deploying fully internationalized email.  This document is a replacement for RFC 4952; it reflects additional issues identified since that document was published.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6530"/>
          <seriesInfo name="DOI" value="10.17487/RFC6530"/>
        </reference>
        <reference anchor="RFC6762" target="https://www.rfc-editor.org/info/rfc6762" quoteTitle="true" derivedAnchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author initials="S." surname="Cheshire" fullname="S. Cheshire">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Krochmal" fullname="M. Krochmal">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="February"/>
            <abstract>
              <t indent="0">As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important.  In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t indent="0">Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server.  In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t indent="0">The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="RFC7208" target="https://www.rfc-editor.org/info/rfc7208" quoteTitle="true" derivedAnchor="RFC7208">
          <front>
            <title>Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1</title>
            <author initials="S." surname="Kitterman" fullname="S. Kitterman">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="April"/>
            <abstract>
              <t indent="0">Email on the Internet can be forged in a number of ways.  In particular, existing protocols place no restriction on what a sending host can use as the "MAIL FROM" of a message or the domain given on the SMTP HELO/EHLO commands.  This document describes version 1 of the Sender Policy Framework (SPF) protocol, whereby ADministrative Management Domains (ADMDs) can explicitly authorize the hosts that are allowed to use their domain names, and a receiving host can check such authorization.</t>
              <t indent="0">This document obsoletes RFC 4408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7208"/>
          <seriesInfo name="DOI" value="10.17487/RFC7208"/>
        </reference>
        <reference anchor="RFC7489" target="https://www.rfc-editor.org/info/rfc7489" quoteTitle="true" derivedAnchor="RFC7489">
          <front>
            <title>Domain-based Message Authentication, Reporting, and Conformance (DMARC)</title>
            <author initials="M." surname="Kucherawy" fullname="M. Kucherawy" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Zwicky" fullname="E. Zwicky" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="March"/>
            <abstract>
              <t indent="0">Domain-based Message Authentication, Reporting, and Conformance (DMARC) is a scalable mechanism by which a mail-originating organization can express domain-level policies and preferences for message validation, disposition, and reporting, that a mail-receiving organization can use to improve mail handling.</t>
              <t indent="0">Originators of Internet Mail need to be able to associate reliable and authenticated domain identifiers with messages, communicate policies about messages that use those identifiers, and report about mail using those identifiers.  These abilities have several benefits: Receivers can provide feedback to Domain Owners about the use of their domains; this feedback can provide valuable insight about the management of internal operations and the presence of external domain name abuse.</t>
              <t indent="0">DMARC does not produce or encourage elevated delivery privilege of authenticated email.  DMARC is a mechanism for policy distribution that enables increasingly strict handling of messages that fail authentication checks, ranging from no action, through altered delivery, up to message rejection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7489"/>
          <seriesInfo name="DOI" value="10.17487/RFC7489"/>
        </reference>
        <reference anchor="RFC8460" target="https://www.rfc-editor.org/info/rfc8460" quoteTitle="true" derivedAnchor="RFC8460">
          <front>
            <title>SMTP TLS Reporting</title>
            <author initials="D." surname="Margolis" fullname="D. Margolis">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Brotman" fullname="A. Brotman">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Ramakrishnan" fullname="B. Ramakrishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Jones" fullname="J. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Risher" fullname="M. Risher">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="September"/>
            <abstract>
              <t indent="0">A number of protocols exist for establishing encrypted channels between SMTP Mail Transfer Agents (MTAs), including STARTTLS, DNS- Based Authentication of Named Entities (DANE) TLSA, and MTA Strict Transport Security (MTA-STS).  These protocols can fail due to misconfiguration or active attack, leading to undelivered messages or delivery over unencrypted or unauthenticated channels.  This document describes a reporting mechanism and format by which sending systems can share statistics and specific information about potential failures with recipient domains.  Recipient domains can then use this information to both detect potential attacks and diagnose unintentional misconfigurations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8460"/>
          <seriesInfo name="DOI" value="10.17487/RFC8460"/>
        </reference>
        <reference anchor="RFC8482" target="https://www.rfc-editor.org/info/rfc8482" quoteTitle="true" derivedAnchor="RFC8482">
          <front>
            <title>Providing Minimal-Sized Responses to DNS Queries That Have QTYPE=ANY</title>
            <author initials="J." surname="Abley" fullname="J. Abley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="O." surname="Gudmundsson" fullname="O. Gudmundsson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Majkowski" fullname="M. Majkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Hunt" fullname="E. Hunt">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="January"/>
            <abstract>
              <t indent="0">The Domain Name System (DNS) specifies a query type (QTYPE) "ANY". The operator of an authoritative DNS server might choose not to respond to such queries for reasons of local policy, motivated by security, performance, or other reasons.</t>
              <t indent="0">The DNS specification does not include specific guidance for the behavior of DNS servers or clients in this situation.  This document aims to provide such guidance.</t>
              <t indent="0">This document updates RFCs 1034 and 1035.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8482"/>
          <seriesInfo name="DOI" value="10.17487/RFC8482"/>
        </reference>
        <reference anchor="Courier-MTA" target="https://www.courier-mta.org/" quoteTitle="true" derivedAnchor="Courier-MTA">
          <front>
            <title>Courier Mail Server</title>
            <author/>
          </front>
        </reference>
        <reference anchor="DNSWL" target="https://www.dnswl.org/" quoteTitle="true" derivedAnchor="DNSWL">
          <front>
            <title>dnswl.org - E-Mail Reputation - Protect against false positives</title>
            <author>
              <organization showOnFrontPage="true"/>
            </author>
          </front>
        </reference>
        <reference anchor="NFC" target="https://www.unicode.org/reports/tr15/tr15-50.html" quoteTitle="true" derivedAnchor="NFC">
          <front>
            <title>Unicode Normalization Forms</title>
            <author initials="K." surname="Whistler" fullname="Ken Whistler" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="February" year="2020"/>
          </front>
          <seriesInfo name="Unicode Standard Annex" value="15"/>
        </reference>
      </references>
    </references>
    <section anchor="example" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-example">Example</name>
      <figure align="left" suppress-title="false" pn="figure-1">
        <name slugifiedName="name-trace-fields-at-the-top-of-">Trace Fields at the Top of the Header</name>
        <sourcecode name="" type="" markers="false" pn="section-appendix.a-1.1">
Delivered-To: recipient@example.org
Return-Path: &lt;sender@example.com&gt;
Authentication-Results: mta.example.org;
  dkim=pass (whitelisted) header.i=@example.com
Authentication-Results: mta.example.org;
  dnswl=pass dns.zone=list.dnswl.example dns.sec=na
  policy.ip=127.0.10.1
  policy.txt="fwd.example https://dnswl.example/?d=fwd.example"
Received-SPF: fail (Address does not pass Sender Policy Framework)
  client-ip=2001:db8::2:1;
  envelope-from="sender@example.com";
  helo=mail.fwd.example;
  receiver=mta.example.org;
Received: from mail.fwd.example (mail.fwd.example [2001:db8::2:1])
  (TLS: TLSv1/SSLv3,128bits,ECDHE-RSA-AES128-GCM-SHA256)
  by mta.example.org with ESMTPS; Thu, 03 Oct 2019 19:23:11 +0200
  id 00000000005DC044.000000005702D87C.000007FC
</sourcecode>
      </figure>
      <t indent="0" pn="section-appendix.a-2">The message went through a third party, fwd.example, which forwarded
      it to the final MTA.  The mail path was not arranged beforehand with
      the involved MTAs; it emerged spontaneously.  This message would not
      have
      made it to the target without whitelisting, because:</t>
      <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-appendix.a-3">
        <li pn="section-appendix.a-3.1">the author domain published a strict SPF policy (-all),</li>
        <li pn="section-appendix.a-3.2">the forwarder did not alter the bounce address, and</li>
        <li pn="section-appendix.a-3.3">the target usually honors reject on fail, according to <xref target="RFC7208" sectionFormat="of" section="8.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7208#section-8.4" derivedContent="RFC7208"/>.</li>
      </ul>
      <t indent="0" pn="section-appendix.a-4">However, the target also implemented the last paragraph of <xref target="RFC7208" sectionFormat="of" section="D.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7208#appendix-D.3" derivedContent="RFC7208"/>.  Its behavior
      hinges on the following DNS entries:</t>
      <figure align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-dns-resource-records-for-20">DNS Resource Records for 2001:db8::2:1
                (line breaks for editorial reasons)</name>
        <sourcecode name="" markers="false" pn="section-appendix.a-5.1">
  1.0.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.b.8.2.0.0.1.
                                               list.dnswl.example.
       IN  A    127.0.10.1
       IN  TXT  "fwd.example https://dnswl.example/?d=fwd.example"
</sourcecode>
      </figure>
      <t indent="0" pn="section-appendix.a-6">If mail.fwd.example had connected from address 192.0.2.1, then
      the query name would have been <tt>1.2.0.192.list.dnswl.example</tt>.
      See full description in <xref target="RFC5782" format="default" sectionFormat="of" derivedContent="RFC5782"/>.</t>
      <t indent="0" pn="section-appendix.a-7">At connection time, because the remote IP address is whitelisted,
      the target MTA did not reject the message before DATA.  Instead, it
      recorded the SPF fail result and indicated the local policy mechanism
      that was applied in order to override that result.
      Subsequent filtering verified DKIM <xref target="RFC6376" format="default" sectionFormat="of" derivedContent="RFC6376"/>.</t>
      <t indent="0" pn="section-appendix.a-8">At later stages, mail filters can reject or quarantine the message
      based on its content.
      A deeper knowledge of the policy values obtained from dnswl.example
      allows interpreting the values of policy.ip and weighing them against
      other factors so as to make better decisions.</t>
    </section>
    <section anchor="implement" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-known-implementation">Known Implementation</name>
      <t indent="0" pn="section-appendix.b-1">
	Implementation details mentioned in this section have been
	stable for several years.
	Yet, this description is necessarily superficial, version
	dependent, and subject to change.
      </t>
      <t indent="0" pn="section-appendix.b-2">
	Courier-MTA <xref target="Courier-MTA" format="default" sectionFormat="of" derivedContent="Courier-MTA"/> can be
	configured to look up DNSBLs
	and DNSWLs, with similar command-line switches:
      </t>
      <sourcecode name="" markers="false" pn="section-appendix.b-3">
-block=zone[=displayzone][,var[/n.n.n.n][,msg]]
-allow=zone[=displayzone][,var[/n.n.n.n[,]]]
</sourcecode>
      <t indent="0" pn="section-appendix.b-4">
	"zone" is the zone to be queried.
      </t>
      <t indent="0" pn="section-appendix.b-5">
	"displayzone" is only used for -allow; it is the value to be set
	in the dns.zone property.
      </t>
      <t indent="0" pn="section-appendix.b-6">
	"var" stands for the environment variable whose existence triggers
	a special action.  The default variable names result in a
	conventional behavior implemented by Courier-MTA.
	By setting different environment variables,
	users can customize the behavior.  Conventional behavior differs
	widely
	between -block and -allow.  The former rejects the message; the latter
	produces Authentication-Results header fields.
      </t>
      <t indent="0" pn="section-appendix.b-7">
	The n.n.n.n IP address requires a precise A record response.  If
	not given, any response results in setting the corresponding variable.
	If given, variables are set only if the response matches exactly.
	Such syntax provides for a very limited interpretation of the
	information encoded in A records.
	However, it is considered to be too complicated already.
	Even specifying a range, an enumeration of values, or a regular
	expression would require something beyond what a normal user
	would be willing to manage.
      </t>
      <t indent="0" pn="section-appendix.b-8">
	Finally, the trailing message, which overrides the 5xx SMTP reply
	for -block, is not used for -allow, except that its mere presence
	requires querying TXT records to be registered in policy.txt.
      </t>
      <t indent="0" pn="section-appendix.b-9">
	SPF is part of Courier-MTA's core.  It is configured separately
	and provides for an "allowok" keyword to indicate the choice to
	override
	rejection in case of SPF failure and -allow whitelisting.
      </t>
      <t indent="0" pn="section-appendix.b-10">
   A customary whitelist is defined by DNSWL.org <xref target="DNSWL" format="default" sectionFormat="of" derivedContent="DNSWL"/>.  It serves A records
   encoded as follows:
</t>
      <dl newline="false" spacing="normal" indent="3" pn="section-appendix.b-11">
        <dt pn="section-appendix.b-11.1">1st octet:</dt>
        <dd pn="section-appendix.b-11.2">127.</dd>
        <dt pn="section-appendix.b-11.3">2nd octet:</dt>
        <dd pn="section-appendix.b-11.4">0.</dd>
        <dt pn="section-appendix.b-11.5">3rd octet:</dt>
        <dd pn="section-appendix.b-11.6">Category of business, 15 values.</dd>
        <dt pn="section-appendix.b-11.7">4th octet:</dt>
        <dd pn="section-appendix.b-11.8">Trustworthiness/score, 4 values.</dd>
      </dl>
      <t indent="0" pn="section-appendix.b-12">
   They also serve TXT records containing the domain name followed by a
   URL pointing to further information about the relevant organization,
   such as what other IP addresses of theirs are being whitelisted.
   They don't use UTF-8.
</t>
      <t indent="0" pn="section-appendix.b-13">
	DNSWL.org provides for free
	registration and free access below
	100,000 queries per day.
	They use a special return code, 127.0.0.255 as exemplified above,
	to signal that the quota has been exceeded.


Although Courier-MTA itself does not recognize this return code, it has a mail
filter (zdkimfilter, named after its main usage) that hard codes recognition
of this code and the code for trustworthiness in the 4th octet.
      </t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-appendix.c">
      <name slugifiedName="name-future-possibilities-of-the">Future Possibilities of the 'dns' ptype</name>
      <t indent="0" pn="section-appendix.c-1">
	The description of the new ptype proposed in <xref target="ptype" format="default" sectionFormat="of" derivedContent="Section 4.2"/>
	says, "The property being reported belongs to the Domain Name
	System."  That definition can broadly include any tag found in a
	domain's TXT record.  For example, designers of
	authentication methods can
	agree that within a resinfo of a given method, any dns ptype
	refers to tags in the relevant DNS record, unless otherwise
	specified.  So one could have, say:
      </t>
      <sourcecode name="" type="" markers="false" pn="section-appendix.c-2">
Authentication-Results: example.com;
  spf=pass smtp.mailfrom=example.net dns.sec=y;
  dkim=pass header.i=@example.org header.b=jIvx30NG dns.s=tlsrpt
</sourcecode>
      <t indent="0" pn="section-appendix.c-3">
	While dns.sec is defined above, albeit not for the spf method,
	the use of tlsrpt in the DKIM record is exemplified in
	<xref target="RFC8460" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8460#section-3" derivedContent="RFC8460"/>.
	The tag s= is part of the DKIM TXT record, not to be confused
	with the selector s=, which is part of a DKIM signature.  Just
	like the latter can be reported as header.s because the DKIM
	header field is in the message header, it may make sense to
	report the former as dns.s because the DKIM DNS record is in the
	DNS.
      </t>
      <t indent="0" pn="section-appendix.c-4">
	NOTE: This is only a hint at what may become a consistent naming
	convention around the new ptype.  In any case, any new property
	using this ptype requires its own formal definition.  This document
	does NOT define the property dns.s=, let alone the service tlsrpt.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author fullname="Alessandro Vesely" initials="A." surname="Vesely">
        <organization showOnFrontPage="true"/>
        <address>
          <postal>
            <street>v. L. Anelli 13</street>
            <code>20122</code>
            <city>Milano</city>
            <region>MI</region>
            <country>Italy</country>
          </postal>
          <email>vesely@tana.it</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
