<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' []>
<rfc ipr="trust200902" category="std" docName="draft-davids-dmarc-fi-tag-00" updates="7489">
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="yes"?>
<?rfc private=""?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<front>
<title abbrev="DMARC-fi">DMARC Failure reporting Interval tag</title>

<author initials="M." surname="Davids" fullname="Marco Davids">
<organization abbrev="SIDN Labs">SIDN</organization>
<address>
<postal>
<street>Meander 501</street>
<city>Arnhem</city>
<code>6825 MD</code>
<country>NL</country>
<region></region>
</postal>
<phone>+31 26 352 5500</phone>
<email>marco.davids@sidn.nl</email>
<uri></uri>
</address>
</author>
<date year="2016" month="October" day="27"/>

<area>Internet</area>
<workgroup>DMARC Working Group</workgroup>
<keyword>DMARC</keyword>


<abstract>
<t>This document extends the DMARC (RFC7489) record format by
defining an additional tag. This new tag, the &quot;fi&quot; tag, is to be
used in conjunction with the &quot;ruf&quot; tag. It enables a simple way of
rate limiting the message-specific failure reporting on the request of a Domain Owner.
</t>
</abstract>


</front>

<middle>

<section anchor="introduction" title="Introduction">
<t>Domain Owners may have various reasons to permanently configure a &quot;ruf&quot; tag. For example in
the case of reputation management, monitoring or research this can be seen as useful functionality.
</t>
<t>DMARC <xref target="RFC7489"/> per-message failure reports (&quot;ruf&quot;) are sent almost
immediately and in a non-aggregated manner. Under certain circumstances this can potentially lead to an
undesirable high volume of reports. Especially in the case where the Domain Owner's name is spoofed and abused in
a large scale phishing or other impersonation attack.
</t>
<t>DMARC [RFC7489] Section 7.3 leaves it to the discretion of participating Mail Receivers and report generators
to take measures against sending high volumes of failure reports. But their mileage may vary and the
measures they take, if any, may not meet the criteria of the Domain Owner at the receiving end.
</t>
<t>The lack of a mechanism to influence the volume of reports from a Domain Owners' perspective,
constitutes an obstacle for deployment of this feature.
</t>
<t>This document updates [RFC7489] by defining the &quot;fi&quot; tag, a mechanism that allows the Domain Owner to request a limitation
of no more than one failure report per report generator per time interval.
</t>
</section>

<section anchor="conventions-used-in-this-document" title="Conventions Used In This Document">
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;,
&quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
&quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as
described in <xref target="RFC2119"/> when they appear in ALL CAPS.  These words may
also appear in this document in lower case as plain English words,
absent their normative meanings.
</t>
<t>The following terms are also used, as defined in DMARC [RFC7489].
</t>
<t>Domain Owner and Mail Receiver.
</t>
</section>

<section anchor="extension-to-the-general-record-format" title="Extension to the General Record Format">
<t>The following tag is introduced as an additional valid DMARC tag for use in conjunction with the Reporting URI for Failure (&quot;ruf&quot;) tag:
</t>
<t>fi: Interval requested between message-specific failure reports
(plain-text 32-bit unsigned integer; OPTIONAL; if not defined or 0, then there is no rate limiting requested).
Indicates a request to report generators to send per-message failure reports with an interval of
approximately the requested number in seconds. But no more than that.
</t>
<t>Any intermediate remaining reports SHOULD NOT be sent and MAY be disgarded if generated at all. But disregarding per-message failure reports
as a consequence of this tag, SHALL NOT affect the statistical information in aggregated feedback repports.
</t>
<t>Report generators that choose to adhere to the &quot;ruf&quot; tag option, SHOULD also adhere to the requested &quot;fi&quot; tag setting defined here.
This tag's content SHALL be ignored if a &quot;ruf&quot; tag is not also specified, or if the syntax of the integer is invalid.
</t>
<t>Report generators that implement this feature MUST be able to support the entire interval range from 0-86400 and MAY support
longer intervals.
</t>
</section>

<section anchor="formal-definition" title="Formal Definition">
<t>The formal definition of the &quot;fi&quot; tag format, using ABNF <xref target="RFC5234"/>, is as follows:
</t>
<t>Introduced:
</t>

<figure align="center"><artwork align="center">
 dmarc-finterval = "fi" \*WSP "=" \*WSP 1\*DIGIT
</artwork></figure>
<t>Updated:
</t>

<figure align="center"><artwork align="center">
 dmarc-record    = dmarc-version dmarc-sep
                   [dmarc-request]
                   [dmarc-sep dmarc-srequest]
                   [dmarc-sep dmarc-auri]
                   [dmarc-sep dmarc-furi]
                   [dmarc-sep dmarc-adkim]
                   [dmarc-sep dmarc-aspf]
                   [dmarc-sep dmarc-ainterval]
                   [dmarc-sep dmarc-finterval]
                   [dmarc-sep dmarc-fo]
                   [dmarc-sep dmarc-rfmt]
                   [dmarc-sep dmarc-percent]
                   [dmarc-sep]
                   ; components other than dmarc-version and
                   ; dmarc-request may appear in any order
</artwork></figure>
</section>

<section anchor="domain-owner-example" title="Domain Owner Example">
<t>The DMARC policy record with the &quot;fi&quot; tag might look like this when retrieved using a common command-line tool:
</t>

<figure align="center"><artwork align="center">
 % dig +short TXT _dmarc.example.com.
 "v=DMARC1; p=none; rua=mailto:dmarc-feedback@example.com;
  ruf=mailto:auth-reports@example.com; fi=300;"
</artwork></figure>
<t>To publish such a record, the DNS administrator for the Domain Owner might create an entry like the following
in the appropriate zone file (following the conventional zone file format):
</t>

<figure align="center"><artwork align="center">
; DMARC record for the domain example.com

_dmarc  IN TXT ( "v=DMARC1; p=none; "
                 "rua=mailto:dmarc-feedback@example.com; "
                 "ruf=mailto:auth-reports@example.com; fi=300; " )
</artwork></figure>
<t>The request implicates that the Domain Owner is willing to accept no more than one per-message failure report every 5 minutes
from any report generator.
</t>
</section>

<section anchor="iana-considerations" title="IANA Considerations">
<t>As per [RFC7489 p.17] Section 6.3 last paragraph, a new version of DMARC is not required. Older implementations that
consider the &quot;fi&quot; tag as unknown, will ignore it.
</t>
<t>However, this document requires an update of the IANA <xref target="RFC5226"/> <eref target="https://www.iana.org/assignments/dmarc-parameters/dmarc-parameters.xhtml">DMARC Tag Registry</eref>:
</t>

<figure align="left"><artwork align="left">
       Tag Name | Description
       ---------+---------------------------
       fi       | Failure Reporting interval
</artwork></figure>
</section>

<section anchor="security-considerations" title="Security Considerations">
<t>The Domain Owner should be aware that defining a &quot;fi&quot; tag is a trade-off between too much reports and
possibly missing out on some details. A large scale attack that triggers the rate limiting,
might block the generation of reports for other events on the same domain to the same Mail Receiver.
</t>
<t>An attack could involve many different report generators. The Domain Owner should be aware that the &quot;fi&quot; tag
is on a per report generator basis. Combined, multiple report generators might still generate a considerable
amount of reports. An attack could also involve multiple domains of one particular Domain Owner. The &quot;fi&quot; tag
is on a per domain basis, so a deliberate abuse of multiple spoofed domains of one Domain Owner,
might still generate high volumes of per-message failure reports.
</t>
<t>Therefore it makes sense to define a relatively short TTL on DMARC-records, to allow for the possibility of increasing the &quot;fi&quot;-value on an ad hoc basis,
or to remove the &quot;ruf&quot; (and &quot;fi&quot;) tag altogether in case of a problem.
</t>
<t>The security of the DMARC TXT-record of which the &quot;fi&quot; tag is a part, rests on the security of the underlying DNS infrastructure.
In that respect is is advisable to make use of DNSSEC.
</t>
</section>

<section anchor="discussion" title="Discussion">
<t>The DMARC virtual verification draft [draft-akagiri-dmarc-virtual-verification] discusses possible values for the &quot;ruf&quot; tag.
The authors of that draft are kindly requested to take this draft into consideration as part of their discussions.
</t>
</section>

<section anchor="acknowledgments" title="Acknowledgments">
<t>TBD
</t>
</section>

</middle>
<back>
<references title="Normative References">
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5226.xml"?>
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5234.xml"?>
</references>
<references title="Informative References">
<?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7489.xml"?>
</references>

</back>
</rfc>
