draft-ietf-dmarc-psd-15.txt   rfc9091.txt 
Network Working Group S. Kitterman Internet Engineering Task Force (IETF) S. Kitterman
Internet-Draft fTLD Registry Services Request for Comments: 9091 fTLD Registry Services
Intended status: Experimental T. Wicinski, Ed. Category: Experimental T. Wicinski, Ed.
Expires: December 16, 2021 June 14, 2021 ISSN: 2070-1721 July 2021
Experimental DMARC Extension For Public Suffix Domains Experimental Domain-Based Message Authentication, Reporting, and
draft-ietf-dmarc-psd-15 Conformance (DMARC) Extension for Public Suffix Domains
Abstract Abstract
Domain-based Message Authentication, Reporting, and Conformance Domain-based Message Authentication, Reporting, and Conformance
(DMARC) permits a domain-controlling organization to express domain- (DMARC), defined in RFC 7489, permits a domain-controlling
level policies and preferences for message validation, disposition, organization to express domain-level policies and preferences for
and reporting, which a mail-receiving organization can use to improve message validation, disposition, and reporting, which a mail-
mail handling. receiving organization can use to improve mail handling.
DMARC distinguishes the portion of a name that is a Public Suffix DMARC distinguishes the portion of a name that is a Public Suffix
Domain (PSD), below which organizational domain names are created. Domain (PSD), below which Organizational Domain names are created.
The basic DMARC capability allows organizational domains to specify The basic DMARC capability allows Organizational Domains to specify
policies that apply to their subdomains, but it does not give that policies that apply to their subdomains, but it does not give that
capability to PSDs. This document describes an extension to DMARC to capability to PSDs. This document describes an extension to DMARC to
fully enable DMARC functionality for PSDs. fully enable DMARC functionality for PSDs.
Some implementations of DMARC consider a PSD to be ineligible for Some implementations of DMARC consider a PSD to be ineligible for
DMARC enforcement. This specification addresses that case. DMARC enforcement. This specification addresses that case.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This document is not an Internet Standards Track specification; it is
provisions of BCP 78 and BCP 79. published for examination, experimental implementation, and
evaluation.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document defines an Experimental Protocol for the Internet
and may be updated, replaced, or obsoleted by other documents at any community. This document is a product of the Internet Engineering
time. It is inappropriate to use Internet-Drafts as reference Task Force (IETF). It represents the consensus of the IETF
material or to cite them other than as "work in progress." community. It has received public review and has been approved for
publication by the Internet Engineering Steering Group (IESG). Not
all documents approved by the IESG are candidates for any level of
Internet Standard; see Section 2 of RFC 7841.
This Internet-Draft will expire on December 16, 2021. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9091.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
1.1. Example . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Example
1.2. Discussion . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Discussion
2. Terminology and Definitions . . . . . . . . . . . . . . . . . 5 2. Terminology and Definitions
2.1. Conventions Used in This Document . . . . . . . . . . . . 5 2.1. Conventions Used in This Document
2.2. Public Suffix Domain (PSD) . . . . . . . . . . . . . . . 6 2.2. Public Suffix Domain (PSD)
2.3. Organizational Domain . . . . . . . . . . . . . . . . . . 6 2.3. Organizational Domain
2.4. Longest PSD . . . . . . . . . . . . . . . . . . . . . . . 6 2.4. Longest PSD
2.5. Public Suffix Operator (PSO) . . . . . . . . . . . . . . 6 2.5. Public Suffix Operator (PSO)
2.6. PSO Controlled Domain Names . . . . . . . . . . . . . . . 6 2.6. PSO-Controlled Domain Names
2.7. Non-existent Domains . . . . . . . . . . . . . . . . . . 6 2.7. Non-existent Domains
3. PSD DMARC Updates to DMARC Requirements . . . . . . . . . . . 7 3. PSD DMARC Updates to DMARC Requirements
3.1. General Updates . . . . . . . . . . . . . . . . . . . . . 7 3.1. General Updates
3.2. Changes in Section 6.3 "General Record Format" . . . . . 7 3.2. Changes in Section 6.3 ("General Record Format")
3.3. Changes in Section 6.4 "Formal Definition" . . . . . . . 7 3.3. Changes in Section 6.4 ("Formal Definition")
3.4. Changes in Section 6.5 "Domain Owner Actions" . . . . . . 8 3.4. Changes in Section 6.5 ("Domain Owner Actions")
3.5. Changes in Section 6.6.1 "Extract Author Domain" . . . . 8 3.5. Changes in Section 6.6.1 ("Extract Author Domain")
3.6. Changes in Section 6.6.3 "Policy Discovery" . . . . . . . 8 3.6. Changes in Section 6.6.3 ("Policy Discovery")
3.7. Changes in Section 7 "DMARC Feedback" . . . . . . . . . . 9 3.7. Changes in Section 7 ("DMARC Feedback")
4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9 4. Privacy Considerations
5. Security Considerations . . . . . . . . . . . . . . . . . . . 10 5. Security Considerations
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 6. IANA Considerations
6.1. Subdomain Policy Tag . . . . . . . . . . . . . . . . . . 11 7. References
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 7.1. Normative References
7.1. Normative References . . . . . . . . . . . . . . . . . . 11 7.2. Informative References
7.2. Informative References . . . . . . . . . . . . . . . . . 11 Appendix A. PSD DMARC Privacy Concern Mitigation Experiment
7.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Appendix B. DMARC PSD Registry Examples
Appendix A. PSD DMARC Privacy Concern Mitigation Experiment . . 12 B.1. DMARC PSD DNS Query Service
Appendix B. DMARC PSD Registry Examples . . . . . . . . . . . . 13 B.2. DMARC PSD Registry
B.1. DMARC PSD DNS Query Service . . . . . . . . . . . . . . . 13 B.3. DMARC PSD PSL Extension
B.2. DMARC Public Suffix Domain (PSD) Registry . . . . . . . . 13 Appendix C. Implementations
B.3. DMARC PSD PSL Extension . . . . . . . . . . . . . . . . . 14 C.1. Authheaders Module
Appendix C. Implementations . . . . . . . . . . . . . . . . . . 14 C.2. Zdkimfilter Module
C.1. Authheaders Module . . . . . . . . . . . . . . . . . . . 14 Acknowledgements
C.2. Zdkimfilter Module . . . . . . . . . . . . . . . . . . . 14 Authors' Addresses
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 15
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction 1. Introduction
DMARC [RFC7489] provides a mechanism for publishing organizational DMARC [RFC7489] provides a mechanism for publishing organizational
policy information to email receivers. DMARC allows policy to be policy information to email receivers. DMARC allows policy to be
specified for both individual domains and for organizational domains specified for both individual domains and for Organizational Domains
and their sub-domains within a single organization. and their subdomains within a single organization.
To determine the organizational domain for a message under To determine the Organizational Domain for a message under
evaluation, and thus where to look for a policy statement, DMARC evaluation, and thus where to look for a policy statement, DMARC
makes use of a public suffix list. The process for doing this can be makes use of a public suffix list. The process for doing this can be
found in Section 3.2 of the DMARC specification. Currently, the found in Section 3.2 of the DMARC specification [RFC7489].
public suffix list being used is the most common one that is Currently, the most common public suffix list being used is the one
maintained by the Mozilla Foundation and made public at maintained by the Mozilla Foundation and made public at
http://publicsuffix.org [1]. <https://publicsuffix.org>.
In the basic DMARC model, Public Suffix Domains (PSDs) are not In the basic DMARC model, Public Suffix Domains (PSDs) are not
organizational domains and are thus not subject to DMARC processing. Organizational Domains and are thus not subject to DMARC processing.
In DMARC, domains fall into one of three categories: organizational In DMARC, domains fall into one of three categories: Organizational
domains, sub-domains of organizational domains, or PSDs. A PSD can Domains, subdomains of Organizational Domains, or PSDs. A PSD can
only publish DMARC policy for itself, and not for any sub-domains only publish DMARC policy for itself and not for any subdomains under
under it. In some cases, this limitation allows for the abuse of it. In some cases, this limitation allows for the abuse of non-
non-existent organizational-level domains and hampers identification existent organizational-level domains and hampers identification of
of domain abuse in email. domain abuse in email.
This document specifies experimental updates to the DMARC This document specifies experimental updates to the DMARC
specification cited above, in an attempt to mitigate this abuse. specification [RFC7489] in an attempt to mitigate this abuse.
1.1. Example 1.1. Example
As an example, imagine a Top-Level Domain (TLD), ".example", that has As an example, imagine a Top-Level Domain (TLD), ".example", that has
public subdomains for government and commercial use (".gov.example" public subdomains for government and commercial use (".gov.example"
and ".com.example"). The maintainer of a list of such a PSD and ".com.example"). The maintainer of a list of such a PSD
structure would include entries for both of these sub-domains, structure would include entries for both of these subdomains, thereby
thereby indicating that they are PSDs, below which organizational indicating that they are PSDs, below which Organizational Domains can
domains can be registered. Suppose further that there exists a be registered. Suppose further that there exists a legitimate domain
legitimate domain called "tax.gov.example", registered within called "tax.gov.example", registered within ".gov.example".
".gov.example".
However, by exploiting the typically unauthenticated nature of email, By exploiting the typically unauthenticated nature of email, there
there are regular malicious campaigns to impersonate this are regular malicious campaigns to impersonate this organization that
organization that use similar-looking ("cousin") domains such as use similar-looking ("cousin") domains such as "t4x.gov.example".
"t4x.gov.example". Such domains are not registered. Such domains are not registered.
Within the ".gov.example" public suffix, use of DMARC has been Within the ".gov.example" public suffix, use of DMARC has been
mandated, so "gov.example" publishes the following DMARC DNS record: mandated, so "gov.example" publishes the following DMARC DNS record:
_dmarc.gov.example. IN TXT ( "v=DMARC1; p=reject;" _dmarc.gov.example. IN TXT ( "v=DMARC1; p=reject;"
"rua=mailto:dmc@dmarc.svc.gov.example" ) "rua=mailto:dmc@dmarc.svc.gov.example" )
This DMARC record provides policy and a reporting destination for This DMARC record provides policy and a reporting destination for
mail sent from @gov.example. Similarly, "tax.gov.example" will have mail sent from @gov.example. Similarly, "tax.gov.example" will have
a DMARC record that specifies policy for mail sent from addresses a DMARC record that specifies policy for mail sent from addresses
@tax.gov.example. However, due to DMARC's current method of @tax.gov.example. However, due to DMARC's current method of
discovering and applying policy at the organizational domain level, discovering and applying policy at the Organizational Domain level,
the non-existent organizational domain of @t4x.gov.example does not the non-existent Organizational Domain of @t4x.gov.example does not
and cannot fall under a DMARC policy. and cannot fall under a DMARC policy.
Defensively registering all variants of "tax" is not a scalable Defensively registering all variants of "tax" is not a scalable
strategy. The intent of this specification, therefore, is to enhance strategy. The intent of this specification, therefore, is to enhance
the DMARC discovery method by enabling an agent receiving such a the DMARC discovery method by enabling an agent receiving such a
message to be able to determine that a relevant policy is present at message to be able to determine that a relevant policy is present at
"gov.example", which is precluded by the current DMARC specification. "gov.example", which is precluded by the current DMARC specification.
1.2. Discussion 1.2. Discussion
This document provides a simple extension to [RFC7489] to allow This document provides a simple extension to [RFC7489] to allow
operators of Public Suffix Domains (PSDs) to: operators of Public Suffix Domains (PSDs) to:
o Express policy at the level of the PSD that covers all * Express policy at the level of the PSD that covers all
organizational domains that do not explicitly publish DMARC Organizational Domains that do not explicitly publish DMARC
records records
o Extends the DMARC policy query functionality to detect and process * Extend the DMARC policy query functionality to detect and process
such a policy such a policy
o Describes receiver feedback for such policies * Describe receiver feedback for such policies
o Provides controls to mitigate potential privacy considerations * Provide controls to mitigate potential privacy considerations
associated with this extension associated with this extension
This document also provides a new DMARC tag to indicate requested This document also provides a new DMARC tag to indicate requested
handling policy for non-existent subdomains. This is provided handling policy for non-existent subdomains. This is provided
specifically to support phased deployment of PSD DMARC, but is specifically to support phased deployment of PSD DMARC but is
expected to be useful more generally. Undesired rejection risks for expected to be useful more generally. Undesired rejection risks for
mail purporting to be from domains that do not exist are mail purporting to be from domains that do not exist are
substantially lower than for those that do, so the operational risk substantially lower than for those that do, so the operational risk
of requesting harsh policy treatment (e.g., reject) is lower. of requesting harsh policy treatment (e.g., reject) is lower.
As an additional benefit, the PSD DMARC extension clarifies existing As an additional benefit, the PSD DMARC extension clarifies existing
requirements. Based on the requirements of [RFC7489], DMARC should requirements. Based on the requirements of [RFC7489], DMARC should
function above the organizational level for exact domain matches function above the organizational level for exact domain matches
(i.e., if a DMARC record were published for "example", then mail from (i.e., if a DMARC record were published for "example", then mail from
example@example should be subject to DMARC processing). Testing had example@example should be subject to DMARC processing). Testing has
revealed that this is not consistently applied in different revealed that this is not consistently applied in different
implementations. implementations.
There are two types of Public Suffix Operators (PSOs) for which this There are two types of Public Suffix Operators (PSOs) for which this
extension would be useful and appropriate: extension would be useful and appropriate:
o Branded PSDs (e.g., ".google"): These domains are effectively Branded PSDs (e.g., ".google"):
Organizational Domains as discussed in [RFC7489]. They control These domains are effectively Organizational Domains as discussed
all subdomains of the tree. These are effectively private in [RFC7489]. They control all subdomains of the tree. These are
domains, but listed in the current public suffix list. They are effectively private domains but listed in the current public
treated as Public for DMARC purposes. They require the same suffix list. They are treated as public for DMARC purposes. They
protections as DMARC Organizational Domains, but are currently require the same protections as DMARC Organizational Domains but
unable to benefit from DMARC. are currently unable to benefit from DMARC.
o Multi-organization PSDs that require DMARC usage (e.g., ".bank"): Multi-organization PSDs that require DMARC usage (e.g., ".bank"):
Because existing Organizational Domains using this PSD have their Because existing Organizational Domains using this PSD have their
own DMARC policy, the applicability of this extension is for non- own DMARC policy, the applicability of this extension is for non-
existent domains. The extension allows the brand protection existent domains. The extension allows the brand protection
benefits of DMARC to extend to the entire PSD, including cousin benefits of DMARC to extend to the entire PSD, including cousin
domains of registered organizations. domains of registered organizations.
Due to the design of DMARC and the nature of the Internet email Due to the design of DMARC and the nature of the Internet email
architecture [RFC5598], there are interoperability issues associated architecture [RFC5598], there are interoperability issues associated
with DMARC deployment. These are discussed in Interoperability with DMARC deployment. These are discussed in "Interoperability
Issues between DMARC and Indirect Email Flows [RFC7960]. These Issues between Domain-based Message Authentication, Reporting, and
issues are not typically applicable to PSDs, since they (e.g., the Conformance (DMARC) and Indirect Email Flows" [RFC7960]. These
issues are not typically applicable to PSDs since they (e.g., the
".gov.example" used above) do not typically send mail. ".gov.example" used above) do not typically send mail.
2. Terminology and Definitions 2. Terminology and Definitions
This section defines terms used in the rest of the document. This section defines terms used in the rest of the document.
2.1. Conventions Used in This Document 2.1. Conventions Used in This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2.2. Public Suffix Domain (PSD) 2.2. Public Suffix Domain (PSD)
The global Internet Domain Name System (DNS) is documented in The global Internet Domain Name System (DNS) is documented in
numerous RFCs. It defines a tree of names starting with root, ".", numerous RFCs. It defines a tree of names starting with root, ".",
immediately below which are Top Level Domain names such as ".com" and immediately below which are Top-Level Domain names such as ".com" and
".us". The domain name structure consists of a tree of names, each ".us". The domain name structure consists of a tree of names, each
of which is made of a sequence of words ("labels") separated by of which is made of a sequence of words ("labels") separated by
period characters. The root of the tree is simply called ".". The period characters. The root of the tree is simply called ".". The
Internet community at large, through processes and policies external Internet community at large, through processes and policies external
to this work, selects points in this tree at which to register domain to this work, selects points in this tree at which to register domain
names "owned" by independent organizations. Real-world examples are names "owned" by independent organizations. Real-world examples are
".com", ".org", ".us", and ".gov.uk". Names at which such ".com", ".org", ".us", and ".gov.uk". Names at which such
registrations occur are called Public Suffix Domains (PSDs), and a registrations occur are called "Public Suffix Domains (PSDs)", and a
registration consists of a label selected by the registrant to which registration consists of a label selected by the registrant to which
a desirable PSD is appended. For example, "ietf.org" is a registered a desirable PSD is appended. For example, "ietf.org" is a registered
domain name, and ".org" is its PSD. domain name, and ".org" is its PSD.
2.3. Organizational Domain 2.3. Organizational Domain
The term Organizational Domains is defined in [RFC7489] Section 3.2. The term "Organizational Domain" is defined in Section 3.2 of
[RFC7489].
2.4. Longest PSD 2.4. Longest PSD
The longest PSD is the Organizational Domain with one label removed. The longest PSD is the Organizational Domain with one label removed.
It names the immediate parent node of the Organizational Domain in It names the immediate parent node of the Organizational Domain in
the DNS namespace tree. the DNS namespace tree.
2.5. Public Suffix Operator (PSO) 2.5. Public Suffix Operator (PSO)
A Public Suffix Operator is an organization which manages operations A Public Suffix Operator is an organization that manages operations
within a PSD, particularly the DNS records published for names at and within a PSD, particularly the DNS records published for names at and
under that domain name. under that domain name.
2.6. PSO Controlled Domain Names 2.6. PSO-Controlled Domain Names
PSO Controlled Domain Names are names in the DNS that are managed by PSO-Controlled Domain Names are names in the DNS that are managed by
a PSO and are not available for use as Organizational Domains. PSO a PSO and are not available for use as Organizational Domains. PSO-
Controlled Domain Names may have one (e.g., ".com") or more (e.g., Controlled Domain Names may have one (e.g., ".com") or more (e.g.,
".co.uk") name components, depending on PSD policy. ".co.uk") name components, depending on PSD policy.
2.7. Non-existent Domains 2.7. Non-existent Domains
For DMARC purposes, a non-existent domain is a domain for which there For DMARC purposes, a non-existent domain is a domain for which there
is an NXDOMAIN or NODATA response for A, AAAA, and MX records. This is an NXDOMAIN or NODATA response for A, AAAA, and MX records. This
is a broader definition than that in [RFC8020]. is a broader definition than that in [RFC8020].
3. PSD DMARC Updates to DMARC Requirements 3. PSD DMARC Updates to DMARC Requirements
To participate in this experiment, implementations should interpret To participate in this experiment, implementations should interpret
RFC7489 as follows: [RFC7489] as described in the following subsections.
3.1. General Updates 3.1. General Updates
References to "Domain Owners" also apply to PSOs. References to "Domain Owners" also apply to PSOs.
3.2. Changes in Section 6.3 "General Record Format" 3.2. Changes in Section 6.3 ("General Record Format")
If this experiment is successful, this paragraph is added to this The following paragraph is added to this section. A new tag is added
section. A new tag is added after "fo": after "fo":
np: Requested Mail Receiver policy for non-existent subdomains | np: Requested Mail Receiver policy for non-existent subdomains
(plain-text; OPTIONAL). Indicates the policy to be enacted by the | (plain-text; OPTIONAL). Indicates the policy to be enacted by
Receiver at the request of the Domain Owner. It applies only to | the Receiver at the request of the Domain Owner. It applies
non-existent subdomains of the domain queried and not to either | only to non-existent subdomains of the domain queried and not
existing subdomains or the domain itself. Its syntax is identical | to either existing subdomains or the domain itself. Its syntax
to that of the "p" tag defined below. If the "np" tag is absent, | is identical to that of the "p" tag defined below. If the "np"
the policy specified by the "sp" tag (if the "sp" tag is present) | tag is absent, the policy specified by the "sp" tag (if the
or the policy specified by the "p" tag, if the "sp" tag is not | "sp" tag is present) or the policy specified by the "p" tag (if
present, MUST be applied for non-existent subdomains. Note that | the "sp" tag is absent) MUST be applied for non-existent
"np" will be ignored for DMARC records published on subdomains of | subdomains. Note that "np" will be ignored for DMARC records
Organizational Domains and PSDs due to the effect of the DMARC | published on subdomains of Organizational Domains and PSDs due
policy discovery mechanism described in DMARC Section 6.6.3. | to the effect of the DMARC policy discovery mechanism described
| in Section 6.6.3 of [RFC7489].
The following tag definitions from DMARC are updated: The following tag definitions from DMARC are updated:
p: The sentence 'Policy applies to the domain queried and to p: The sentence 'Policy applies to the domain queried and to
subdomains, unless subdomain policy is explicitly described using subdomains, unless subdomain policy is explicitly described using
the "sp" tag' is updated to read 'Policy applies to the domain the "sp" tag' is updated to read 'Policy applies to the domain
queried and to subdomains, unless subdomain policy is explicitly queried and to subdomains, unless subdomain policy is explicitly
described using the "sp" or "np" tags.' described using the "sp" or "np" tags.'
sp: The sentence 'If absent, the policy specified by the "p" tag sp: The sentence 'If absent, the policy specified by the "p" tag
MUST be applied for subdomains' is updated to read 'If both the MUST be applied for subdomains' is updated to read 'If both the
"sp" tag is absent and the "np" tag is either absent or not "sp" tag is absent and the "np" tag is either absent or not
applicable, the policy specified by the "p" tag MUST be applied applicable, the policy specified by the "p" tag MUST be applied
for subdomains. for subdomains.'
3.3. Changes in Section 6.4 "Formal Definition" 3.3. Changes in Section 6.4 ("Formal Definition")
The ABNF for DMARC shall updated to include a new definition "dmarc- The ABNF [RFC5234] for DMARC is updated to include a new definition,
nprequest" which is defined as: "dmarc-nprequest":
dmarc-nprequest = "np" *WSP "=" *WSP dmarc-nprequest = "np" *WSP "=" *WSP
( "none" / "quarantine" / "reject" ) ( "none" / "quarantine" / "reject" )
The "dmarc-record" definition is also updated to include the The "dmarc-record" definition is also updated to include the
following: following:
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-fo]
[dmarc-sep dmarc-rfmt]
[dmarc-sep dmarc-percent]
[dmarc-sep]
[dmarc-sep dmarc-nprequest] [dmarc-sep dmarc-nprequest]
; components other than dmarc-version and
; dmarc-request may appear in any order
3.4. Changes in Section 6.5 "Domain Owner Actions" 3.4. Changes in Section 6.5 ("Domain Owner Actions")
In addition to the DMARC domain owner actions, PSOs that require use In addition to the DMARC Domain Owner actions, PSOs that require use
of DMARC and participate in PSD DMARC ought to make that information of DMARC and participate in PSD DMARC ought to make that information
available to receivers. This document is an experimental mechanism available to receivers. This document is an experimental mechanism
for doing so. See the [this document] experiment description for doing so; see the description in Appendix B.
(Appendix A).
3.5. Changes in Section 6.6.1 "Extract Author Domain" 3.5. Changes in Section 6.6.1 ("Extract Author Domain")
Experience with DMARC has shown that some implementations short- Experience with DMARC has shown that some implementations short-
circuit messages, bypassing DMARC policy application, when the domain circuit messages, bypassing DMARC policy application, when the domain
name extracted by the receiver (from the RFC5322.From) is on the name extracted by the receiver (from the RFC5322.From domain) is on
public suffix list used by the receiver. This negates the capability the public suffix list used by the receiver. This negates the
being created by this specification. Therefore, the following capability being created by this specification. Therefore, the
paragraph is appended to Section 6.6.1 of DMARC: following paragraph is appended to Section 6.6.1 of the DMARC
specification [RFC7489]:
Note that domain names that appear on a public suffix list are not | Note that domain names that appear on a public suffix list are not
exempt from DMARC policy application and reporting. | exempt from DMARC policy application and reporting.
3.6. Changes in Section 6.6.3 "Policy Discovery" 3.6. Changes in Section 6.6.3 ("Policy Discovery")
A new step between step 3 and 4 is added: A new step is added between steps 3 and 4:
3A. If the set is now empty and the longest PSD (Section 2.4) of the | 3A. If the set is now empty and the longest PSD ([RFC9091],
Organizational Domain is one that the receiver has determined is | Section 2.4) of the Organizational Domain is one that the
acceptable for PSD DMARC (discussed in the [this document] | receiver has determined is acceptable for PSD DMARC (based on
experiment description (Appendix A)), the Mail Receiver MUST query | the data in one of the DMARC PSD Registry Examples described in
the DNS for a DMARC TXT record at the DNS domain matching the | Appendix B of [RFC9091]), the Mail Receiver MUST query the DNS
[this document] longest PSD (Section 2.4) in place of the | for a DMARC TXT record at the DNS domain matching the longest
RFC5322.From domain in the message (if different). A possibly | PSD in place of the RFC5322.From domain in the message (if
empty set of records is returned. | different). A possibly empty set of records is returned.
As an example, for a message with the Organizational Domain of As an example, for a message with the Organizational Domain of
"example.compute.cloudcompany.com.example", the query for PSD DMARC "example.compute.cloudcompany.com.example", the query for PSD DMARC
would use "compute.cloudcompany.com.example" as the [this document] would use "compute.cloudcompany.com.example" as the longest PSD. The
longest PSD (Section 2.4). The receiver would check to see if that receiver would check to see if that PSD is listed in the DMARC PSD
PSD is listed in the DMARC PSD Registry, and if so, perform the Registry, and if so, perform the policy lookup at
policy lookup at "_dmarc.compute.cloudcompany.com.example". "_dmarc.compute.cloudcompany.com.example".
Note: Because the PSD policy query comes after the Organizational Note: Because the PSD policy query comes after the Organizational
Domain policy query, PSD policy is not used for Organizational Domain policy query, PSD policy is not used for Organizational
domains that have published a DMARC policy. Specifically, this is Domains that have published a DMARC policy. Specifically, this is
not a mechanism to provide feedback addresses (RUA/RUF) when an not a mechanism to provide feedback addresses (RUA/RUF) when an
Organizational Domain has declined to do so. Organizational Domain has declined to do so.
3.7. Changes in Section 7 "DMARC Feedback" 3.7. Changes in Section 7 ("DMARC Feedback")
If this experiment is successful, this paragraph is added to this The following paragraph is added to this section:
section.
Operational note for PSD DMARC: For PSOs, feedback for non-existent | Operational note for PSD DMARC: For PSOs, feedback for non-
domains is desirable and useful, just as it is for org-level DMARC | existent domains is desirable and useful, just as it is for org-
operators. See Section 4 of [this document] for discussion of | level DMARC operators. See Section 4 of [RFC9091] for discussion
Privacy Considerations for PSD DMARC. | of privacy considerations for PSD DMARC.
4. Privacy Considerations 4. Privacy Considerations
These privacy considerations are developed based on the requirements These privacy considerations are developed based on the requirements
of [RFC6973]. Additionally, the Privacy Considerations of [RFC7489] of [RFC6973]. Additionally, the privacy considerations of [RFC7489]
apply to the mechanisms described by this document. If this apply to the mechanisms described by this document. To participate
experiment is successful, this section should be incorporated into in this experiment, implementations should be aware of the privacy
the Privacy Considerations section as "Feedback leakage". considerations described in this section. If this experiment is
successful, this section should be incorporated into the "Privacy
Considerations" section as "Feedback Leakage".
Providing feedback reporting to PSOs can, in some cases, cause Providing feedback reporting to PSOs can, in some cases, cause
information to leak out of an organization to the PSO. This leakage information to leak out of an organization to the PSO. This leakage
could potentially be utilized as part of a program of pervasive could potentially be utilized as part of a program of pervasive
surveillance (See [RFC7624]). There are roughly three cases to surveillance (see [RFC7624]). There are roughly three cases to
consider: consider:
o Single Organization PSDs (e.g., ".google"), RUA and RUF reports Single Organization PSDs (e.g., ".google"):
based on PSD DMARC have the potential to contain information about RUA and RUF reports based on PSD DMARC have the potential to
emails related to entities managed by the organization. Since contain information about emails related to entities managed by
both the PSO and the Organizational Domain owners are common, the organization. Since both the PSO and the Organizational
there is no additional privacy risk for either normal or non- Domain Owners are common, there is no additional privacy risk for
existent Domain reporting due to PSD DMARC. either normal or non-existent domain reporting due to PSD DMARC.
o Multi-organization PSDs that require DMARC usage (e.g., ".bank"): Multi-organization PSDs that require DMARC usage (e.g., ".bank"):
PSD DMARC based reports will only be generated for domains that do Reports based on PSD DMARC will only be generated for domains that
not publish a DMARC policy at the organizational or host level. do not publish a DMARC policy at the organizational or host level.
For domains that do publish the required DMARC policy records, the For domains that do publish the required DMARC policy records, the
feedback reporting addresses (RUA and RUF) of the organization (or feedback reporting addresses (RUA and RUF) of the organization (or
hosts) will be used. The only direct feedback leakage risk for hosts) will be used. The only direct risk of feedback leakage for
these PSDs are for Organizational Domains that are out of these PSDs are for Organizational Domains that are out of
compliance with PSD policy. Data on non-existent cousin domains compliance with PSD policy. Data on non-existent cousin domains
would be sent to the PSO. would be sent to the PSO.
o Multi-organization PSDs (e.g., ".com") that do not mandate DMARC Multi-organization PSDs (e.g., ".com") that do not mandate DMARC
usage: Privacy risks for Organizational Domains that have not usage:
deployed DMARC within such PSDs are significant. For non-DMARC Privacy risks for Organizational Domains that have not deployed
DMARC within such PSDs are significant. For non-DMARC
Organizational Domains, all DMARC feedback will be directed to the Organizational Domains, all DMARC feedback will be directed to the
PSO. PSD DMARC is opt-out (by publishing a DMARC record at the PSO. PSD DMARC is opt out (by publishing a DMARC record at the
Organizational Domain level) instead of opt-in, which would be the Organizational Domain level) instead of opt in, which would be the
more desirable characteristic. This means that any non-DMARC more desirable characteristic. This means that any non-DMARC
organizational domain would have its feedback reports redirected Organizational Domain would have its Feedback Reports redirected
to the PSO. The content of such reports, particularly for to the PSO. The content of such reports, particularly for
existing domains, is privacy sensitive. existing domains, is privacy sensitive.
PSOs will receive feedback on non-existent domains, which may be PSOs will receive feedback on non-existent domains, which may be
similar to existing Organizational Domains. Feedback related to such similar to existing Organizational Domains. Feedback related to such
cousin domains have a small risk of carrying information related to cousin domains have a small risk of carrying information related to
an actual Organizational Domain. To minimize this potential concern, an actual Organizational Domain. To minimize this potential concern,
PSD DMARC feedback MUST be limited to Aggregate Reports. Feedback PSD DMARC feedback MUST be limited to Aggregate Reports. Feedback
Reports carry more detailed information and present a greater risk. Reports carry more detailed information and present a greater risk.
Due to the inherent Privacy and Security risks associated with PSD Due to the inherent privacy and security risks associated with PSD
DMARC for Organizational Domains in multi-organization PSDs that do DMARC for Organizational Domains in multi-organization PSDs that do
not participate in DMARC, any Feedback Reporting related to multi- not participate in DMARC, any feedback reporting related to multi-
organizational PSDs MUST be limited to non-existent domains except in organizational PSDs MUST be limited to non-existent domains except in
cases where the reporter knows that PSO requires use of DMARC (by cases where the reporter knows that PSO requires use of DMARC (by
checking the DMARC PSD Registry). checking the DMARC PSD Registry).
5. Security Considerations 5. Security Considerations
This document does not change the Security Considerations of This document does not change the security considerations of
[RFC7489] and [RFC7960]. [RFC7489] and [RFC7960].
The risks of the issues identified in [RFC7489], Section 12.3, DNS The risks of the issues identified in Section 12.3 of [RFC7489] ("DNS
Security, are amplified by PSD DMARC. In particular, DNS cache Security") are amplified by PSD DMARC. In particular, consequences
poisoning (or Name Chaining), see [RFC3833] for details, consequences of DNS cache poisoning (or name chaining) are increased because a
are increased because a successful attack would potentially have a successful attack would potentially have a much wider scope (see
much wider scope. [RFC3833] for details).
The risks of the issues identified in [RFC7489], Section 12.5, The risks of the issues identified in Section 12.5 of [RFC7489]
External Reporting Addresses, are amplified by PSD DMARC. By design, ("External Reporting Addresses") are amplified by PSD DMARC. By
PSD DMARC causes unrequested reporting of feedback to entities design, PSD DMARC causes unrequested reporting of feedback to
external to the Organizational Domain. This is discussed in more entities external to the Organizational Domain. This is discussed in
detail in Section 4. more detail in Section 4.
6. IANA Considerations 6. IANA Considerations
This section describes actions requested to be completed by IANA. IANA has added a new tag to the "DMARC Tag Registry" in the "Domain-
based Message Authentication, Reporting, and Conformance (DMARC)
6.1. Subdomain Policy Tag Parameters" registry. The "Status" column is defined in Section 11.4
of [RFC7489].
IANA is requested to add a new tag to DMARC Tag Registry in the
Domain-based Message Authentication, Reporting, and Conformance
(DMARC) Parameters Registry. The "Status" column is defined in
[RFC7489]Section 11.4.
The entry is as follows: The new entry is as follows:
+----------+-----------+---------+-------------------------------+ +==========+===========+=========+=============================+
| Tag Name | Reference | Status | Description | | Tag Name | Reference | Status | Description |
+----------+-----------+---------+-------------------------------+ +==========+===========+=========+=============================+
| np | this | current | Requested handling policy for | | np | RFC 9091 | current | Requested handling policy |
| | document | | non-existent subdomains | | | | | for non-existent subdomains |
+----------+-----------+---------+-------------------------------+ +----------+-----------+---------+-----------------------------+
[RFC EDITOR: Please replace "This document" with the RFC number of Table 1
this document.]
7. References 7. References
7.1. Normative References 7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234,
DOI 10.17487/RFC5234, January 2008,
<https://www.rfc-editor.org/info/rfc5234>.
[RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based [RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based
Message Authentication, Reporting, and Conformance Message Authentication, Reporting, and Conformance
(DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015,
<https://www.rfc-editor.org/info/rfc7489>. <https://www.rfc-editor.org/info/rfc7489>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
7.2. Informative References 7.2. Informative References
[psddmarc.org] [PSD-DMARC]
multiple, "PSD DMARC Web Site", April 2019, "Public Suffix Domain DMARC", <https://psddmarc.org/>.
<https://psddmarc.org/>.
[RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain [RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain
Name System (DNS)", RFC 3833, DOI 10.17487/RFC3833, August Name System (DNS)", RFC 3833, DOI 10.17487/RFC3833, August
2004, <https://www.rfc-editor.org/info/rfc3833>. 2004, <https://www.rfc-editor.org/info/rfc3833>.
[RFC5598] Crocker, D., "Internet Mail Architecture", RFC 5598, [RFC5598] Crocker, D., "Internet Mail Architecture", RFC 5598,
DOI 10.17487/RFC5598, July 2009, DOI 10.17487/RFC5598, July 2009,
<https://www.rfc-editor.org/info/rfc5598>. <https://www.rfc-editor.org/info/rfc5598>.
[RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J.,
skipping to change at page 12, line 38 skipping to change at line 562
[RFC8020] Bortzmeyer, S. and S. Huque, "NXDOMAIN: There Really Is [RFC8020] Bortzmeyer, S. and S. Huque, "NXDOMAIN: There Really Is
Nothing Underneath", RFC 8020, DOI 10.17487/RFC8020, Nothing Underneath", RFC 8020, DOI 10.17487/RFC8020,
November 2016, <https://www.rfc-editor.org/info/rfc8020>. November 2016, <https://www.rfc-editor.org/info/rfc8020>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26, Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017, RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>. <https://www.rfc-editor.org/info/rfc8126>.
7.3. URIs
[1] http://publicsuffix.org
Appendix A. PSD DMARC Privacy Concern Mitigation Experiment Appendix A. PSD DMARC Privacy Concern Mitigation Experiment
The experiment being performed has three different questions which The experiment being performed has three different questions that are
are looking to be addressed in this document. looking to be addressed in this document.
o Section 3.2 modifies policy discovery to add an additional DNS * Section 3.2 modifies policy discovery to add an additional DNS
lookup. To determine if this lookup is useful, PSDs will add lookup. To determine if this lookup is useful, PSDs will add
additional DMARC records in place, and will analyze the DMARC additional DMARC records in place and will analyze the DMARC
reports. Success will be determined if a consensus of PSDs that reports. Success will be determined if a consensus of PSDs that
publish DMARC records are able to collect useful data. publish DMARC records are able to collect useful data.
o Section 3.2 adds the "np" tag for non-existent subdomains (DNS * Section 3.2 adds the "np" tag for non-existent subdomains (DNS
NXDOMAIN). PSOs wishing to test this will add this flag to their NXDOMAIN). PSOs wishing to test this will add this flag to their
DMARC record, and will analyze DMARC reports for deployment. DMARC record and will analyze DMARC reports for deployment.
Success will be determined if organizations find explicitly Success will be determined if organizations find explicitly
blocking non-existent subdomains domains desirable and provide blocking non-existent subdomains desirable and that doing so
added value. provides added value.
o Section 4.1 discusses three cases where providing feedback could * Section 4 discusses three cases where providing feedback could
cause information to leak out of an organization. This experiment cause information to leak out of an organization. This experiment
will analyze the feedback reports generated for each case to will analyze the Feedback Reports generated for each case to
determine if there is information leakage. determine if there is information leakage.
Appendix B. DMARC PSD Registry Examples Appendix B. DMARC PSD Registry Examples
To facilitate experimentation around data leakage mitigation, samples To facilitate experimentation around mitigation of data leakage,
of the DNS based and IANA like registries are available at samples of the DNS-based and IANA-like registries are available at
[psddmarc.org]. [PSD-DMARC].
B.1. DMARC PSD DNS Query Service B.1. DMARC PSD DNS Query Service
A sample stand-alone DNS query service is available at A sample stand-alone DNS query service is available at [PSD-DMARC].
[psddmarc.org]. It was developed based on the contents suggested for It was developed based on the contents suggested for an IANA registry
an IANA registry in an earlier revision of this draft. Usage of the in an earlier draft version of this document. Usage of the service
service is described on the web site. is described at [PSD-DMARC].
B.2. DMARC Public Suffix Domain (PSD) Registry B.2. DMARC PSD Registry
[psddmarc.org] provides an IANA like DMARC Public Suffix Domain (PSD) [PSD-DMARC] provides an IANA-like DMARC Public Suffix Domain (PSD)
Registry as a stand-alone DNS query service. It follows the contents Registry as a stand-alone DNS query service. It follows the contents
and structure described below. There is a Comma Separated Value and structure described below. There is a Comma-Separated Value
(CSV) version of the listed PSD domains which is suitable for use in (CSV) version of the listed PSDs that is suitable for use in build
build updates for PSD DMARC capable software. updates for PSD DMARC-capable software.
PSDs that are deploying DMARC and are participating in PSD DMARC must PSDs that are deploying DMARC and are participating in PSD DMARC must
register their public suffix domain in this new registry. The register their public suffix domain in this new registry. The
requirement has to be documented in a manner that satisfies the terms requirement has to be documented in a manner that satisfies the terms
of Expert Review, per [RFC8126]. The Designated Expert needs to of Expert Review, per [RFC8126]. The Designated Expert needs to
confirm that provided documentation adequately describes PSD policy confirm that provided documentation adequately describes PSD policy
to require domain owners to use DMARC or that all domain owners are to require Domain Owners to use DMARC or that all Domain Owners are
part of a single organization with the PSO. part of a single organization with the PSO.
The initial set of entries in this registry is as follows: The authoritative registry can be found here: <https://psddmarc.org>
+-------------+---------------+
| PSD | Status |
+-------------+---------------+
| .bank | current |
+-------------+---------------+
| .insurance | current |
+-------------+---------------+
| .gov.uk | current |
+-------------+---------------+
| .mil | current |
+-------------+---------------+
B.3. DMARC PSD PSL Extension B.3. DMARC PSD PSL Extension
[psddmarc.org] provides a file formatted like the Public Suffix List [PSD-DMARC] provides a file formatted like the Public Suffix List
(PSL) in order to facilitate identification of PSD DMARC (PSL) in order to facilitate identification of PSD DMARC
participants. Contents are functionally identical to the IANA like participants. Contents are functionally identical to the IANA-like
registry, but presented in a different format. registry but presented in a different format.
When using this approach, the input domain of the extension lookup is When using this approach, the input domain of the extension lookup is
supposed to be the output domain of the regular PSL lookup, i.e., the supposed to be the output domain of the regular PSL lookup, i.e., the
organizational domain. This alternative data approach is potentially Organizational Domain. This alternative data approach is potentially
useful since DMARC implementations already need to be able to parse useful since DMARC implementations already need to be able to parse
the data format, so it should be easier to implement. the data format, so it should be easier to implement.
Appendix C. Implementations Appendix C. Implementations
There are two known implementations of PSD DMARC available for There are two known implementations of PSD DMARC available for
testing. testing.
C.1. Authheaders Module C.1. Authheaders Module
The authheaders Python module and command line tool is available for The authheaders Python module and command line tool is available for
download or installation from Pypi (Python Packaging Index). download or installation from Pypi (Python Packaging Index).
It supports both use of the DNS based query service and download of It supports both use of the DNS-based query service and download of
the CSV registry file from [psddmarc.org]. the CSV registry file from [PSD-DMARC].
C.2. Zdkimfilter Module C.2. Zdkimfilter Module
The zdkimfilter module is a separately available add-on to Courier- The zdkimfilter module is a separately available add-on to Courier-
MTA. MTA.
Mostly used for DKIM signing, it can be configured to also verify, Mostly used for DomainKeys Identified Mail (DKIM) signing, it can be
apply DMARC policies, and send aggregate reports. For PSD DMARC it configured to also verify, apply DMARC policies, and send Aggregate
uses the PSL extension list approach, which is available from Reports. For PSD DMARC, it uses the PSL extension list approach,
[psddmarc.org] which is available from [PSD-DMARC].
Acknowledgements Acknowledgements
Thanks to the following individuals for their contributions (both Thanks to the following individuals for their contributions (both
public and private) to improving this document. Special shout out to public and private) to improving this document: Kurt Andersen, Seth
Dave Crocker for naming the beast. Blank, Dave Crocker, Heather Diaz, Tim Draegen, Zeke Hendrickson,
Andrew Kennedy, John Levine, Dr. Ian Levy, Craig Schwartz, Alessandro
Vesely, and Tim Wicinski.
Kurt Andersen, Seth Blank, Dave Crocker, Heather Diaz, Tim Draegen, A special mention to Dave Crocker for coming up with the name.
Zeke Hendrickson, Andrew Kennedy, John Levine, Dr Ian Levy, Craig
Schwartz, Alessandro Vesely, and Tim Wicinski
Authors' Addresses Authors' Addresses
Scott Kitterman Scott Kitterman
fTLD Registry Services fTLD Registry Services
600 13th Street, NW, Suite 400 Suite 400
Washington, DC 20005 600 13th Street, NW
Washington, DC 20005
United States of America United States of America
Phone: +1 301 325-5475 Phone: +1 301 325-5475
Email: scott@kitterman.com Email: scott@kitterman.com
Tim Wicinski (editor) Tim Wicinski (editor)
Elkins, WV 26241 Elkins, WV 26241
USA United States of America
Email: tjw.ietf@gmail.com Email: tjw.ietf@gmail.com
 End of changes. 100 change blocks. 
282 lines changed or deleted 283 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/