Diff: draft-dmarc-base-00-02.txt - draft-kucherawy-dmarc-base-00.txt (original) (raw)

< draft-dmarc-base-00-02.txt

draft-kucherawy-dmarc-base-00.txt >

DMARC.org M. Kucherawy, Ed.

Network Working Group M. Kucherawy, Ed.

Cloudmark

Internet-Draft March 31, 2013

March 30, 2012

Intended status: Standards Track

Expires: October 2, 2013

Domain-based Message Authentication, Reporting and Conformance (DMARC)

Domain-based Message Authentication, Reporting and Conformance (DMARC)

draft-kucherawy-dmarc-base-00

Abstract

Abstract

The email ecosystem currently lacks a cohesive mechanism through

The email ecosystem currently lacks a cohesive mechanism through

which email senders and receivers can make use of multiple

which email senders and receivers can make use of multiple

authentication protocols in an attempt to establish reliable domain

authentication protocols in an attempt to establish reliable domain

identifiers. This lack of cohesion prevents receivers from providing

identifiers. This lack of cohesion prevents receivers from providing

domain-specific feedback to senders regarding the accuracy of

domain-specific feedback to senders regarding the accuracy of

authentication deployments. Inaccurate authentication deployments

authentication deployments. Inaccurate authentication deployments

preclude receivers from safely taking deterministic action against

preclude receivers from safely taking deterministic action against

skipping to change at page 2, line 5

skipping to change at page 1, line 37

policies and preferences for message validation, disposition, and

policies and preferences for message validation, disposition, and

reporting with predictable and accurate results.

reporting with predictable and accurate results.

The enclosed proposal is not intended to introduce mechanisms that

The enclosed proposal is not intended to introduce mechanisms that

provide elevated delivery privilege of authenticated email. The

provide elevated delivery privilege of authenticated email. The

proposal presents a mechanism for policy distribution that enables a

proposal presents a mechanism for policy distribution that enables a

continuum of increasingly strict handling of messages that fail

continuum of increasingly strict handling of messages that fail

multiple authentication checks, from no action, through silent

multiple authentication checks, from no action, through silent

reporting, up to message rejection.

reporting, up to message rejection.

Status of this Memo

This Internet-Draft is submitted in full conformance with the

provisions of BCP 78 and BCP 79.

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 http://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months

and may be updated, replaced, or obsoleted by other documents at any

time. It is inappropriate to use Internet-Drafts as reference

material or to cite them other than as "work in progress."

This Internet-Draft will expire on October 2, 2013.

Copyright Notice

Copyright (c) 2013 IETF Trust and the persons identified as the

document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal

Provisions Relating to IETF Documents

(http://trustee.ietf.org/license-info) 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. Code Components extracted from this document must

include Simplified BSD License text as described in Section 4.e of

the Trust Legal Provisions and are provided without warranty as

described in the Simplified BSD License.

Table of Contents

Table of Contents

1. License . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1. License . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.1. Scalability . . . . . . . . . . . . . . . . . . . . . . . 7

2.1. Scalability . . . . . . . . . . . . . . . . . . . . . . . 8

2.2. Anti-Phishing . . . . . . . . . . . . . . . . . . . . . . 7

2.2. Anti-Phishing . . . . . . . . . . . . . . . . . . . . . . 8

2.3. Towards An Authenticated Future . . . . . . . . . . . . . 7

2.3. Towards An Authenticated Future . . . . . . . . . . . . . 8

2.4. Experiment Team . . . . . . . . . . . . . . . . . . . . . 8

2.4. Experiment Team . . . . . . . . . . . . . . . . . . . . . 9

3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 8

3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1. High-Level Requirements . . . . . . . . . . . . . . . . . 8

3.1. High-Level Requirements . . . . . . . . . . . . . . . . . 9

3.2. Security Dependencies . . . . . . . . . . . . . . . . . . 9

3.2. Security Dependencies . . . . . . . . . . . . . . . . . . 10

3.3. DMARC Discovery Requirements . . . . . . . . . . . . . . 9

3.3. DMARC Discovery Requirements . . . . . . . . . . . . . . 10

3.4. Detailed Requirements . . . . . . . . . . . . . . . . . . 10

3.4. Detailed Requirements . . . . . . . . . . . . . . . . . . 11

3.5. Out Of Scope . . . . . . . . . . . . . . . . . . . . . . 12

3.5. Out Of Scope . . . . . . . . . . . . . . . . . . . . . . 13

4. Terminology and Definitions . . . . . . . . . . . . . . . . . 13

4. Terminology and Definitions . . . . . . . . . . . . . . . . . 14

4.1. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1. Authentication Mechanisms . . . . . . . . . . . . . . . . 16

4.2. Identifier Alignment . . . . . . . . . . . . . . . . . . 15

4.2. Summary . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.2.1. DKIM-authenticated Identifiers . . . . . . . . . . . 16

4.3. Identifier Alignment . . . . . . . . . . . . . . . . . . 16

4.2.2. SPF-authenticated Identifiers . . . . . . . . . . . . 16

4.3.1. DKIM-authenticated Identifiers . . . . . . . . . . . 17

4.2.3. Alignment and Extension Technologies . . . . . . . . 17

4.3.2. SPF-authenticated Identifiers . . . . . . . . . . . . 18

5. Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.3.3. Alignment and Extension Technologies . . . . . . . . 18

6. DMARC Policy Record . . . . . . . . . . . . . . . . . . . . . 18

5. Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

6.1. DMARC URIs . . . . . . . . . . . . . . . . . . . . . . . 18

6. DMARC Policy Record . . . . . . . . . . . . . . . . . . . . . 19

6.2. General Record Format . . . . . . . . . . . . . . . . . . 19

6.1. DMARC URIs . . . . . . . . . . . . . . . . . . . . . . . 19

6.3. Formal Definition . . . . . . . . . . . . . . . . . . . . 21

6.2. General Record Format . . . . . . . . . . . . . . . . . . 20

7. Policy Enforcement Considerations . . . . . . . . . . . . . . 23

6.3. Formal Definition . . . . . . . . . . . . . . . . . . . . 23

8. DMARC Feedback . . . . . . . . . . . . . . . . . . . . . . . . 23

7. Policy Enforcement Considerations . . . . . . . . . . . . . . 25

8.1. Feedback Considerations . . . . . . . . . . . . . . . . . 23

7.1. Policy Fallback Mechanism . . . . . . . . . . . . . . . . 26

8.2. Verifying External Destinations . . . . . . . . . . . . . 24

8. DMARC Feedback . . . . . . . . . . . . . . . . . . . . . . . . 26

8.3. Aggregate Reports . . . . . . . . . . . . . . . . . . . . 25

8.1. Feedback Considerations . . . . . . . . . . . . . . . . . 26

8.4. Failure Reports . . . . . . . . . . . . . . . . . . . . . 26

8.2. Verifying External Destinations . . . . . . . . . . . . . 26

9. Policy Discovery . . . . . . . . . . . . . . . . . . . . . . . 26

8.3. Aggregate Reports . . . . . . . . . . . . . . . . . . . . 28

10. Domain Owner Actions . . . . . . . . . . . . . . . . . . . . . 27

8.4. Failure Reports . . . . . . . . . . . . . . . . . . . . . 30

11. Mail Receiver Actions . . . . . . . . . . . . . . . . . . . . 29

8.4.1. Reporting Format Update . . . . . . . . . . . . . . . 30

11.1. Extract Author Domain . . . . . . . . . . . . . . . . . . 29

8.5. Failure Reports . . . . . . . . . . . . . . . . . . . . . 31

11.2. Determine Handling Policy . . . . . . . . . . . . . . . . 29

9. Policy Discovery . . . . . . . . . . . . . . . . . . . . . . . 31

11.3. Message Sampling . . . . . . . . . . . . . . . . . . . . 30

10. Domain Owner Actions . . . . . . . . . . . . . . . . . . . . . 33

11.4. Store Results of DMARC Processing . . . . . . . . . . . . 30

11. Mail Receiver Actions . . . . . . . . . . . . . . . . . . . . 34

12. Feedback Mechanism . . . . . . . . . . . . . . . . . . . . . . 31

11.1. Extract Author Domain . . . . . . . . . . . . . . . . . . 34

12.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 31

11.2. Determine Handling Policy . . . . . . . . . . . . . . . . 34

12.2. Transport . . . . . . . . . . . . . . . . . . . . . . . . 31

11.3. Message Sampling . . . . . . . . . . . . . . . . . . . . 35

12.2.1. Email . . . . . . . . . . . . . . . . . . . . . . . . 32

11.4. Store Results of DMARC Processing . . . . . . . . . . . . 36

12.2.2. HTTP . . . . . . . . . . . . . . . . . . . . . . . . 33

12. Feedback Mechanism . . . . . . . . . . . . . . . . . . . . . . 36

12.2.3. Other Methods . . . . . . . . . . . . . . . . . . . . 33

12.1. Discovery . . . . . . . . . . . . . . . . . . . . . . . . 37

12.2.4. Error Reports . . . . . . . . . . . . . . . . . . . . 33

12.2. Transport . . . . . . . . . . . . . . . . . . . . . . . . 37

13. Minimum Implementations . . . . . . . . . . . . . . . . . . . 34

12.2.1. Email . . . . . . . . . . . . . . . . . . . . . . . . 37

14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35

12.2.2. HTTP . . . . . . . . . . . . . . . . . . . . . . . . 39

14.1. Authentication-Results Method Registry Update . . . . . . 35

12.2.3. Other Methods . . . . . . . . . . . . . . . . . . . . 39

14.2. Authentication-Results Result Registry Update . . . . . . 35

12.2.4. Error Reports . . . . . . . . . . . . . . . . . . . . 39

14.3. DMARC Tag Registry . . . . . . . . . . . . . . . . . . . 36

13. Minimum Implementations . . . . . . . . . . . . . . . . . . . 40

14.4. DMARC Report Format Registry . . . . . . . . . . . . . . 37

14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 41

15. Security Considerations . . . . . . . . . . . . . . . . . . . 38

14.1. Authentication-Results Method Registry Update . . . . . . 41

15.1. Use of RFC5322.From . . . . . . . . . . . . . . . . . . . 38

14.2. Authentication-Results Result Registry Update . . . . . . 41

15.2. Display Name Attacks . . . . . . . . . . . . . . . . . . 39

14.3. DMARC Tag Registry . . . . . . . . . . . . . . . . . . . 42

15.3. Attacks on Reporting URIs . . . . . . . . . . . . . . . . 39

14.4. DMARC Report Format Registry . . . . . . . . . . . . . . 43

15.4. Issues Specific to SPF . . . . . . . . . . . . . . . . . 40

15. Security Considerations . . . . . . . . . . . . . . . . . . . 44

15.5. DNS Load . . . . . . . . . . . . . . . . . . . . . . . . 40

15.1. Use of RFC5322.From . . . . . . . . . . . . . . . . . . . 44

15.6. External Reporting Addresses . . . . . . . . . . . . . . 41

15.2. Display Name Attacks . . . . . . . . . . . . . . . . . . 45

15.7. Feedback Loops . . . . . . . . . . . . . . . . . . . . . 41

15.3. Attacks on Reporting URIs . . . . . . . . . . . . . . . . 45

15.8. Rejecting Messages . . . . . . . . . . . . . . . . . . . 42

15.4. Issues Specific to SPF . . . . . . . . . . . . . . . . . 46

15.9. Capacity Planning . . . . . . . . . . . . . . . . . . . . 42

15.5. DNS Load . . . . . . . . . . . . . . . . . . . . . . . . 46

15.10. Privacy Considerations . . . . . . . . . . . . . . . . . 43

15.6. External Reporting Addresses . . . . . . . . . . . . . . 47

15.10.1. Data Exposure Considerations . . . . . . . . . . . . 43

15.7. Feedback Loops . . . . . . . . . . . . . . . . . . . . . 47

15.10.2. Report Recipients . . . . . . . . . . . . . . . . . . 44

15.8. Rejecting Messages . . . . . . . . . . . . . . . . . . . 48

15.10.3. Report Generators . . . . . . . . . . . . . . . . . . 44

15.9. Capacity Planning . . . . . . . . . . . . . . . . . . . . 49

15.10.4. Secure Protocols . . . . . . . . . . . . . . . . . . 44

15.10. Privacy Considerations . . . . . . . . . . . . . . . . . 49

15.11. Identifier Alignment Considerations . . . . . . . . . . . 44

15.10.1. Data Exposure Considerations . . . . . . . . . . . . 49

16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 45

15.10.2. Report Recipients . . . . . . . . . . . . . . . . . . 50

16.1. Normative References . . . . . . . . . . . . . . . . . . 45

15.10.3. Report Generators . . . . . . . . . . . . . . . . . . 50

16.2. Informative References . . . . . . . . . . . . . . . . . 46

15.10.4. Secure Protocols . . . . . . . . . . . . . . . . . . 50

Appendix A. Technology Considerations . . . . . . . . . . . . . . 47

15.11. Identifier Alignment Considerations . . . . . . . . . . . 51

A.1. S/MIME . . . . . . . . . . . . . . . . . . . . . . . . . 47

15.12. DNS Security . . . . . . . . . . . . . . . . . . . . . . 51

A.2. Method Exclusion . . . . . . . . . . . . . . . . . . . . 48

16. References . . . . . . . . . . . . . . . . . . . . . . . . . . 51

A.3. Sender Header Field . . . . . . . . . . . . . . . . . . . 48

16.1. Normative References . . . . . . . . . . . . . . . . . . 51

A.4. Domain Existence Test . . . . . . . . . . . . . . . . . . 49

16.2. Informative References . . . . . . . . . . . . . . . . . 53

A.5. Issues With ADSP In Operation . . . . . . . . . . . . . . 49

Appendix A. Technology Considerations . . . . . . . . . . . . . . 54

A.6. Organizational Domain Discovery Issues . . . . . . . . . 50

A.1. S/MIME . . . . . . . . . . . . . . . . . . . . . . . . . 54

A.6.1. Public Suffix Lists . . . . . . . . . . . . . . . . . 51

A.2. Method Exclusion . . . . . . . . . . . . . . . . . . . . 55

Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 51

A.3. Sender Header Field . . . . . . . . . . . . . . . . . . . 55

B.1. Identifier Alignment examples . . . . . . . . . . . . . . 51

A.4. Domain Existence Test . . . . . . . . . . . . . . . . . . 56

B.1.1. SPF . . . . . . . . . . . . . . . . . . . . . . . . . 51

A.5. Issues With ADSP In Operation . . . . . . . . . . . . . . 56

B.1.2. DKIM . . . . . . . . . . . . . . . . . . . . . . . . 52

A.6. Organizational Domain Discovery Issues . . . . . . . . . 57

B.2. Domain Owner example . . . . . . . . . . . . . . . . . . 53

A.6.1. Public Suffix Lists . . . . . . . . . . . . . . . . . 58

B.2.1. Entire Domain, Monitoring Only . . . . . . . . . . . 53

Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 58

B.1. Identifier Alignment examples . . . . . . . . . . . . . . 58

B.1.1. SPF . . . . . . . . . . . . . . . . . . . . . . . . . 58

B.1.2. DKIM . . . . . . . . . . . . . . . . . . . . . . . . 59

B.2. Domain Owner example . . . . . . . . . . . . . . . . . . 60

B.2.1. Entire Domain, Monitoring Only . . . . . . . . . . . 61

B.2.2. Entire Domain, Monitoring Only, Per-Message

B.2.2. Entire Domain, Monitoring Only, Per-Message

Reports . . . . . . . . . . . . . . . . . . . . . . . 54

Reports . . . . . . . . . . . . . . . . . . . . . . . 62

B.2.3. Per-Message Forensic Reports Directed to Third

B.2.3. Per-Message Failure Reports Directed to Third

Party . . . . . . . . . . . . . . . . . . . . . . . . 55

Party . . . . . . . . . . . . . . . . . . . . . . . . 62

B.2.4. Sub-Domain, Sampling, and Multiple Aggregate

B.2.4. Sub-Domain, Sampling, and Multiple Aggregate

Report URIs . . . . . . . . . . . . . . . . . . . . . 56

Report URIs . . . . . . . . . . . . . . . . . . . . . 64

B.2.5. Third Party Sender and Identifier Alignment . . . . . 58

B.2.5. Third Party Sender and Identifier Alignment . . . . . 65

B.2.6. Sub-Domain Policy, Reporting Interval . . . . . . . . 59

B.2.6. Sub-Domain Policy, Reporting Interval . . . . . . . . 66

B.3. Mail Receiver Example . . . . . . . . . . . . . . . . . . 60

B.3. Mail Receiver Example . . . . . . . . . . . . . . . . . . 67

B.3.1. SMTP-time Processing . . . . . . . . . . . . . . . . 60

B.3.1. SMTP-time Processing . . . . . . . . . . . . . . . . 67

B.3.2. Real-time Feedback Processing . . . . . . . . . . . . 62

B.3.2. Real-time Feedback Processing . . . . . . . . . . . . 69

B.4. Utilization of Aggregate Feedback example . . . . . . . . 62

B.4. Utilization of Aggregate Feedback example . . . . . . . . 69

B.5. mailto Transport example . . . . . . . . . . . . . . . . 62

B.5. mailto Transport example . . . . . . . . . . . . . . . . 70

B.6. https Transport example . . . . . . . . . . . . . . . . . 63

B.6. https Transport example . . . . . . . . . . . . . . . . . 71

Appendix C. DMARC XML Schema . . . . . . . . . . . . . . . . . . 64

Appendix C. DMARC XML Schema . . . . . . . . . . . . . . . . . . 71

Appendix D. Public Discussion . . . . . . . . . . . . . . . . . . 69

Appendix D. Public Discussion . . . . . . . . . . . . . . . . . . 77

Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 70

Appendix E. Acknowledgements . . . . . . . . . . . . . . . . . . 77

Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 78

1. License

1. License

As of the date shown at the top right of this page, the Contributors

As of the date shown at the top right of this page, the Contributors

have made this Specification available under the Open Web Foundation

have made this Specification available under the Open Web Foundation

Contributor License Agreement Version 1.0, which is available at:

Contributor License Agreement Version 1.0, which is available at:

http://www.dmarc.org/cla.html

http://www.dmarc.org/cla.html

You can review the signed copies of the Open Web Foundation

You can review the signed copies of the Open Web Foundation

Contributor License Agreement Version 1.0 for this Specification at:

Contributor License Agreement Version 1.0 for this Specification at:

skipping to change at page 5, line 39

skipping to change at page 6, line 39

ANY KIND WITH RESPECT TO THIS SPECIFICATION OR ITS GOVERNING

ANY KIND WITH RESPECT TO THIS SPECIFICATION OR ITS GOVERNING

AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING

AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING

NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS

NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS

BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

2. Introduction

2. Introduction

For years, various receivers have tried to protect senders who are

For years, various receivers have tried to protect senders who are

known to authenticate their outbound email from phishing by using

known to authenticate their outbound email from phishing by using

[DKIM] and/or [SPF] results to detect and block unauthorized email.

[DKIM] and/or [SPF] results to detect and block unauthorized email.

At the same time, senders have leveraged SPF-authorized and DKIM-

(A detailed discussion of the threats these systems attempt to

signed messages to achieve domain-level email authentication.

address can be found in [DKIM-THREATS].) At the same time, senders

However, a broadly accepted mechanism to assert domain-specific

have leveraged SPF-authorized and DKIM-signed messages to achieve

message-disposition policies, or to request reporting of same, has

domain-level email authentication. However, a broadly accepted

been lacking.

mechanism to assert domain-specific message-disposition policies, or

to request reporting of same, has been lacking.

The fundamental idea behind these approaches is that if a sender

The fundamental idea behind these approaches is that if a sender

authenticates all legitimate outbound mail using the authentication

authenticates all legitimate outbound mail using the authentication

protocols SPF and DKIM, then receivers can quarantine or reject

protocols SPF and DKIM, then receivers can quarantine or reject

unauthenticated mail purporting to be from that sender. Over time,

unauthenticated mail purporting to be from that sender. Over time,

one-on-one relationships were established between select senders and

one-on-one relationships were established between select senders and

receivers with privately communicated means to assert policy and

receivers with privately communicated means to assert policy and

receive message traffic and authentication disposition reporting.

receive message traffic and authentication disposition reporting.

Although these ad hoc practices have been generally successful, they

Although these ad hoc practices have been generally successful, they

require significant manual coordination between parties.

require significant manual coordination between parties.

This memo defines Domain-based Message Authentication, Reporting and

This memo defines Domain-based Message Authentication, Reporting and

Compliance (DMARC), a mechanism by which email operators leverage

Compliance (DMARC), a mechanism by which email operators leverage

existing authentication and policy advertisement technologies to

existing authentication and policy advertisement technologies to

enable both message-stream feedback and enforcement of policies

enable both message-stream feedback and enforcement of policies

against unauthenticated email.

against unauthenticated email.

DMARC encourages senders and receivers to collaborate by monitoring

DMARC encourages senders and receivers to collaborate by monitoring

skipping to change at page 10, line 24

skipping to change at page 11, line 26

3.4. Detailed Requirements

3.4. Detailed Requirements

DMARC's specification requirements, in detail:

DMARC's specification requirements, in detail:

1. The RFC5322.From domain is the identifier used for all message

1. The RFC5322.From domain is the identifier used for all message

validation operations, as it is the single identifier in the

validation operations, as it is the single identifier in the

message likely to be visible to the user.

message likely to be visible to the user.

2. Senders can specify a "strict" or "relaxed" mode in terms of

2. Senders can specify a "strict" or "relaxed" mode in terms of

enforcing identifier checks (see Section 4.2). In "strict"

enforcing identifier checks (see Section 4.3). In "strict"

mode, all identifiers from authentication systems upon which

mode, all identifiers from authentication systems upon which

DMARC is predicated must match the RFC5322.From domain. In

DMARC is predicated must match the RFC5322.From domain. In

"relaxed" mode, the organizational domains (see Section 4) must

"relaxed" mode, the organizational domains (see Section 4) must

match. The "relaxed" mode shall be the default.

match. The "relaxed" mode shall be the default.

3. A sender's policy must be discoverable via DNS queries.

3. A sender's policy must be discoverable via DNS queries.

4. It must be possible to specify reject or quarantine policies

4. It must be possible to specify reject or quarantine policies

when none of the underlying authentication systems succeed.

when none of the underlying authentication systems succeed.

skipping to change at page 10, line 50

skipping to change at page 12, line 5

the organizational domain itself.

the organizational domain itself.

7. Message disposition requests via DMARC override those requested

7. Message disposition requests via DMARC override those requested

by any other public mechanism.

by any other public mechanism.

8. Senders should be able to specify a percentage of their messages

8. Senders should be able to specify a percentage of their messages

to which their policies should be applied, with the rest

to which their policies should be applied, with the rest

unaffected, in order to experiment and to understand and

unaffected, in order to experiment and to understand and

minimize deployment risk.

minimize deployment risk.

9. Receivers should endeavour to reject or quarantine email if the

9. Reporting configuration in DMARC should override any such

RFC5322.From purports to be from a domain that appears to be

either non-existent or incapable of receiving mail.

  1. Reporting configuration in DMARC should override any such

options specified by DKIM or SPF or extensions to them.

options specified by DKIM or SPF or extensions to them.

  1. The sender must be able to to specify independent reporting

  2. The sender must be able to to specify independent reporting

addresses for failed message reporting and aggregate data feeds.

addresses for failed message reporting and aggregate data feeds.

  1. The aggregate report must contain enough information for the

  2. The aggregate report must contain enough information for the

report consumer to re-calculate DMARC disposition based on the

report consumer to re-calculate DMARC disposition based on the

published policy, message dispositon, and SPF, DKIM, and

published policy, message dispositon, and SPF, DKIM, and

identifier alignment results.

identifier alignment results.

  1. The aggregate report must still contain data for each sender

  2. The aggregate report must still contain data for each sender

subdomain separately from mail from the sender's organizational

subdomain separately from mail from the sender's organizational

domain, even if no subdomain policy is applied. The report must

domain, even if no subdomain policy is applied. The report must

indicate any policy applied to subdomains.

indicate any policy applied to subdomains.

  1. It must be possible to specify a minimum reporting interval.

  2. It must be possible to specify a minimum reporting interval.

Reporting sites should make a best effort to accommodate that

Reporting sites should make a best effort to accommodate that

request.

request.

  1. The sender can specify a time-to-live for policy records.

  2. The sender can specify a time-to-live for policy records.

  3. The sender can indicate which domains under its control never

  4. The sender can indicate which domains under its control never

send email, either by omitting them from the DNS entirely or by

send email, either by omitting them from the DNS entirely or by

declaring specific use of DKIM and SPF that no email will ever

declaring specific use of DKIM and SPF that no email will ever

fulfill.

fulfill.

  1. The sending and receiving domains should be included in the

  2. The sending and receiving domains should be included in the

aggregate report.

aggregate report.

  1. The policy request and the one applied (if different) should be

  2. The policy request and the one applied (if different) should be

included in the aggregate report.

included in the aggregate report.

  1. The number of successful authentications should be included in

  2. The number of successful authentications should be included in

the aggregate report.

the aggregate report.

  1. The report should be generated based on all messages even if

  2. The report should be generated based on all messages even if

filtering agents such as anti-virus or anti-spam engines

filtering agents such as anti-virus or anti-spam engines

ultimately block delivery.

ultimately block delivery.

  1. For real-time reporting of failed messages, including a [URI] to

  2. For real-time reporting of failed messages, including a [URI] to

identify phishing sites and diagnostics on DKIM and SPF failures

identify phishing sites and diagnostics on DKIM and SPF failures

will be recommended.

will be recommended.

  1. Static conformance requirements shall be documented to enable

  2. Static conformance requirements shall be documented to enable

testing programs to help ensure consitency of results. (This

testing programs to help ensure consistency of results. (This

will be done in a separate Best Current Practices document.)

will be done in a separate Best Current Practices document.)

  1. Aggregate reports should communicate DMARC message disposition

  2. Aggregate reports should communicate DMARC message disposition

regardless of any subsequent action that affects message

regardless of any subsequent action that affects message

disposition or delivery.

disposition or delivery.

  1. The mechanism overall should be flexible enough to swap in or

  2. The mechanism overall should be flexible enough to swap in or

out any authentication technology.

out any authentication technology.

Tags throughout the specification part of this document indicate

Tags throughout the specification part of this document indicate

conformance to the above requirements. For example "{R1}" indicates

conformance to the above requirements. For example "{R1}" indicates

a component of the protocol that addresses requirement #1 in the list

a component of the protocol that addresses requirement #1 in the list

above.

above.

3.5. Out Of Scope

3.5. Out Of Scope

Items specifically not in scope for this work include:

Items specifically not in scope for this work include:

skipping to change at page 13, line 37

skipping to change at page 14, line 37

to some third party. This memo does not address the distinctions

to some third party. This memo does not address the distinctions

among such roles; the reader is encouraged to become familiar with

among such roles; the reader is encouraged to become familiar with

that material before continuing.

that material before continuing.

The following terms are also used:

The following terms are also used:

Authenticated Identifiers: Authentication technologies allow

Authenticated Identifiers: Authentication technologies allow

evaluation agents to associate email with domain-level

evaluation agents to associate email with domain-level

identifiers. Domain-level identifiers that are established using

identifiers. Domain-level identifiers that are established using

authentication technologies are referred to as "Authenticated

authentication technologies are referred to as "Authenticated

Identifiers". The following Authenticated Identifiers are

Identifiers". See Section 4.1 for details about the supported

considered in this document:

mechanisms.

* [DKIM] provides a domain-level identifier in the content of the

"d=" tag of a validated signature.

* [SPF] can authenticate the domain found in an [SMTP] MAIL

command.

Cousin Domain: A DNS domain that, when rendered by a Mail User Agent

Cousin Domain: A DNS domain that, when rendered by a Mail User Agent

(MUA), looks similar to, or can lead users to believe the domain

(MUA), looks similar to, or can lead users to believe the domain

is associated with, another name. For instance, "vendor5.example"

is associated with, another name. For instance, "vendor5.example"

would be a Cousin Domain of "vendors.example". This is a common

would be a Cousin Domain of "vendors.example". This is a common

tool in a homograph attack.

tool in a homograph attack.

Domain Owner: The entity or organization that "owns" a DNS domain.

Domain Owner: The entity or organization that "owns" a DNS domain.

The term "owns" here indicates that the entity or organization

The term "owns" here indicates that the entity or organization

being referenced holds the registration of that DNS domain.

being referenced holds the registration of that DNS domain.

skipping to change at page 15, line 9

skipping to change at page 16, line 8

label from the subject domain. This new name is the

label from the subject domain. This new name is the

Organizational Domain.

Organizational Domain.

Thus, since "com" is an IANA-registered TLD, a subject domain of

Thus, since "com" is an IANA-registered TLD, a subject domain of

"a.b.c.d.example.com" would have an Organizational Domain of

"a.b.c.d.example.com" would have an Organizational Domain of

"example.com".

"example.com".

The process of determining a suffix is currently a heuristic one.

The process of determining a suffix is currently a heuristic one.

No list is guaranteed to be accurate or current.

No list is guaranteed to be accurate or current.

4.1. Summary

4.1. Authentication Mechanisms

The following Authenticated Identifiers are supported in the current

version of DMARC:

o [DKIM], which provides a domain-level identifier in the content of

the "d=" tag of a validated signature.

o [SPF], which can authenticate the domain found in an [SMTP] MAIL

command.

4.2. Summary

DMARC's filtering component is based on whether or not SPF or DKIM

DMARC's filtering component is based on whether or not SPF or DKIM

can provide an authenticated -- and relevant -- identifier for any

can provide an authenticated -- and relevant -- identifier for any

given message. Messages that purport to be from a Domain Owner's

given message. Messages that purport to be from a Domain Owner's

domain and arrive from servers that are not authorized by SPF and do

domain and arrive from servers that are not authorized by SPF and do

not contain an appropriate DKIM signature can be affected by DMARC

not contain an appropriate DKIM signature can be affected by DMARC

policies.

policies.

DMARC's feedback component involves the collection of information

DMARC's feedback component involves the collection of information

pertaining to received messages, in the aggregate, for periodic

pertaining to received messages, in the aggregate, for periodic

reporting back to the Domain Owner. The parameters and format for

reporting back to the Domain Owner. The parameters and format for

such reports are discussed in later sections of this document.

such reports are discussed in later sections of this document.

A DMARC-enabled Mail Receiver might also generate per-message reports

A DMARC-enabled Mail Receiver might also generate per-message reports

that contain information related to individual messages which fail

that contain information related to individual messages which fail

SPF and/or DKIM. Per-message reports are useful for forensic use in

SPF and/or DKIM. Per-message failure reports are useful for forensic

debugging deployments (if messages can be determined to be legitimate

use in debugging deployments (if messages can be determined to be

albeit failing authentication) or in analyzing attacks. The

legitimate albeit failing authentication) or in analyzing attacks.

capability for such services is enabled by DMARC but defined in other

The capability for such services is enabled by DMARC but defined in

referenced material.

other referenced material.

It is important to note that the authentication mechanisms employed

It is important to note that the authentication mechanisms employed

by DMARC authenticate only a DNS domain, and do not authenticate the

by DMARC authenticate only a DNS domain, and do not authenticate the

local-part of any email address identifier found in a message.

local-part of any email address identifier found in a message.

4.2. Identifier Alignment

4.3. Identifier Alignment

Email authentication technologies authenticate various (and

Email authentication technologies authenticate various (and

disparate) aspects of an individual message. For example, [DKIM]

disparate) aspects of an individual message. For example, [DKIM]

authenticates the domain that affixed a signature to the message,

authenticates the domain that affixed a signature to the message,

while [SPF] authenticates the domain that appears in the

while [SPF] authenticates either the domain that appears in the

RFC5321.MailFrom portion of [SMTP]. The DMARC mechanism introduces

RFC5321.MailFrom portion of [SMTP] or the RFC5321.EHLO/HELO domain if

the concept of Identifier Alignment to address the possible

the RFC5321.MailFrom is null (in the case of Delivery Status

discrepancy of Authenticated Identifiers supplied by underlying

Notifications). The DMARC mechanism introduces the concept of

authentication technologies.

Identifier Alignment to address the possible discrepancy of

Authenticated Identifiers supplied by underlying authentication

technologies.

DMARC uses the RFC5322.From domain to tie together Authenticated

DMARC uses the RFC5322.From domain to tie together Authenticated

Identifiers {R1}. The selection of the RFC5322.From domain as the

Identifiers {R1}. The selection of the RFC5322.From domain as the

central identity of the DMARC mechanism is due to the ubiquity of

central identity of the DMARC mechanism is due to the ubiquity of

this identity and the behavior of most MUAs to represent the

this identity and the behavior of most MUAs to represent the

RFC5322.From field as the originator of the message and to render

RFC5322.From field as the originator of the message and to render

some or all of this header's content to end users.

some or all of this header's content to end users.

To be considered "in alignment" for the purposes of the DMARC

To be considered "in alignment" for the purposes of the DMARC

mechanism, implementors MUST observe the considerations described in

mechanism, implementors MUST observe the considerations described in

the following sections. Domain names in this context are to be

the following sections. Domain names in this context are to be

compared in a case-insensitive manner, per [DNS-CASE].

compared in a case-insensitive manner, per [DNS-CASE].

4.2.1. DKIM-authenticated Identifiers

It is important to note that identity alignment cannot occur with a

message that is not valid per [MAIL], particularly one with a

malformed or absent RFC5322.From field. Handling of such cases is

left to the discretion of the Mail Receiver.

4.3.1. DKIM-authenticated Identifiers

DMARC provides the option of applying DKIM in a strict mode or a

DMARC provides the option of applying DKIM in a strict mode or a

relaxed mode {R2}.

relaxed mode {R2}.

In relaxed mode, the Organizational Domain of the [DKIM]-

In relaxed mode, the Organizational Domain of the [DKIM]-

authenticated signing domain (taken from the value of the "d=" tag in

authenticated signing domain (taken from the value of the "d=" tag in

the signature) and that of the RFC5322.From domain must be equal. In

the signature) and that of the RFC5322.From domain must be equal. In

strict mode, only an exact match is considered to produce identifier

strict mode, only an exact match is considered to produce identifier

alignment.

alignment.

skipping to change at page 16, line 39

skipping to change at page 18, line 7

suffix lists, and therefore cannot be an Organizational Domain.

suffix lists, and therefore cannot be an Organizational Domain.

Identifier alignment is required to prevent abuse by phishers that

Identifier alignment is required to prevent abuse by phishers that

send DKIM-signed email using an arbitrary "d=" domain (such as a

send DKIM-signed email using an arbitrary "d=" domain (such as a

Cousin Domain) to pass authentication checks.

Cousin Domain) to pass authentication checks.

Note that a single email can contain multiple DKIM signatures,

Note that a single email can contain multiple DKIM signatures,

raising the possibility of processing multiple signatures in an

raising the possibility of processing multiple signatures in an

attempt to establish an "in alignment" result.

attempt to establish an "in alignment" result.

4.2.2. SPF-authenticated Identifiers

4.3.2. SPF-authenticated Identifiers

DMARC provides the option of applying SPF in a strict mode or a

DMARC provides the option of applying SPF in a strict mode or a

relaxed mode {R2}.

relaxed mode {R2}.

In relaxed mode, the [SPF]-authenticated RFC5321.MailFrom (commonly

In relaxed mode, the [SPF]-authenticated domain and RFC5322.From

called the "envelope sender") domain and RFC5322.From domain must

domain must have the same Organizational Domain. In strict mode,

have the same Organizational Domain. In strict mode, only an exact

only an exact DNS domain match is considered to produce identifier

DNS domain match is considered to produce identifier alignment.

alignment.

For example, if a message passes an SPF check with an

For example, if a message passes an SPF check with an

RFC5321.MailFrom domain of "cbg.bounces.example.com", and the address

RFC5321.MailFrom domain of "cbg.bounces.example.com", and the address

portion of the RFC5322.From field contains "payments@example.com",

portion of the RFC5322.From field contains "payments@example.com",

the Authenticated RFC5321.MailFrom domain identifier and the

the Authenticated RFC5321.MailFrom domain identifier and the

RFC5322.From domain are considered to be "in alignment" in relaxed

RFC5322.From domain are considered to be "in alignment" in relaxed

mode, but not in strict mode.

mode, but not in strict mode.

4.2.3. Alignment and Extension Technologies

4.3.3. Alignment and Extension Technologies

If DMARC is extended to include the use of other authentication

If DMARC is extended to include the use of other authentication

mechanisms, the extensions will need to allow for domain identifier

mechanisms, the extensions will need to allow for domain identifier

extraction so that alignment against the RFC5322.From domain can be

extraction so that alignment with the RFC5322.From domain can be

verified.

verified.

5. Policy

5. Policy

DMARC policies are published by Domain Owners and applied by Mail

DMARC policies are published by Domain Owners and applied by Mail

Receivers.

Receivers.

A Domain Owner advertises DMARC participation by adding a DNS TXT

A Domain Owner advertises DMARC participation by adding a DNS TXT

record (described in Section 6) {R3, R15, R16} to one or more sending

record (described in Section 6) {R3, R15, R16} to one or more sending

domains under its direct or indirect control (e.g. operated by a

domains under its direct or indirect control (e.g. operated by a

skipping to change at page 18, line 16

skipping to change at page 19, line 29

Domain Owner DMARC preferences are stored as DNS TXT records in

Domain Owner DMARC preferences are stored as DNS TXT records in

subdomains named "_dmarc". For example, the Domain Owner of

subdomains named "_dmarc". For example, the Domain Owner of

"example.com" would post DMARC preferences in a TXT record at

"example.com" would post DMARC preferences in a TXT record at

"_dmarc.example.com". Similarly, a Mail Receiver wishing to query

"_dmarc.example.com". Similarly, a Mail Receiver wishing to query

for DMARC preferences regarding mail with an RFC5322.From domain of

for DMARC preferences regarding mail with an RFC5322.From domain of

"example.com" would issue a TXT query to the DNS for the subdomain of

"example.com" would issue a TXT query to the DNS for the subdomain of

"_dmarc.example.com". The DNS-located DMARC preference data will

"_dmarc.example.com". The DNS-located DMARC preference data will

hereafter be called the "DMARC record".

hereafter be called the "DMARC record".

DMARC records are stored in the DNS for three key engineering

DMARC records are stored in the DNS for two key engineering reasons:

reasons:

Wildcarding: DNS natively supports wildcarding, enabling child

domains to inherit parent domain policy easily.

Overrides: DMARC records published at child domains explicitly

Overrides: DMARC records published at child domains explicitly

override extant parent policy.

override extant parent policy.

Efficiency: DNS caching is a common practice, reducing operational

Efficiency: DNS caching is a common practice, reducing operational

overhead of a new DNS-based mechanism.

overhead of a new DNS-based mechanism.

Per [DNS], a TXT record can comprise several "character-string"

Per [DNS], a TXT record can comprise several "character-string"

objects. Where this is the case, the module performing DMARC

objects. Where this is the case, the module performing DMARC

evaluation MUST concatenate these strings by joining together the

evaluation MUST concatenate these strings by joining together the

objects in order and parsing the result as a single string.

objects in order and parsing the result as a single string.

6.1. DMARC URIs

6.1. DMARC URIs

[URI] defines a generic syntax for identifying a resource. The DMARC

[URI] defines a generic syntax for identifying a resource. The DMARC

mechanism uses this as the format by which a Domain Owner specifies

mechanism uses this as the format by which a Domain Owner specifies

the destination for either of the two report types that are

the destination for the two report types that are supported.

supported.

The place such URIs are specified (see Section 6.2) allows a list of

The place such URIs are specified (see Section 6.2) allows a list of

these to be provided, to be tried in order until one of them

these to be provided. A report is to be sent to each listed URI.

successfully receives the report. The list of URIs is separated by

Mail Receivers MAY impose a limit on the number of URIs that receive

commas (ASCII 0x2C).

reports, but MUST support at least two. The list of URIs is

separated by commas (ASCII 0x2C).

Each URI can have associated with it a maximum report size that may

Each URI can have associated with it a maximum report size that may

be sent to it. This is accomplished by appending an exclamation

be sent to it. This is accomplished by appending an exclamation

point (ASCII 0x21), followed by a maximum size indication, before a

point (ASCII 0x21), followed by a maximum size indication, before a

separating comma or terminating semi-colon.

separating comma or terminating semi-colon.

Thus, a DMARC URI is a URI within which any commas or exclamation

Thus, a DMARC URI is a URI within which any commas or exclamation

points are percent-encoded per [URI], followed by an OPTIONAL

points are percent-encoded per [URI], followed by an OPTIONAL

exclamation point and a maximum size specification, and, if there are

exclamation point and a maximum size specification, and, if there are

additional reporting URIs in the list, a comma and the next URI.

additional reporting URIs in the list, a comma and the next URI.

skipping to change at page 19, line 30

skipping to change at page 20, line 41

processed; unknown tags MUST be ignored. To avoid version

processed; unknown tags MUST be ignored. To avoid version

compatibility issues, tags added to the DMARC specification SHOULD

compatibility issues, tags added to the DMARC specification SHOULD

NOT change the semantics of existing records when processed by

NOT change the semantics of existing records when processed by

implementations conforming to prior specifications.

implementations conforming to prior specifications.

The following tags are introduced as the initial valid DMARC tags:

The following tags are introduced as the initial valid DMARC tags:

adkim: (plain-text; OPTIONAL, default is "r".) Indicates whether or

adkim: (plain-text; OPTIONAL, default is "r".) Indicates whether or

not strict DKIM identifier alignment is required by the Domain

not strict DKIM identifier alignment is required by the Domain

Owner. If and only if the value of the string is "s", strict mode

Owner. If and only if the value of the string is "s", strict mode

is in use. See Section 4.2.1 for details.

is in use. See Section 4.3.1 for details.

aspf: (plain-text; OPTIONAL, default is "r".) Indicates whether or

aspf: (plain-text; OPTIONAL, default is "r".) Indicates whether or

not strict SPF identifier alignment is required by the Domain

not strict SPF identifier alignment is required by the Domain

Owner. If and only if the value of the string is "s", strict mode

Owner. If and only if the value of the string is "s", strict mode

is in use. See Section 4.2.2 for details.

is in use. See Section 4.3.2 for details.

p: Requested Mail Receiver policy (plain-text; REQUIRED). Indicates

fo: Failure reporting options (plain-text; OPTIONAL, default "0"))

the policy to be enacted by the Receiver at the request of the

Provides requested options for generation of failure reports.

Domain Owner. Policy applies to the domain queried and to sub-

Report generators MAY choose to adhere to the requested options.

domains unless sub-domain policy is explicitly described using the

This tag's content MUST be ignored if a "ruf" tag (below) is not

"sp" tag. Possible values are as follows:

also specified. The value of this tag is a colon-separated list

of characters that indicate failure reporting options as follows:

0: Generate a DMARC failure report if all underlying

authentication mechanisms failed to produce an aligned "pass"

result.

1: Generate a DMARC failure report if any underlying

authentication mechanism failed to produce an aligned "pass"

result.

d: Generate a DKIM failure report if the message had a signature

that failed evaluation, regardless of its alignment. DKIM-

specific reporting is described in [AFRF-DKIM].

s: Generate an SPF failure report if the message failed SPF

evaluation, regardless of its alignment. SPF-specific

reporting is described in [AFRF-SPF].

p: Requested Mail Receiver policy (plain-text; REQUIRED for policy

records). Indicates the policy to be enacted by the Receiver at

the request of the Domain Owner. Policy applies to the domain

queried and to sub-domains unless sub-domain policy is explicitly

described using the "sp" tag. This tag is mandatory for policy

records only, but not for third-party reporting records (see

Section 8.2). Possible values are as follows:

none: {R5} The Domain Owner requests no specific action be taken

none: {R5} The Domain Owner requests no specific action be taken

regarding delivery of messages.

regarding delivery of messages.

quarantine: {R4} The Domain Owner wishes to have email that fails

quarantine: {R4} The Domain Owner wishes to have email that fails

the DMARC mechanism check to be treated by Mail Receivers as

the DMARC mechanism check to be treated by Mail Receivers as

suspicious. Depending on the capabilities of the Mail

suspicious. Depending on the capabilities of the Mail

Receiver, this can mean "place into spam folder", "scrutinize

Receiver, this can mean "place into spam folder", "scrutinize

with additional intensity", and/or "flag as suspicious".

with additional intensity", and/or "flag as suspicious".

reject: {R4} The Domain Owner wishes for Mail Receivers to reject

reject: {R4} The Domain Owner wishes for Mail Receivers to reject

email that fails the DMARC mechanism check. Rejection SHOULD

email that fails the DMARC mechanism check. Rejection SHOULD

occur during the SMTP transaction. See Section 15.8 for some

occur during the SMTP transaction. See Section 15.8 for some

discussion of SMTP rejection methods and their implications.

discussion of SMTP rejection methods and their implications.

pct: (plain-text integer between 0 and 100, inclusive; OPTIONAL;

pct: (plain-text integer between 0 and 100, inclusive; OPTIONAL;

default is 100). {R8} Percentage of messages from the DNS domain's

default is 100). {R8} Percentage of messages from the DNS domain's

mail stream to which the DMARC mechanism is to be applied.

mail stream to which the DMARC mechanism is to be applied.

However, this MUST NOT be applied to the DMARC-generated reports,

However, this MUST NOT be applied to the DMARC-generated reports,

all of which must be sent and received unhindered. The purpose of

all of which must be sent and received unhindered. The purpose of

the "pct" tag is to allow Domain Owners to slowly roll out

the "pct" tag is to allow Domain Owners to enact a slow rollout

enforcement of the DMARC mechanism. The prospect of "all or

enforcement of the DMARC mechanism. The prospect of "all or

nothing" is recognized as preventing many organizations from

nothing" is recognized as preventing many organizations from

experimenting with strong authentication-based mechanisms.

experimenting with strong authentication-based mechanisms. See

Section 7.1 for details.

rf: Format to be used for message-specific forensic information

rf: Format to be used for message-specific failure reports (comma-

reports (comma-separated plain-text list of values; OPTIONAL;

separated plain-text list of values; OPTIONAL; default "afrf").

default "afrf"). The value of this tag is a list of one or more

The value of this tag is a list of one or more report formats as

report formats as requested by the Domain Owner to be used when a

requested by the Domain Owner to be used when a message fails both

message fails both [SPF] and [DKIM] tests to report details of the

[SPF] and [DKIM] tests to report details of the individual

individual failure. The values MUST be present in the registry of

failure. The values MUST be present in the registry of reporting

reporting formats defined in Section 14; a Mail Receiver observing

formats defined in Section 14; a Mail Receiver observing a

a different value SHOULD ignore it, or MAY ignore the entire DMARC

different value SHOULD ignore it, or MAY ignore the entire DMARC

record. Initial default values are "afrf" (defined in [AFRF]) and

record. Initial default values are "afrf" (defined in [AFRF]) and

"iodef" (defined in [IODEF]).

"iodef" (defined in [IODEF]). See Section 8.4 for details.

ri: Interval requested between aggregate reports (plain-text, 32-bit

ri: Interval requested between aggregate reports (plain-text, 32-bit

unsigned integer; OPTIONAL; default 86400). {R14} Indicates a

unsigned integer; OPTIONAL; default 86400). {R14} Indicates a

request to Receivers to generate aggregate reports separated by no

request to Receivers to generate aggregate reports separated by no

more than the requested number of seconds. DMARC implementations

more than the requested number of seconds. DMARC implementations

MUST be able to provide daily reports and SHOULD be able to

MUST be able to provide daily reports and SHOULD be able to

provide hourly reports when requested. However, anything other

provide hourly reports when requested. However, anything other

than a daily report is understood to be accommodated on a best-

than a daily report is understood to be accommodated on a best-

effort basis.

effort basis.

skipping to change at page 21, line 5

skipping to change at page 22, line 42

list delimiter or an OPTIONAL size limit. Section 8.2 discusses

list delimiter or an OPTIONAL size limit. Section 8.2 discusses

considerations that apply when the domain name of a URI differs

considerations that apply when the domain name of a URI differs

from that of the domain advertising the policy. See Section 15.6

from that of the domain advertising the policy. See Section 15.6

for additional considerations. Any valid URI can be specified. A

for additional considerations. Any valid URI can be specified. A

Mail Receiver MUST implement support for a "mailto:" URI, i.e. the

Mail Receiver MUST implement support for a "mailto:" URI, i.e. the

ability to send a DMARC report via electronic mail. If not

ability to send a DMARC report via electronic mail. If not

provided, Mail Receivers MUST NOT generate aggregate feedback

provided, Mail Receivers MUST NOT generate aggregate feedback

reports. URIs not supported by Mail Receivers MUST be ignored.

reports. URIs not supported by Mail Receivers MUST be ignored.

The aggregate feedback report format is described in Section 8.3.

The aggregate feedback report format is described in Section 8.3.

ruf: Addresses to which message-specific forensic information is to

ruf: Addresses to which message-specific failure information is to

be reported (comma-separated plain-text list of DMARC URIs;

be reported (comma-separated plain-text list of DMARC URIs;

OPTIONAL). {R11} If present, the Domain Owner is requesting Mail

OPTIONAL). {R11} If present, the Domain Owner is requesting Mail

Receivers to send detailed forensic reports about messages that

Receivers to send detailed failure reports about messages that

fail [SPF] and/or [DKIM] evaluation. The format of the message to

fail the DMARC evaluation in specific ways (see the "fo" tag

be generated MUST follow that specified in the "rf" tag.

above). The format of the message to be generated MUST follow

Section 8.2 discusses considerations that apply when the domain

that specified in the "rf" tag. Section 8.2 discusses

name of a URI differs from that of the domain advertising the

considerations that apply when the domain name of a URI differs

policy. A Mail Receiver MUST implement support for a "mailto:"

from that of the domain advertising the policy. A Mail Receiver

URI, i.e. the ability to send a DMARC report via electronic mail.

MUST implement support for a "mailto:" URI, i.e. the ability to

If not provided, Mail Receivers MUST NOT generate forensic

send a DMARC report via electronic mail. If not provided, Mail

reports. See Section 15.6 for additional considerations.

Receivers MUST NOT generate failure reports. See Section 15.6 for

additional considerations.

sp: {R6} Requested Mail Receiver policy for subdomains (plain-text;

sp: {R6} Requested Mail Receiver policy for subdomains (plain-text;

OPTIONAL). Indicates the policy to be enacted by the Receiver at

OPTIONAL). Indicates the policy to be enacted by the Receiver at

the request of the Domain Owner. It applies only to subdomains of

the request of the Domain Owner. It applies only to subdomains of

the domain queried and not to the domain itself. Its syntax is

the domain queried and not to the domain itself. Its syntax is

identical to that of the "p" tag defined above. If absent, the

identical to that of the "p" tag defined above. If absent, the

policy specified by the "p" tag MUST be applied for subdomains.

policy specified by the "p" tag MUST be applied for subdomains.

v: Version (plain-text; REQUIRED). Identifies the record retrieved

v: Version (plain-text; REQUIRED). Identifies the record retrieved

as a DMARC record. It MUST have the value of "DMARC1". The value

as a DMARC record. It MUST have the value of "DMARC1". The value

of this tag MUST match precisely; if it does not or it is absent,

of this tag MUST match precisely; if it does not or it is absent,

the entire retrieved record MUST be ignored. It MUST be the first

the entire retrieved record MUST be ignored. It MUST be the first

tag in the list.

tag in the list.

Note that addition of a new tag into the registered list of tags does

A DMARC policy record MUST comply with the formal specification found

not itself require a new version of DMARC to be generated (with a

in Section 6.3 in that the "v" and "p" tags MUST be present and MUST

corresponding change to the "v" tag's value), but a change to any

appear in that order. Unknown tags MUST be ignored. Syntax errors

existing tags does require a new version of DMARC.

in the remainder of the record SHOULD be discarded in favour of

default values (if any) or ignored outright.

Note that given the rules of the previous paragraph, addition of a

new tag into the registered list of tags does not itself require a

new version of DMARC to be generated (with a corresponding change to

the "v" tag's value), but a change to any existing tags does require

a new version of DMARC.

6.3. Formal Definition

6.3. Formal Definition

The formal definition of the DMARC format using [ABNF] is as follows:

The formal definition of the DMARC format using [ABNF] is as follows:

dmarc-uri = URI [ "!" 1*DIGIT [ "k" / "m" / "g" / "t" ] ]

dmarc-uri = URI [ "!" 1*DIGIT [ "k" / "m" / "g" / "t" ] ]

; "URI" is imported from [URI]; commas (ASCII 0x2c)

; "URI" is imported from [URI]; commas (ASCII 0x2c)

; and exclamation points (ASCII 0x21) MUST be encoded

; and exclamation points (ASCII 0x21) MUST be encoded

dmarc-record = dmarc-version dmarc-sep

dmarc-record = dmarc-version dmarc-sep

dmarc-request

[dmarc-request]

[dmarc-sep dmarc-srequest]

[dmarc-sep dmarc-srequest]

[dmarc-sep dmarc-auri]

[dmarc-sep dmarc-auri]

[dmarc-sep dmarc-furi]

[dmarc-sep dmarc-furi]

[dmarc-sep dmarc-adkim]

[dmarc-sep dmarc-adkim]

[dmarc-sep dmarc-aspf]

[dmarc-sep dmarc-aspf]

[dmarc-sep dmarc-ainterval]

[dmarc-sep dmarc-ainterval]

[dmarc-sep dmarc-rfmt]

[dmarc-sep dmarc-rfmt]

[dmarc-sep dmarc-percent]

[dmarc-sep dmarc-percent]

[dmarc-sep]

; components other than dmarc-version and

; components other than dmarc-version and

; dmarc-request may appear in any order

; dmarc-request may appear in any order

dmarc-sep = *WSP %3b *WSP

dmarc-version = "v" *WSP "=DMARC1"

dmarc-version = %x76 *WSP "=" %x44.4d.41.52.43

dmarc-sep = *WSP %3b *WSP

dmarc-request = %x70 *WSP "=" *WSP ( "none" /

dmarc-request = "p" *WSP "=" *WSP ( "none" /

"quarantine" / "reject" )

"quarantine" / "reject" )

dmarc-srequest = %x73.70 *WSP "=" *WSP ( "none" /

dmarc-srequest = "sp" *WSP "=" *WSP ( "none" /

"quarantine" / "reject" )

"quarantine" / "reject" )

dmarc-auri = %x72.75.61 *WSP "=" *WSP

dmarc-auri = "rua" *WSP "=" *WSP

dmarc-uri *(*WSP "," *WSP dmarc-uri)

dmarc-uri *(*WSP "," *WSP dmarc-uri)

dmarc-ainterval = %x72.69 *WSP "=" *WSP

dmarc-ainterval = "ri" *WSP "=" *WSP 1*DIGIT

dmarc-furi = %x72.75.66 *WSP "=" *WSP

dmarc-furi = "ruf" *WSP "=" *WSP

dmarc-uri *(*WSP "," *WSP dmarc-uri)

dmarc-uri *(*WSP "," *WSP dmarc-uri)

dmarc-rfmt = %x72.66 *WSP "=" *WSP

dmarc-rfmt = "rf" *WSP "=" *WSP

( "afrf" / "iodef" )

( "afrf" / "iodef" )

dmarc-percent = %x70.63.74 *WSP "=" *WSP

dmarc-percent = "pct" *WSP "=" *WSP

1*3DIGIT

1*3DIGIT

dmarc-adkim = %x61.64.6b.69.6d *WSP "=" *WSP

dmarc-adkim = "adkim" *WSP "=" *WSP

( "r" / "s" )

( "r" / "s" )

dmarc-aspf = %x61.73.70.66 *WSP "=" *WSP

dmarc-aspf = "aspf" *WSP "=" *WSP

( "r" / "s" )

( "r" / "s" )

A size limitation in a dmarc-uri, if provided, is interpreted as a

A size limitation in a dmarc-uri, if provided, is interpreted as a

count of units followed by an OPTIONAL unit size ("k" for kilobytes,

count of units followed by an OPTIONAL unit size ("k" for kilobytes,

"m" for megabytes, "g" for gigabytes, "t" for terabytes). Without a

"m" for megabytes, "g" for gigabytes, "t" for terabytes). Without a

unit, the number is presumed to be a basic byte count.

unit, the number is presumed to be a basic byte count. Note that the

units are considered to be powers of two; a kilobyte is 2^10, a

megabyte is 2^20, etc.

Tag and value matching is case-insensitive.

7. Policy Enforcement Considerations

7. Policy Enforcement Considerations

Mail Receivers MAY choose to reject or quarantine email even if email

Mail Receivers MAY choose to reject or quarantine email even if email

passes the DMARC mechanism check. The DMARC mechanism does not

passes the DMARC mechanism check. The DMARC mechanism does not

inform Mail Receivers whether an email stream is "good". Mail

inform Mail Receivers whether an email stream is "good". Mail

Receivers are encouraged to maintain anti-abuse technologies to

Receivers are encouraged to maintain anti-abuse technologies to

combat the possibility of DMARC-enabled criminal campaigns.

combat the possibility of DMARC-enabled criminal campaigns.

Mail Receivers MAY choose to accept email that fails the DMARC

Mail Receivers MAY choose to accept email that fails the DMARC

mechanism check even if the Domain Owner has published a "reject"

mechanism check even if the Domain Owner has published a "reject"

policy. Mail Receivers SHOULD make a best effort not to increase the

policy. Mail Receivers need to make a best effort not to increase

likelihood of phishing if it chooses not to reject, against policy.

the likelihood of phishing if it chooses not to reject, against

policy. At a minimum, addition of the Authentication-Results header

field (see [AUTH-RESULTS]) is RECOMMENDED when delivery of failing

mail is done. When this is done, the DNS domain name thus recorded

MUST be encoded as an A-label, as described in Section 2.3 of [IDNA].

Mail Receivers are not obligated to report reject or quarantine

Mail Receivers are not obligated to report reject or quarantine

policy actions in aggregate feedback reports that are not due to

policy actions in aggregate feedback reports that are not due to

DMARC policy, but are instead the result of local policy. If local

DMARC policy, but are instead the result of local policy. If local

policy information is exposed, abusers can gain insight into the

policy information is exposed, abusers can gain insight into the

effectiveness and delivery rates of spam campaigns.

effectiveness and delivery rates of spam campaigns.

DMARC-compliant Mail Receivers MUST disregard any mail directive

DMARC-compliant Mail Receivers SHOULD disregard any mail directive

discovered as part of an authentication mechanism (e.g., ADSP, SPF)

discovered as part of an authentication mechanism (e.g., ADSP, SPF)

where a DMARC policy is also discovered. {R7} Mail Receivers SHOULD

where a DMARC policy is also discovered that specifies a policy other

also implement reporting instructions of DMARC in place of any

than "none". {R7} To enable Domain Owners to receive DMARC feedback

extensions to SPF or DKIM that might enable such reporting. {R10}

without impacting existing mail processing, discovered policies of

"p=none" SHOULD NOT modify existing mail disposition processing.

Note that some Mail Receivers may reject email based upon SPF policy

mechanisms before email enters DMARC-specific processing.

Mail Receivers SHOULD also implement reporting instructions of DMARC

in place of any extensions to SPF or DKIM that might enable such

reporting. {R10}

7.1. Policy Fallback Mechanism

If the "pct" tag is present in a policy record, application of policy

is done on a selective basis. The stated percentage of messages that

fail the DMARC test MUST be subjected to whatever policy is selected

by the "p" or "sp" tag (if present). Those that are not thus

selected MUST instead be subjected to the next policy lower in terms

of severity. In decreasing order of severity, the policies are

"reject", "quarantine", and "none".

For example, in the presence of "pct=50" in the DMARC policy record

for "example.com", half of the mesages with "example.com" in the

RFC5322.From field which fail the DMARC test would be subjected to

"reject" action, and the remainder subjected to "quarantine" action.

8. DMARC Feedback

8. DMARC Feedback

The DMARC mechanism requires highly accurate authentication

The DMARC mechanism requires highly accurate authentication

deployments to allow Mail Receivers to safely and scalably enforce

deployments to allow Mail Receivers to safely and scalably enforce

Domain Owner policies. Providing Domain Owners with visibility into

Domain Owner policies. Providing Domain Owners with visibility into

how Mail Receivers implement and enforce the DMARC mechanism in the

how Mail Receivers implement and enforce the DMARC mechanism in the

form of feedback is critical to establishing and maintaining accurate

form of feedback is critical to establishing and maintaining accurate

authentication deployments.

authentication deployments.

skipping to change at page 24, line 29

skipping to change at page 27, line 13

When a Mail Receiver discovers a DMARC policy in the DNS, and the

When a Mail Receiver discovers a DMARC policy in the DNS, and the

domain at which that record was discovered is not identical to the

domain at which that record was discovered is not identical to the

host part of the authority component of a [URI] specified in the

host part of the authority component of a [URI] specified in the

"rua" or "ruf" tag, the following verification steps SHOULD be taken:

"rua" or "ruf" tag, the following verification steps SHOULD be taken:

1. Extract the host portion of the authority component of the URI.

1. Extract the host portion of the authority component of the URI.

Call this the "destination host".

Call this the "destination host".

2. Prepend the string "_report._dmarc".

2. Prepend the string "_report._dmarc".

3. Prepend the domain name from which the policy was retrieved.

3. Prepend the domain name from which the policy was retrieved,

after conversion to an A-label if needed.

4. Query the DNS for a TXT record at the constructed name. If the

4. Query the DNS for a TXT record at the constructed name. If the

result of this request is a temporary DNS error of some kind

result of this request is a temporary DNS error of some kind

(e.g., a timeout), the Mail Receiver MAY elect to temporarily

(e.g., a timeout), the Mail Receiver MAY elect to temporarily

fail the delivery so the verification test can be repeated later.

fail the delivery so the verification test can be repeated later.

5. If the result includes no TXT resource records or multiple TXT

5. For each record returned, parse the result as a series of

resource records, a positive determination of the external

"tag=value" pairs, i.e., the same overall format as the policy

reporting relationship cannot be made; stop.

record (see Section 6.3). In particular, the "v=DMARC1" tag is

mandatory and MUST appear first in the list. Discard any that do

not pass this test.

6. Parse the result, if any, as a series of "tag=value" pairs, i.e.,

6. If the result includes no TXT resource records that pass basic

the same overall format as the policy record. In particular, the

parsing, a positive determination of the external reporting

"v=DMARC1" tag is mandatory and MUST appear first in the list.

relationship cannot be made; stop.

If at least that tag is present and the record overall is

syntactically valid per Section 6.3, then the external reporting

arrangement was authorized by the destination ADMD.

7. If a "rua" or "ruf" tag is thus discovered, replace the

7. If at least one TXT resource record remains in the set after

parsing, then the external reporting arrangement was authorized

by the destination ADMD.

8. If a "rua" or "ruf" tag is thus discovered, replace the

corresponding value extracted from the domain's DMARC policy

corresponding value extracted from the domain's DMARC policy

record with the one found in this record. This permits the

record with the one found in this record. This permits the

report receiver to override the report destination. However, to

report receiver to override the report destination. However, to

prevent loops or indirect abuse, the overriding URI MUST use the

prevent loops or indirect abuse, the overriding URI MUST use the

same destination host from the first step.

same destination host from the first step.

For example, if a DMARC policy query for "blue.example.com" contained

For example, if a DMARC policy query for "blue.example.com" contained

"rua=mailto:reports@red.example.net", the host extracted from the

"rua=mailto:reports@red.example.net", the host extracted from the

latter ("red.example.net") does not match "blue.example.com", so this

latter ("red.example.net") does not match "blue.example.com", so this

procedure is enacted. A TXT query for

procedure is enacted. A TXT query for

skipping to change at page 26, line 24

skipping to change at page 29, line 16

o The policy requested by the Domain Owner and the policy actually

o The policy requested by the Domain Owner and the policy actually

applied (if different) {R18}

applied (if different) {R18}

o The number of successful authentications {R19}

o The number of successful authentications {R19}

o The counts of messages based on all messages received even if

o The counts of messages based on all messages received even if

their delivery is ultimately blocked by other filtering agents

their delivery is ultimately blocked by other filtering agents

{R20}

{R20}

Note that Domain Owners or their agents may change the published

DMARC policy for a domain or subdomain at any time. From a Mail

Receiver's perspective this will occur during a reporting period and

may be noticed during that period, at the end of that period when

reports are generated, or during a subsequent reporting period, all

depending on the Mail Receiver's implementation. Under these

conditions it is possible that a Mail Receiver could do any of the

following:

o generate a single aggregate report for such a reporting period

that includes message dispositions based on the old policy, or a

mix of the two policies, even though the report only contains a

single "policy_published" element;

o generate multiple reports for the same period, one for each

published policy occurring during the reporting period;

o generate a report whose end time occurs when the updated policy

was detected, regardless of any requested report interval.

Such policy changes are expected to be infrequent for any given

domain, whereas more stringent policy monitoring requirements on the

Mail Receiver would produce a very large burden at Internet scale.

Therefore it is the responsibility of Report Consumers and Domain

Owners to be aware of this situation and allow for such mixed reports

during the propagation of the new policy to Mail Receivers.

Aggregate reports are most useful when they all cover a common time

period. By contrast, correlation of these reports from multiple

generators when they cover incongruous time periods is difficult or

impossible. Report generators SHOULD, wherever possible, adhere to

hour boundaries for the reporting period they are using. For

example, starting a per-day report at 00:00; starting per-hour

reports at 00:00, 01:00, 02:00; et cetera. Report Generators using a

24-hour report period are strongly encouraged to begin that period at

00:00 UTC, regardless of local timezone or time of report production,

in order to facilitate correlation.

8.4. Failure Reports

8.4. Failure Reports

Message-specific authentication-failure-related forensic reporting

When a Domain Owner requests failure reports for the purpose of

can be used to identify problems with Domain-Owner-controlled

forensic analysis, and the Mail Receiver is willing to provide such

infrastructure and to investigate the sources and causes of failing

reports, the Mail Receiver generates and sends a message using the

messages. They might also be used to aid investigations into the

format described in [AFRF]. This document updates the AFRF format as

sources and objectives of fraudulent messages.

described in Section 8.4.1.

The destination(s) and nature of the reports are defined by the "fo"

and "ruf" tags as defined in Section 6.2.

Where multiple URIs are selected to receive failure reports the

report generator MUST make an attempt to deliver to each of them.

An obvious consideration is the denial of service attack that can be

perpetrated by an attacker who sends numerous messages purporting to

be from the intended victim Domain Owner but which fail both SPF and

DKIM; this would cause participating Mail Receivers to send failure

reports to the Domain Owner or its delegate in potentially huge

volumes. Accordingly, participating Mail Receivers are encouraged to

aggregate these reports as much as is practical, using the Incidents

field of the Abuse Reporting Format ([ARF]). Various aggregation

techniques are possible, including:

o only send a report to the first recipient of multi-recipient

messages;

o store reports for a period of time before sending them, allowing

detection, collection, and reporting of like incidents;

o apply rate limiting, such as a maximum number of reports per

minute that will be generated (and the remainder discarded).

8.4.1. Reporting Format Update

[AFRF] is updated to include the following changes:

1. Section 3.2 is updated to indicate that a DMARC failure report

includes the following ARF header fields, with the indicated

normative requirement levels:

* Identity-Alignment (REQUIRED; defined below)

* Delivery-Result (OPTIONAL)

* DKIM-Domain, DKIM-Identity, DKIM-Selector (REQUIRED if the

message was signed by DKIM)

* DKIM-Canonicalized-Header, DKIM-Canonicalized-Body (OPTIONAL

if the message was signed by DKIM)

* SPF-DNS (REQUIRED)

2. Section 3.2 is updated to define the "Identity-Alignment" field

as containing a comma-separated list of authentication mechanism

names that produced an aligned identity, or the keyword "none" if

none did. ABNF:

id-align = "Identity-Alignment:" [CFWS]

( "none" / dmarc-method

*( [CFWS] "," [CFWS] dmarc-method ) )

[CFWS]

dmarc-method = ( "dkim" / "spf" )

; each may appear at most once in an id-align

3. Section 3.3 is updated to add Authentication Failure Type

"dmarc", which is to be used when a failure report is generated

because some or all of the authentication mechanisms failed to

produce aligned identifiers. Note that a failure report

generator MAY also independently produce an AFRF message for any

or all of the underlying authentication methods.

8.5. Failure Reports

Message-specific authentication-failure-related reporting can be used

to identify problems with Domain-Owner-controlled infrastructure and

to investigate the sources and causes of failing messages. They

might also be used to aid investigations into the sources and

objectives of fraudulent messages.

The format for these reports is defined in either [AFRF] or [IODEF]

The format for these reports is defined in either [AFRF] or [IODEF]

depending on the value found in the "rf" tag of the DMARC record (or

depending on the value found in the "ruf" tag of the DMARC record (or

its default).

its default).

These reports SHOULD include the "call-to-action" URI(s) from inside

These reports SHOULD include the "call-to-action" URI(s) from inside

messages that failed to authenticate. {R21}

messages that failed to authenticate. {R21}

9. Policy Discovery

9. Policy Discovery

As stated above, the DMARC mechanism utilizes DNS TXT records to

As stated above, the DMARC mechanism utilizes DNS TXT records to

advertise policy. Policy discovery is accomplished similar to the

advertise policy. Policy discovery is accomplished similar to the

way SPF records are discovered. Important differences are discussed

way SPF records are discovered. Important differences are discussed

skipping to change at page 27, line 41

skipping to change at page 32, line 48

If the set produced by the mechanism above contains no DMARC policy

If the set produced by the mechanism above contains no DMARC policy

record (i.e., any indication that there is no such record as opposed

record (i.e., any indication that there is no such record as opposed

to a transient DNS error), Mail Receivers SHOULD NOT apply the DMARC

to a transient DNS error), Mail Receivers SHOULD NOT apply the DMARC

mechanism to the message.

mechanism to the message.

If the RFC5322.From domain does not exist in the DNS, Mail Receivers

If the RFC5322.From domain does not exist in the DNS, Mail Receivers

SHOULD direct the receiving SMTP server to reject the message {R9}.

SHOULD direct the receiving SMTP server to reject the message {R9}.

The choice of mechanism for such rejection and the implications of

The choice of mechanism for such rejection and the implications of

those choices are discussed in Section 11 and Section 15.8.

those choices are discussed in Section 11 and Section 15.8.

Handling of DNS errors when querying for the DMARC policy record is

left to the discretion of the Mail Receiver. For example, to ensure

minimal disruption of mail flow, transient errors could result in

delivery of the message ("fail open"), or they could result in the

message being temporarily rejected (i.e., an SMTP 4yx reply) which

invites the sending MTA to try again after the condition has possibly

cleared, allowing a definite DMARC conclusion to be reached ("fail

closed").

10. Domain Owner Actions

10. Domain Owner Actions

To implement the DMARC mechanism, Domain Owners perform the actions

To implement the DMARC mechanism, Domain Owners perform the actions

enumerated in this section. For a trial operation, a Domain Owner

enumerated in this section. For a trial operation, a Domain Owner

might at first deploy DMARC to cover only a subdomain.

might at first deploy DMARC to cover only a subdomain.

1. Deploy authentication technologies [DKIM] (see also

1. Deploy authentication technologies [DKIM] (see also

[DKIM-OVERVIEW] and [DKIM-DEPLOYMENT]) and [SPF].

[DKIM-OVERVIEW] and [DKIM-DEPLOYMENT]) and [SPF].

2. Align identifiers; i.e., audit internal systems so that mail

2. Align identifiers; i.e., audit internal systems so that mail

skipping to change at page 29, line 15

skipping to change at page 34, line 28

Therefore, Domain Owners SHOULD include "mailto" URIs at the end of

Therefore, Domain Owners SHOULD include "mailto" URIs at the end of

the lists of URIs they publish.

the lists of URIs they publish.

11. Mail Receiver Actions

11. Mail Receiver Actions

This section describes receiver actions in the DMARC environment.

This section describes receiver actions in the DMARC environment.

11.1. Extract Author Domain

11.1. Extract Author Domain

The domain in the RFC5322.From field is extracted as the domain to be

The domain in the RFC5322.From field is extracted as the domain to be

evaluated by DMARC.

evaluated by DMARC. If the domain is encoded with UTF-8, the domain

name must be converted to an A-label for further processing.

A message bearing multiple RFC5322.From identifiers is ambiguous

A message bearing multiple RFC5322.From identifiers is ambiguous

under DMARC. This includes messages with multiple RFC5322.From

under DMARC. This includes messages with multiple RFC5322.From

fields (which is also forbidden under [MAIL]) and a message with a

fields (which is also forbidden under [MAIL]) and a message with a

single RFC5322.From field containing multiple entities. Such

single RFC5322.From field containing multiple entities. There can

messages SHOULD be rejected. If they are not, they MUST be ignored

also be From: fields that contain no meaningful values, such as

with respect to all DMARC processing, as reliable alignment of

RFC5322's "group" syntax. Such messages SHOULD be rejected. If they

verified identifiers with what the end user will actually see cannot

are not, the Mail Receiver can either ignore the message entirely

be positively determined.

with respect to DMARC processing, or evaluate DMARC against all

identifiers. In this latter case, it is important to consider the

set of identifiers that will ultimately be shown to end users, since

ensuring the legitimate use of those identifiers is at the heart of

DMARC's goal. This requires an understanding of the end user

environment, the specification of which is outside of the scope of

this document.

11.2. Determine Handling Policy

11.2. Determine Handling Policy

To arrive at a policy disposition for an individual message, Mail

To arrive at a policy disposition for an individual message, Mail

Receivers MUST perform the following actions or their semantic

Receivers MUST perform the following actions or their semantic

equivalents. The first four steps MAY be done in parallel, whereas

equivalents. The first four steps MAY be done in parallel, whereas

steps 5 and 6 require input from previous steps.

steps 5 and 6 require input from previous steps.

The steps are as follows:

The steps are as follows:

1. Extract the RFC5322.From domain from the message.

1. Extract the RFC5322.From domain from the message (as above).

2. Query the DNS for a DMARC policy record. Continue if one is

2. Query the DNS for a DMARC policy record. Continue if one is

found, or abort DMARC evaluation otherwise. See Section 9 for

found, or abort DMARC evaluation otherwise. See Section 9 for

details.

details.

3. Perform DKIM signature verification checks. A single email may

3. Perform DKIM signature verification checks. A single email may

contain multiple DKIM signatures. The results of this step are

contain multiple DKIM signatures. The results of this step are

passed to the remainder of the algorithm and MUST include the

passed to the remainder of the algorithm and MUST include the

value of the "d=" tag from all DKIM signatures that successfully

value of the "d=" tag from all DKIM signatures that successfully

validated.

validated.

4. Perform SPF validation checks. The results of this step are

4. Perform SPF validation checks. The results of this step are

passed to the remainder of the algorithm and MUST include the

passed to the remainder of the algorithm and MUST include the

domain name from the RFC5321.MailFrom if SPF evaluation returned

domain name used to complete the SPF check if evaluation returned

a "pass" result.

a "pass" result.

5. Conduct identifier alignment checks. With authentication checks

5. Conduct identifier alignment checks. With authentication checks

and policy discovery performed, the Mail Receiver checks if

and policy discovery performed, the Mail Receiver checks if

Authenticated Identifiers fall into alignment as decribed in

Authenticated Identifiers fall into alignment as decribed in

Section 4. If one or more of the Authenticated Identifiers align

Section 4. If one or more of the Authenticated Identifiers align

with the RFC5322.From domain, the message is considered to pass

with the RFC5322.From domain, the message is considered to pass

the DMARC mechanism check. All other conditions (authentication

the DMARC mechanism check. All other conditions (authentication

failures, identifier mismatches) are considered to be DMARC

failures, identifier mismatches) are considered to be DMARC

mechanism check failures.

mechanism check failures.

skipping to change at page 30, line 24

skipping to change at page 35, line 44

6. Apply policy. Emails that fail the DMARC mechanism check are

6. Apply policy. Emails that fail the DMARC mechanism check are

disposed of in accordance with the discovered DMARC policy of the

disposed of in accordance with the discovered DMARC policy of the

Domain Owner. See Section 6.2 for details.

Domain Owner. See Section 6.2 for details.

Heuristics applied in the absence of use by a Domain Owner of either

Heuristics applied in the absence of use by a Domain Owner of either

SPF or DKIM (e.g., [Best-Guess-SPF]) SHOULD NOT be used, as it may be

SPF or DKIM (e.g., [Best-Guess-SPF]) SHOULD NOT be used, as it may be

the case that the Domain Owner wishes a Message Receiver not to

the case that the Domain Owner wishes a Message Receiver not to

consider the results of that underlying authentication protocol at

consider the results of that underlying authentication protocol at

all.

all.

Handling of messages for which SPF and/or DKIM evaluation encounters

a DNS error is left to the discretion of the Mail Receiver. Further

discussion is available in Section 9.

11.3. Message Sampling

11.3. Message Sampling

Attention must be paid to the possible presence of the "pct" tag in

Attention must be paid to the possible presence of the "pct" tag in

the DMARC policy record. If the tag is present, the Mail Receiver

the DMARC policy record. If the tag is present, the Mail Receiver

MUST NOT enact the requested policy ("p" tag or "sp" tag") on more

MUST NOT enact the requested policy ("p" tag or "sp" tag") on more

than the stated percent of the totality of affected messages.

than the stated percent of the totality of affected messages.

However, regardless of whether or not the "pct" tag is present, the

However, regardless of whether or not the "pct" tag is present, the

Mail Receiver MUST include all relevant message data in any reports

Mail Receiver MUST include all relevant message data in any reports

produced.

produced.

skipping to change at page 31, line 46

skipping to change at page 37, line 25

12.2. Transport

12.2. Transport

Where the URI specified in an "rua" tag does not specify otherwise, a

Where the URI specified in an "rua" tag does not specify otherwise, a

Mail Receiver generating a feedback report SHOULD apply a secure

Mail Receiver generating a feedback report SHOULD apply a secure

transport mechanism.

transport mechanism.

The Mail Receiver, after preparing a report, MUST evaluate the

The Mail Receiver, after preparing a report, MUST evaluate the

provided reporting URIs in the order given. Any reporting URI that

provided reporting URIs in the order given. Any reporting URI that

included a size limitation exceeded by the generated report (after

included a size limitation exceeded by the generated report (after

compression and after any encoding required by the particular

compression and after any encoding required by the particular

transport mechanism) MUST NOT be used.

transport mechanism) MUST NOT be used. An attempt MUST be made to

deliver an aggregate report to every remaining URI.

If transport is not possible because the services advertised by the

If transport is not possible because the services advertised by the

published URIs are not able to accept reports (e.g., the URI refers

published URIs are not able to accept reports (e.g., the URI refers

to a service that is unreachable, or all provided URIs specify size

to a service that is unreachable, or all provided URIs specify size

limits exceeded by the generated record), the Mail Receiver SHOULD

limits exceeded by the generated record), the Mail Receiver SHOULD

send a short report (see Section 12.2.4) indicating that a report is

send a short report (see Section 12.2.4) indicating that a report is

available but could not be sent. The Mail Receiver MAY cache that

available but could not be sent. The Mail Receiver MAY cache that

data and try again later, or MAY discard data that could not be sent.

data and try again later, or MAY discard data that could not be sent.

12.2.1. Email

12.2.1. Email

In the case of a "mailto" URI, the Mail Receiver SHOULD communicate

In the case of a "mailto" URI, the Mail Receiver SHOULD communicate

reports using the method described in [STARTTLS].

reports using the method described in [STARTTLS].

The message generated by the Mail Receiver must be a [MIME] formatted

The message generated by the Mail Receiver must be a [MIME] formatted

[MAIL] message. The aggregate report itself MUST be included in one

[MAIL] message. The aggregate report itself MUST be included in one

of the parts of the message. A human-readable portion MAY be

of the parts of the message. A human-readable portion MAY be

included as a MIME part (such as a text/plain part).

included as a MIME part (such as a text/plain part).

The aggregate data MUST be an XML file contained within a ZIP file.

The aggregate data MUST be an XML file subjected to GZIP compression.

The aggregate data MUST be present using the media type "application/

The aggregate data MUST be present using the media type "application/

zip", and the filenames SHOULD be constructed using the following

gzip", and the filenames SHOULD be constructed using the following

ABNF:

ABNF:

filename = receiver "!" policy-domain "!" begin-timestamp "!"

filename = receiver "!" policy-domain "!" begin-timestamp "!"

end-timestamp "." extension

end-timestamp [ "!" unique-id ] "." extension

unique-id = token

; "token" is imported from [MIME]

receiver = domain

receiver = domain

; imported from [MAIL]

; imported from [MAIL]

policy-domain = domain

policy-domain = domain

begin-timestamp = 1*DIGIT

begin-timestamp = 1*DIGIT

; seconds since 00:00:00 UTC January 1, 1970

; seconds since 00:00:00 UTC January 1, 1970

; indicating start of the time range contained

; indicating start of the time range contained

; in the report

; in the report

end-timestamp = 1*DIGIT

end-timestamp = 1*DIGIT

; seconds since 00:00:00 UTC January 1, 1970

; seconds since 00:00:00 UTC January 1, 1970

; indicating end of the time range contained

; indicating end of the time range contained

; in the report

; in the report

extension = "xml" / "zip"

extension = "xml" / "gzip"

For the ZIP file itself, the extension MUST be "zip"; for the XML

For the GZIP file itself, the extension MUST be "gz"; for the XML

report, the extension MUST be "xml".

report, the extension MUST be "xml".

"unique-id" allows an optional unique ID generated by the Mail

Receiver to distinguish among multiple reports generated

simultaneously by different sources within the same ADMD.

No specific MIME message structure is required. It is presumed that

the aggregate reporting address will be equipped to extract MIME

parts with the prescribed media type and filename and ignore the

rest.

Email streams carrying DMARC feedback data MUST conform to the DMARC

Email streams carrying DMARC feedback data MUST conform to the DMARC

mechanism. That is, the message comprising the report should be

mechanism, thereby resulting in an aligned "pass" (see Section 4.3).

DKIM-signed and originate from a source for which an SPF test would

This practice minimizes the risk of report consumers processing

pass. This practice minimizes the risk of report consumers

fraudulent reports.

processing fraudulent reports.

The RFC5322.Subject field for individual report submissions SHOULD

The RFC5322.Subject field for individual report submissions SHOULD

conform to the following ABNF:

conform to the following ABNF:

dmarc-subject = %x52.65.70.6f.72.74 1*FWS ; "Report"

dmarc-subject = %x52.65.70.6f.72.74 1*FWS ; "Report"

%x44.6f.6d.61.69.6e.3a 1*FWS ; "Domain:"

%x44.6f.6d.61.69.6e.3a 1*FWS ; "Domain:"

domain-name 1*FWS ; from RFC6376

domain-name 1*FWS ; from RFC6376

%x53.75.62.6d.69.74.74.65.72.3a ; "Submitter:"

%x53.75.62.6d.69.74.74.65.72.3a ; "Submitter:"

1*FWS domain-name 1*FWS

1*FWS domain-name 1*FWS

%x52.65.70.6f.72.74.2d.49.44.3a ; "Report-ID:"

%x52.65.70.6f.72.74.2d.49.44.3a ; "Report-ID:"

skipping to change at page 33, line 32

skipping to change at page 39, line 29

This transport mechanism potentially encounters a problem when

This transport mechanism potentially encounters a problem when

feedback data size exceeds maximum allowable attachment sizes for

feedback data size exceeds maximum allowable attachment sizes for

either the generator or the consumer. See Section 12.2.4 for further

either the generator or the consumer. See Section 12.2.4 for further

discussion.

discussion.

12.2.2. HTTP

12.2.2. HTTP

Where an "http" or "https" method is requested in a Domain Owner's

Where an "http" or "https" method is requested in a Domain Owner's

URI list, the Mail Receiver MAY encode the data using the

URI list, the Mail Receiver MAY encode the data using the

"application/zip" media type or MAY send the Appendix C data

"application/gzip" media type ([GZIP]) or MAY send the Appendix C

uncompressed or unencoded.

data uncompressed or unencoded.

The header portion of the POST or PUT request SHOULD contain a

The header portion of the POST or PUT request SHOULD contain a

Subject field as described in Section 12.2.1.

Subject field as described in Section 12.2.1.

HTTP permits the use of Content-Transfer-Encoding to upload gzip

content using the POST or PUT instruction after translating the

content to 7-bit ASCII.

12.2.3. Other Methods

12.2.3. Other Methods

Other registered URI schemes may be explicitly supported in later

Other registered URI schemes may be explicitly supported in later

versions.

versions.

12.2.4. Error Reports

12.2.4. Error Reports

When a Mail Receiver is unable to complete delivery of a report via

When a Mail Receiver is unable to complete delivery of a report via

any of the URIs listed by the Domain Owner, the Mail Receiver SHOULD

any of the URIs listed by the Domain Owner, the Mail Receiver SHOULD

generate an error message. An attempt MUST be made to send this

generate an error message. An attempt MUST be made to send this

skipping to change at page 37, line 18

skipping to change at page 43, line 18

| Tag Name | Defined | Status | Description |

| Tag Name | Defined | Status | Description |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| adkim | [THIS MEMO] | current | DKIM alignment mode |

| adkim | [THIS MEMO] | current | DKIM alignment mode |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| aspf | [THIS MEMO] | current | SPF alignment mode |

| aspf | [THIS MEMO] | current | SPF alignment mode |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| pct | [THIS MEMO] | current | Sampling rate |

| pct | [THIS MEMO] | current | Sampling rate |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| p | [THIS MEMO] | current | Requested handling policy |

| p | [THIS MEMO] | current | Requested handling policy |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| rf | [THIS MEMO] | current | Forensic reporting format(s) |

| rf | [THIS MEMO] | current | Failure reporting format(s) |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| ri | [THIS MEMO] | current | Aggregate Reporting interval |

| ri | [THIS MEMO] | current | Aggregate Reporting interval |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| rua | [THIS MEMO] | current | Reporting URI(s) for |

| rua | [THIS MEMO] | current | Reporting URI(s) for |

| | | | aggregate data |

| | | | aggregate data |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| ruf | [THIS MEMO] | current | Reporting URI(s) for |

| ruf | [THIS MEMO] | current | Reporting URI(s) for |

| | | | forensic data |

| | | | failure data |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| sp | [THIS MEMO] | current | Requested handling policy |

| sp | [THIS MEMO] | current | Requested handling policy |

| | | | for subdomains |

| | | | for subdomains |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

| v | [THIS MEMO] | current | Specification version |

| v | [THIS MEMO] | current | Specification version |

+----------+-------------+---------+------------------------------+

+----------+-------------+---------+------------------------------+

14.4. DMARC Report Format Registry

14.4. DMARC Report Format Registry

Names of DMARC forensic reporting formats must be registered with

Names of DMARC failure reporting formats must be registered with

IANA. New entries are assigned only for values that have been

IANA. New entries are assigned only for values that have been

documented in a published RFC that has had IETF Review, per

documented in a published RFC that has had IETF Review, per

[IANA-CONSIDERATIONS]. Each registration must include the tag name,

[IANA-CONSIDERATIONS]. Each registration must include the tag name,

the specification that defines it, a brief description, and its

the specification that defines it, a brief description, and its

status which must be one of "current", "experimental" or "historic".

status which must be one of "current", "experimental" or "historic".

The initial set of entries in this registry is as follows:

The initial set of entries in this registry is as follows:

+--------+-------------+---------+-----------------------------+

+--------+-------------+---------+-----------------------------+

| Format | Defined | Status | Description |

| Format | Defined | Status | Description |

skipping to change at page 39, line 5

skipping to change at page 44, line 49

reflective of the true originator of the message.

reflective of the true originator of the message.

o The focus of email authentication efforts has been to create

o The focus of email authentication efforts has been to create

mechanisms by which this field, or at least some field in the

mechanisms by which this field, or at least some field in the

message, can be deemed genuine. Thus, this field is not easily

message, can be deemed genuine. Thus, this field is not easily

forged within the context of its use with DMARC.

forged within the context of its use with DMARC.

o The DMARC mechanism confers no additional privilege to the message

o The DMARC mechanism confers no additional privilege to the message

without successful authentication of this identifier.

without successful authentication of this identifier.

The absence of a single, properly-formed RFC5322.From field renders

the message invalid. This document prescribes no specific action in

that case, other than to suggest that the message ought to be

disposed of by the Mail Receiver's infrastructure in a safe manner

that recognizes and possibly even highlights the malformation.

15.2. Display Name Attacks

15.2. Display Name Attacks

A common attack in messaging abuse is the presentation of false

A common attack in messaging abuse is the presentation of false

information in the "display name" portion of the RFC5322.From field.

information in the "display name" portion of the RFC5322.From field.

For example, it is possible for the email address in that field to be

For example, it is possible for the email address in that field to be

an arbitrary address or domain name, while containing a well-known

an arbitrary address or domain name, while containing a well-known

name (a person, brand, role, etc.) in the display name, intending to

name (a person, brand, role, etc.) in the display name, intending to

fool the end user into believing that the name is used legitimately.

fool the end user into believing that the name is used legitimately.

The attack is predicated on the notion that most common Mail User

The attack is predicated on the notion that most common Mail User

Agents (MUAs) will show the display name and not the email address

Agents (MUAs) will show the display name and not the email address

skipping to change at page 41, line 28

skipping to change at page 47, line 31

domains that are claimed as external recipients. Negative caching

domains that are claimed as external recipients. Negative caching

will mitigate this problem, but only to a limited extent, mostly

will mitigate this problem, but only to a limited extent, mostly

dependent on the default time-to-live in the domain's SOA record.

dependent on the default time-to-live in the domain's SOA record.

Where possible, external reporting is best achieved by having the

Where possible, external reporting is best achieved by having the

report be directed to domains that can receive mail and simply having

report be directed to domains that can receive mail and simply having

it automatically forwarded to the desired external destination.

it automatically forwarded to the desired external destination.

Note that the addresses shown in the "ruf" tag receive more

Note that the addresses shown in the "ruf" tag receive more

information that might be considered private data, since it is

information that might be considered private data, since it is

possible for actual email content to appear in the forensic reports.

possible for actual email content to appear in the failure reports.

The URIs identified there are thus more attractive targets for

The URIs identified there are thus more attractive targets for

intrusion attempts than those found in the "rua" tag. Moreover,

intrusion attempts than those found in the "rua" tag. Moreover,

attacking the DNS of the subject domain to cause forensic data to be

attacking the DNS of the subject domain to cause failure data to be

routed fraudulently to an attacker's systems may be an attractive

routed fraudulently to an attacker's systems may be an attractive

prospect. Deployment of DNSSEC is advisable if this is a concern.

prospect. Deployment of [DNSSEC] is advisable if this is a concern.

The verification mechanism presented in Section 8.2 is currently not

The verification mechanism presented in Section 8.2 is currently not

mandatory ("MUST") but strongly recommended ("SHOULD"). It is

mandatory ("MUST") but strongly recommended ("SHOULD"). It is

possible that it would be elevated to a "MUST" by later security

possible that it would be elevated to a "MUST" by later security

review.

review.

15.7. Feedback Loops

15.7. Feedback Loops

Per [ARF-BCP] and [ARF-AS], it is highly advisable to vet the

Per [ARF-BCP] and [ARF-AS], it is highly advisable to vet the

destinations of feedback streams to which Mail Receivers will send

destinations of feedback streams to which Mail Receivers will send

skipping to change at page 42, line 11

skipping to change at page 48, line 14

mechanism by which one can request that no more reports be sent in

mechanism by which one can request that no more reports be sent in

case some entity becomes the unwitting recipient of undesired data in

case some entity becomes the unwitting recipient of undesired data in

high volumes.

high volumes.

15.8. Rejecting Messages

15.8. Rejecting Messages

This proposal calls for rejection of a message during the SMTP

This proposal calls for rejection of a message during the SMTP

session under certain circumstances. This is typically done in one

session under certain circumstances. This is typically done in one

of two ways:

of two ways:

o Full rejection, wherein the SMTP server issues a 5xy reply code

o Full rejection, wherein the SMTP server issues a 5xy reply code as

(550 SHOULD be used) as an indication to the SMTP client that the

an indication to the SMTP client that the transaction failed; the

transaction failed; the SMTP client is then responsible for

SMTP client is then responsible for generating notification that

generating notification that delivery failed (see Section 4.2.5 of

delivery failed (see Section 4.2.5 of [SMTP]).

[SMTP]).

o A "silent discard", wherein the SMTP server returns a 2xy reply

o A "silent discard", wherein the SMTP server returns a 2xy reply

code implying to the client that delivery (or, at least, relay)

code implying to the client that delivery (or, at least, relay)

was successfully completed, but then simply discarding the message

was successfully completed, but then simply discarding the message

with no further action.

with no further action.

Each of these has a cost. For instance, a silent discard may prevent

Each of these has a cost. For instance, a silent discard may prevent

"backscatter" (the annoying generation of delivery failure reports,

"backscatter" (the annoying generation of delivery failure reports,

which go back to the RFC5321.MailFrom address, about messages that

which go back to the RFC5321.MailFrom address, about messages that

were fraudulently generated), but effectively means the SMTP server

were fraudulently generated), but effectively means the SMTP server

has to be programmed to give a false result, which can confound

has to be programmed to give a false result, which can confound

external debugging efforts.

external debugging efforts.

Similarly, the text portion of the SMTP reply may be important to

Similarly, the text portion of the SMTP reply may be important to

consider. For example, when rejecting a message, revealing the

consider. For example, when rejecting a message, revealing the

reason for the rejection might give an attacker enough information to

reason for the rejection might give an attacker enough information to

bypass those efforts on a later attempt, though it might also assist

bypass those efforts on a later attempt, though it might also assist

a legitimate client to determine the source of some local issue that

a legitimate client to determine the source of some local issue that

caused the rejection.

caused the rejection.

In the latter case, when doing an SMTP rejection, providing a clear

hint can be useful in resolving issues. A receiver might indicate in

plain text the reason for the rejection by using the word "DMARC"

somewhere in the reply text. Many systems are able to scan the SMTP

reply text to determine the nature of the rejection, thus providing a

machine-detectable reason for rejection allows automated sorting of

rejection causes so they can be properly addressed. For example:

550 5.7.1 Email rejected per DMARC policy for example.com

If a Mail Receiver elects to defer delivery due to inability to

If a Mail Receiver elects to defer delivery due to inability to

retrieve or apply DMARC policy, this SHOULD be done with a 450 SMTP

retrieve or apply DMARC policy, this is best done with a 4xy SMTP

reply code.

reply code.

15.9. Capacity Planning

15.9. Capacity Planning

DMARC participants will need to perform capacity planning to support

DMARC participants will need to perform capacity planning to support

their implementations. Some factors to consider include:

their implementations. Some factors to consider include:

Storage: As Mail Receivers process increasing numbers of messages --

Storage: As Mail Receivers process increasing numbers of messages --

from increasingly disparate sources -- claiming to be from DMARC-

from increasingly disparate sources -- claiming to be from DMARC-

enabled domains, additional storage of information must be

enabled domains, additional storage of information must be

skipping to change at page 45, line 9

skipping to change at page 51, line 23

For example, an attacker who controls the SPF record for

For example, an attacker who controls the SPF record for

"evil.example.com" can send mail with an RFC5322.From containing

"evil.example.com" can send mail with an RFC5322.From containing

"foo@example.com" that can pass both authentication and the DMARC

"foo@example.com" that can pass both authentication and the DMARC

check against "example.com".

check against "example.com".

The Organizational Domain administrator should be careful not to cede

The Organizational Domain administrator should be careful not to cede

control of sub-domains if this is an issue, and to consider using the

control of sub-domains if this is an issue, and to consider using the

"strict" Identifier Alignment option if appropriate.

"strict" Identifier Alignment option if appropriate.

15.12. DNS Security

The DMARC mechanism and its underlying technologies (SPF, DKIM)

depend on the security of the DNS. To reduce the risk of subversion

of the DMARC mechanism due to DNS-based exploits, serious

consideration should be given to the deployment of DNSSEC in parallel

to the deployment of DMARC.

DNSSEC-enabled environments should consider the implication of

receiving insecure or bogus DNS replies in the DMARC context.

Operators should understand whether their DMARC implementations will

behave as expected when DNSSEC-secured queries temporarily fail due

to attempted exploit. For example, if lookup of a specific domain's

DMARC record is typically secured using DNSSEC, attention should to

paid to cases and behaviors when secured lookups fail. The operator

may consider configuring their DNSSEC-aware resolver to propagate a

"temporary error" condition to the DMARC mechanism to defer

acceptance of email until DNSSEC resolution can be restored.

16. References

16. References

16.1. Normative References

16.1. Normative References

[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax

[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax

Specifications: ABNF", RFC 5234, January 2008.

Specifications: ABNF", RFC 5234, January 2008.

[AFRF] Fontana, H., "Authentication Failure Reporting using the

[AFRF] Fontana, H., "Authentication Failure Reporting using the

Abuse Report Format",

Abuse Report Format", RFC 6591, April 2012.

I-D draft-ietf-marf-authfailure-report, September 2011.

[AFRF-DKIM]

Kucherawy, M., "Extensions to DomainKeys Identified Mail

(DKIM) for Failure Reporting", RFC 6651, June 2012.

[AFRF-SPF]

Kitterman, S., "Sender Policy Framework (SPF)

Authentication Failure Reporting Using the Abuse Reporting

Format", RFC 6652, June 2012.

[DKIM] Crocker, D., Hansen, T., and M. Kucherawy, "DomainKeys

[DKIM] Crocker, D., Hansen, T., and M. Kucherawy, "DomainKeys

Identified Mail (DKIM) Signatures", RFC 6376,

Identified Mail (DKIM) Signatures", RFC 6376,

September 2011.

September 2011.

[DNS] Mockapetris, P., "Domain names - implementation and

[DNS] Mockapetris, P., "Domain names - implementation and

specification", STD 13, RFC 1035, November 1987.

specification", STD 13, RFC 1035, November 1987.

[DNS-CASE]

[DNS-CASE]

Eastlake, D., "Domain Name System (DNS) Case Insensitivity

Eastlake, D., "Domain Name System (DNS) Case Insensitivity

Clarification", RFC 4343, January 2006.

Clarification", RFC 4343, January 2006.

[GZIP] Levine, J., "The 'application/zlib' and 'application/gzip'

Media Types", RFC 6713, August 2012.

[IDNA] Klensin, J., "Internationalized Domain Names for

Applications (IDNA): Definitions and Document Framework",

RFC 5890, August 2000.

[KEYWORDS]

[KEYWORDS]

Bradner, S., "Key words for use in RFCs to Indicate

Bradner, S., "Key words for use in RFCs to Indicate

Requirement Levels", BCP 14, RFC 2119, March 1997.

Requirement Levels", BCP 14, RFC 2119, March 1997.

[MAIL] Resnick, P., Ed., "Internet Message Format", RFC 5322,

[MAIL] Resnick, P., Ed., "Internet Message Format", RFC 5322,

October 2008.

October 2008.

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail

[MIME] Freed, N. and N. Borenstein, "Multipurpose Internet Mail

Extensions (MIME) Part One: Format of Internet Message

Extensions (MIME) Part One: Format of Internet Message

Bodies", RFC 2045, November 1996.

Bodies", RFC 2045, November 1996.

skipping to change at page 46, line 46

skipping to change at page 53, line 46

[DKIM-DEPLOYMENT]

[DKIM-DEPLOYMENT]

Hansen, T., Siegel, E., Crocker, D., and P. Hallam-Baker,

Hansen, T., Siegel, E., Crocker, D., and P. Hallam-Baker,

"DomainKeys Identified Mail (DKIM) Development,

"DomainKeys Identified Mail (DKIM) Development,

Deployment, and Operations", RFC 5863, May 2010.

Deployment, and Operations", RFC 5863, May 2010.

[DKIM-OVERVIEW]

[DKIM-OVERVIEW]

Hansen, T., Crocker, D., and P. Hallam-Baker, "DomainKeys

Hansen, T., Crocker, D., and P. Hallam-Baker, "DomainKeys

Identified Mail (DKIM) Service Overview", RFC 5585,

Identified Mail (DKIM) Service Overview", RFC 5585,

July 2009.

July 2009.

[DKIM-THREATS]

Fenton, J., "Analysis of Threats Motivating DomainKeys

Identified Mail (DKIM)", RFC 4686, September 2006.

[DNSSEC] Arends, R., Austein, R., Larson, M., Massey, D., and S.

Rose, "DNS Security Introduction and Requirements",

RFC 4033, March 2005.

[DSN] Moore, K. and G. Vaudreuil, "An Extensible Message Format

[DSN] Moore, K. and G. Vaudreuil, "An Extensible Message Format

for Delivery Status Notifications", RFC 3464,

for Delivery Status Notifications", RFC 3464,

January 2003.

January 2003.

[EMAIL-ARCH]

[EMAIL-ARCH]

Crocker, D., "Internet Mail Architecture", RFC 5598,

Crocker, D., "Internet Mail Architecture", RFC 5598,

July 2009.

July 2009.

[IANA-CONSIDERATIONS]

[IANA-CONSIDERATIONS]

Narten, T. and H. Alvestrand, "Guidelines for Writing an

Narten, T. and H. Alvestrand, "Guidelines for Writing an

IANA Considerations Section in RFCs", BCP 26, RFC 5226,

IANA Considerations Section in RFCs", BCP 26, RFC 5226,

May 2008.

May 2008.

[IODEF] Danyliw, R., Meijer, J., and Y. Demchenko, "The Incident

[IODEF] Danyliw, R., Meijer, J., and Y. Demchenko, "The Incident

Object Description Exchange Format", RFC 5070,

Object Description Exchange Format", RFC 5070,

December 2007.

December 2007.

[ROLES] Crocker, D., "Mailbox Names for Common Services, Roles and

[ROLES] Crocker, D., "Mailbox Names for Common Services, Roles and

Functions", RFC 2142, May 1997.

Functions", RFC 2142, May 1997.

URIs

[1] http://dmarc.org

Appendix A. Technology Considerations

Appendix A. Technology Considerations

This section documents some design decisions that were made in the

This section documents some design decisions that were made in the

development of DMARC. Specifically, addressed here are some

development of DMARC. Specifically, addressed here are some

suggestions that were considered but not included in the design.

suggestions that were considered but not included in the design.

This text is included to explain why they were considered and not

This text is included to explain why they were considered and not

included in this version.

included in this version.

A.1. S/MIME

A.1. S/MIME

skipping to change at page 47, line 42

skipping to change at page 55, line 6

DMARC is focused on authentication at the domain level (i.e., the

DMARC is focused on authentication at the domain level (i.e., the

ADMD taking responsibility for the message), while S/MIME is really

ADMD taking responsibility for the message), while S/MIME is really

intended for user-to-user authentication and encryption. This alone

intended for user-to-user authentication and encryption. This alone

appears to make it a bad fit for DMARC's goals.

appears to make it a bad fit for DMARC's goals.

S/MIME also suffers from the heavyweight problem of Public Key

S/MIME also suffers from the heavyweight problem of Public Key

Infrastructure, which means distribution of keys used to verify

Infrastructure, which means distribution of keys used to verify

signatures needs to be incorporated. In many instances, this alone

signatures needs to be incorporated. In many instances, this alone

is a showstopper. There have been consistent promises that PKI

is a showstopper. There have been consistent promises that PKI

usability and deployment will improve, but these have yet to

usability and deployment will improve, but these have yet to

materialize. DMARC can revisit this chouice after those barriers are

materialize. DMARC can revisit this choice after those barriers are

addressed.

addressed.

S/MIME has extensive deployment in specific market segments

S/MIME has extensive deployment in specific market segments

(government, for example), but does not enjoy similar widespread

(government, for example), but does not enjoy similar widespread

deployment over the general Internet, and this shows no signs of

deployment over the general Internet, and this shows no signs of

changing. DKIM and SPF both are deployed widely over the general

changing. DKIM and SPF both are deployed widely over the general

Internet and their adoption rates continue to be positive.

Internet and their adoption rates continue to be positive.

Finally, experiements have shown that including S/MIME support in the

Finally, experiements have shown that including S/MIME support in the

initial version of DMARC would neither cause nor enable a substantial

initial version of DMARC would neither cause nor enable a substantial

skipping to change at page 48, line 23

skipping to change at page 55, line 35

Specifically, consider a Domain Owner that has deployed one of the

Specifically, consider a Domain Owner that has deployed one of the

technologies, and that technology fails for some messages, but such

technologies, and that technology fails for some messages, but such

failures don't cause enforcement action. Deploying DMARC would cause

failures don't cause enforcement action. Deploying DMARC would cause

enforcement action for policies other than "none", which would appear

enforcement action for policies other than "none", which would appear

to exclude participation by that Domain Owner.

to exclude participation by that Domain Owner.

The DMARC development team evaluated the idea of policy exception

The DMARC development team evaluated the idea of policy exception

mechanisms on several occasions and invariably concluded that there

mechanisms on several occasions and invariably concluded that there

was not a strong enough use case to include them. The specific

was not a strong enough use case to include them. The specific

target audience for DMARC does not appear to have concerns about the

target audience for DMARC does not appear to have concerns about the

failure modes of one or the other being a barried to DMARC's

failure modes of one or the other being a barrier to DMARC's

adoption.

adoption.

In the scenario described above, the Domain Owner has a few options:

In the scenario described above, the Domain Owner has a few options:

1. Tighten up its infrastructure to minimize the failure modes of

1. Tighten up its infrastructure to minimize the failure modes of

the single deployed technology.

the single deployed technology.

2. Deploy the other supported authentication mechanism, to offset

2. Deploy the other supported authentication mechanism, to offset

the failure modes of the first.

the failure modes of the first.

skipping to change at page 49, line 37

skipping to change at page 57, line 7

mandatory check of this nature. It was ultimately removed, as the

mandatory check of this nature. It was ultimately removed, as the

method's error rate was too high without substantial manual tuning

method's error rate was too high without substantial manual tuning

and heuristic work. There are indeed use cases this work needs to

and heuristic work. There are indeed use cases this work needs to

address where such a method would return a negative result about a

address where such a method would return a negative result about a

domain for which reporting is desired, such as a registered domain

domain for which reporting is desired, such as a registered domain

name that never sends legitimate mail and thus has none of these

name that never sends legitimate mail and thus has none of these

records present in the DNS.

records present in the DNS.

A.5. Issues With ADSP In Operation

A.5. Issues With ADSP In Operation

DMARC has been chacarterized as a "super-ADSP" of sorts.

DMARC has been characterized as a "super-ADSP" of sorts.

Contributors to DMARC have compiled a list of issues associated with

Contributors to DMARC have compiled a list of issues associated with

ADSP, gained from operational experience, that have influenced the

ADSP, gained from operational experience, that have influenced the

direction of DMARC:

direction of DMARC:

1. ADSP has no support for subdomains, i.e., the ADSP record for

1. ADSP has no support for subdomains, i.e., the ADSP record for

example.com does not explicitly or implicitly apply to

example.com does not explicitly or implicitly apply to

subdomain.example.com. If wildcarding is not applied, then

subdomain.example.com. If wildcarding is not applied, then

spammers can trivially bypass ADSP by sending from a subdomain

spammers can trivially bypass ADSP by sending from a subdomain

with no ADSP record.

with no ADSP record.

skipping to change at page 54, line 27

skipping to change at page 61, line 46

"dmarc-feedback@example.com"

"dmarc-feedback@example.com"

("rua=mailto:dmarc-feedback@example.com")

("rua=mailto:dmarc-feedback@example.com")

o All messages from this organizational domain are subject to this

o All messages from this organizational domain are subject to this

policy (no "pct" tag present, so the default of 100% applies)

policy (no "pct" tag present, so the default of 100% applies)

The DMARC policy record might look like this when retrieved using a

The DMARC policy record might look like this when retrieved using a

common command-line tool:

common command-line tool:

% dig +short TXT _dmarc.example.com.

% dig +short TXT _dmarc.example.com.

"v=DMARC1\; p=none\; rua=mailto:dmarc-feedback@example.com"

"v=DMARC1; p=none; rua=mailto:dmarc-feedback@example.com"

To publish such a record, the DNS administrator for the Domain Owner

To publish such a record, the DNS administrator for the Domain Owner

creates an entry like the following in the appropriate zone file

creates an entry like the following in the appropriate zone file

(following the conventional zone file format):

(following the conventional zone file format):

; DMARC record for the domain example.com

; DMARC record for the domain example.com

_dmarc IN TXT ( "v=DMARC1; p=none; "

_dmarc IN TXT ( "v=DMARC1; p=none; "

"rua=mailto:dmarc-feedback@example.com" )

"rua=mailto:dmarc-feedback@example.com" )

B.2.2. Entire Domain, Monitoring Only, Per-Message Reports

B.2.2. Entire Domain, Monitoring Only, Per-Message Reports

The Domain Owner from the previous example has used the aggregate

The Domain Owner from the previous example has used the aggregate

reporting to discover some messaging systems that had not yet

reporting to discover some messaging systems that had not yet

implemented DKIM correctly, but they are still seeing periodic

implemented DKIM correctly, but they are still seeing periodic

authentication failures. In order to diagnose these intermittent

authentication failures. In order to diagnose these intermittent

problems they wish to request per-message forensic reports when

problems they wish to request per-message failure reports when

authentication failures occur.

authentication failures occur.

Not all Receivers will honor such a request, but the Domain Owner

Not all Receivers will honor such a request, but the Domain Owner

feels that any reports it does receive will be helpful enough to

feels that any reports it does receive will be helpful enough to

justify publishing this record. The default per-message report

justify publishing this record. The default per-message report

format ([AFRF]) meets the Domain Owner's needs in this scenario.

format ([AFRF]) meets the Domain Owner's needs in this scenario.

The Domain Owner accomplishes this by adding the following to its

The Domain Owner accomplishes this by adding the following to its

policy record from Appendix B.2):

policy record from Appendix B.2):

o Per-message forensic reports should be sent via email to the

o Per-message failure reports should be sent via email to the

address "auth-reports@example.com"

address "auth-reports@example.com"

("ruf=mailto:auth-reports@example.com")

("ruf=mailto:auth-reports@example.com")

The DMARC policy record might look like this when retrieved using a

The DMARC policy record might look like this when retrieved using a

common command-line tool (the output shown would appear on a single

common command-line tool (the output shown would appear on a single

line, but is wrapped here for publication):

line, but is wrapped here for publication):

% dig +short TXT _dmarc.example.com.

% dig +short TXT _dmarc.example.com.

"v=DMARC1\; p=none\; rua=mailto:dmarc-feedback@example.com\;

"v=DMARC1; p=none; rua=mailto:dmarc-feedback@example.com;

ruf=mailto:auth-reports@example.com"

ruf=mailto:auth-reports@example.com"

To publish such a record, the DNS administrator for the Domain Owner

To publish such a record, the DNS administrator for the Domain Owner

might create an entry like the following in the appropriate zone file

might create an entry like the following in the appropriate zone file

(following the conventional zone file format):

(following the conventional zone file format):

; DMARC record for the domain example.com

; DMARC record for the domain example.com

_dmarc IN TXT ( "v=DMARC1; p=none; "

_dmarc IN TXT ( "v=DMARC1; p=none; "

"rua=mailto:dmarc-feedback@example.com; "

"rua=mailto:dmarc-feedback@example.com; "

"ruf=mailto:auth-reports@example.com" )

"ruf=mailto:auth-reports@example.com" )

B.2.3. Per-Message Forensic Reports Directed to Third Party

B.2.3. Per-Message Failure Reports Directed to Third Party

The Domain Owner from the previous example is maintaining the same

The Domain Owner from the previous example is maintaining the same

policy, but now wishes to have a third party receive and process the

policy, but now wishes to have a third party receive and process the

per-message forensic reports. Again, not all Receivers will honor

per-message failure reports. Again, not all Receivers will honor

this request, but those that do may implement additional checks to

this request, but those that do may implement additional checks to

validate that the third party wishes to receive the forensic reports

validate that the third party wishes to receive the failure reports

for this domain.

for this domain.

The Domain Owner needs to alter its policy record from Appendix B.2.2

The Domain Owner needs to alter its policy record from Appendix B.2.2

as follows:

as follows:

o Per message forensic reports should be send via email to the

o Per message failure reports should be send via email to the

address "auth-reports@thirdparty.example.net"

address "auth-reports@thirdparty.example.net"

("ruf=mailto:auth-reports@thirdparty.example.net")

("ruf=mailto:auth-reports@thirdparty.example.net")

The DMARC policy record might look like this when retrieved using a

The DMARC policy record might look like this when retrieved using a

common command-line tool (the output shown would appear on a single

common command-line tool (the output shown would appear on a single

line, but is wrapped here for publication):

line, but is wrapped here for publication):

% dig +short TXT _dmarc.example.com.

% dig +short TXT _dmarc.example.com.

"v=DMARC1\; p=none\; rua=mailto:dmarc-feedback@example.com\;

"v=DMARC1; p=none; rua=mailto:dmarc-feedback@example.com;

ruf=mailto:auth-reports@thirdparty.example.net"

ruf=mailto:auth-reports@thirdparty.example.net"

To publish such a record, the DNS administrator for the Domain Owner

To publish such a record, the DNS administrator for the Domain Owner

might create an entry like the following in the appropriate zone file

might create an entry like the following in the appropriate zone file

(following the conventional zone file format):

(following the conventional zone file format):

; DMARC record for the domain example.com

; DMARC record for the domain example.com

_dmarc IN TXT ( "v=DMARC1; p=none; "

_dmarc IN TXT ( "v=DMARC1; p=none; "

"rua=mailto:dmarc-feedback@example.com; "

"rua=mailto:dmarc-feedback@example.com; "

"ruf=mailto:auth-reports@thirdparty.example.net" )

"ruf=mailto:auth-reports@thirdparty.example.net" )

Because the address used in the "ruf" tag is outside the

Because the address used in the "ruf" tag is outside the

Organizational Domain in whichthat this record is published,

Organizational Domain in which this record is published, conforming

conforming Receivers will implement additional checks as described in

Receivers will implement additional checks as described in

Section 8.2 of this document. In order to pass these additional

Section 8.2 of this document. In order to pass these additional

checks, the third party will need to publish an additional DNS record

checks, the third party will need to publish an additional DNS record

as follows:

as follows:

o Given the DMARC record published by the Domain Owner at

o Given the DMARC record published by the Domain Owner at

"_dmarc.example.com", the DNS administrator for the third party

"_dmarc.example.com", the DNS administrator for the third party

will need to publish a TXT resource record at

will need to publish a TXT resource record at

"example.com._report._dmarc.thirdparty.example.net" with the value

"example.com._report._dmarc.thirdparty.example.net" with the value

"v=DMARC1".

"v=DMARC1".

skipping to change at page 56, line 40

skipping to change at page 64, line 15

line, but is wrapped here for publication):

line, but is wrapped here for publication):

% dig +short TXT example.com._report._dmarc.thirdparty.example.net

% dig +short TXT example.com._report._dmarc.thirdparty.example.net

"v=DMARC1"

"v=DMARC1"

To publish such a record, the DNS administrator for example.net might

To publish such a record, the DNS administrator for example.net might

create an entry like the following in the appropriate zone file

create an entry like the following in the appropriate zone file

(following the conventional zone file format):

(following the conventional zone file format):

; zone file for thirdparty.example.net

; zone file for thirdparty.example.net

; Accept DMARC forensic reports on behalf of example.com

; Accept DMARC failure reports on behalf of example.com

example.com._report._dmarc IN TXT "v=DMARC1"

example.com._report._dmarc IN TXT "v=DMARC1"

Intermediaries and other third parties should refer to Section 8.2

Intermediaries and other third parties should refer to Section 8.2

for the full details of this mechanism.

for the full details of this mechanism.

B.2.4. Sub-Domain, Sampling, and Multiple Aggregate Report URIs

B.2.4. Sub-Domain, Sampling, and Multiple Aggregate Report URIs

The Domain Owner has implemented SPF and DKIM in a sub-domain used

The Domain Owner has implemented SPF and DKIM in a sub-domain used

for pre-production testing of messaging services. It now wishes to

for pre-production testing of messaging services. It now wishes to

request that participating receivers act to reject messages from this

request that participating receivers act to reject messages from this

sub-domain that fail to authenticate.

sub-domain that fail to authenticate.

As a first step it will ask that a portion (1/4 in this example) of

As a first step it will ask that a portion (1/4 in this example) of

failing messages be quarantined, enabling examination of messages

failing messages be quarantined, enabling examination of messages

sent to mailboxes hosted by participating receivers. Aggregate

sent to mailboxes hosted by participating receivers. Aggregate

feedback reports will be sent to a mailbox within the Organizational

feedback reports will be sent to a mailbox within the Organizational

Domain, and to a mailbox at a third party selected and authorized to

Domain, and to a mailbox at a third party selected and authorized to

receive same by the Domain Owner.

receive same by the Domain Owner. Aggregate reports sent to the

third party are limited to a maximum size of ten megabytes.

The Domain Owner will accomplish this by constructing a policy record

The Domain Owner will accomplish this by constructing a policy record

indicating that:

indicating that:

o The version of DMARC being used is "DMARC1" ("v=DMARC1")

o The version of DMARC being used is "DMARC1" ("v=DMARC1")

o It is applied only to this sub-domain (record is published at

o It is applied only to this sub-domain (record is published at

"_dmarc.test.example.com" and not "_dmarc.example.com")

"_dmarc.test.example.com" and not "_dmarc.example.com")

o Receivers should quarantine messages from this organizational

o Receivers should quarantine messages from this organizational

domain that fail to authenticate ("p=quarantine")

domain that fail to authenticate ("p=quarantine")

o Aggregate feedback reports should be sent via email to the

o Aggregate feedback reports should be sent via email to the

addresses "dmarc-feedback@example.com" and

addresses "dmarc-feedback@example.com" and

"example-tld-test@thirdparty.example.net" ("rua=mailto:dmarc-

"example-tld-test@thirdparty.example.net", with the latter

feedback@example.com,mailto:tld-test@thirdparty.example.net")

subjected to a maximum size limit ("rua=mailto:dmarc-feedback@

example.com,mailto:tld-test@thirdparty.example.net!10m")

o 25% of messages from this Organizational Domain are subject to

o 25% of messages from this Organizational Domain are subject to

action based on this policy ("pct=25")

action based on this policy ("pct=25")

The DMARC policy record might look like this when retrieved using a

The DMARC policy record might look like this when retrieved using a

common command-line tool (the output shown would appear on a single

common command-line tool (the output shown would appear on a single

line, but is wrapped here for publication):

line, but is wrapped here for publication):

% dig +short TXT _dmarc.test.example.com

% dig +short TXT _dmarc.test.example.com

"v=DMARC1\; p=quarantine\; rua=mailto:dmarc-feedback@example.com,

"v=DMARC1; p=quarantine; rua=mailto:dmarc-feedback@example.com,

mailto:tld-test@thirdparty.example.net\; pct=25"

mailto:tld-test@thirdparty.example.net!10m; pct=25"

To publish such a record, the DNS administrator for the Domain Owner

To publish such a record, the DNS administrator for the Domain Owner

might create an entry like the following in the appropriate zone

might create an entry like the following in the appropriate zone

file:

file:

; DMARC record for the domain example.com

; DMARC record for the domain example.com

_dmarc IN TXT ( "v=DMARC1; p=quarantine; "

_dmarc IN TXT ( "v=DMARC1; p=quarantine; "

"rua=mailto:dmarc-feedback@example.com,"

"rua=mailto:dmarc-feedback@example.com,"

"mailto:tld-test@thirdparty.example.net; "

"mailto:tld-test@thirdparty.example.net!10m; "

"pct=25" )

"pct=25" )

B.2.5. Third Party Sender and Identifier Alignment

B.2.5. Third Party Sender and Identifier Alignment

The Domain Owner only uses the top-level domain for email, and uses a

The Domain Owner only uses the top-level domain for email, and uses a

third-party sender for some marketing message traffic. It has

third-party sender for some marketing message traffic. It has

implemented SPF and DKIM across its in-house infrastructure and

implemented SPF and DKIM across its in-house infrastructure and

required the third-party to do the same. A monitoring period has

required the third-party to do the same. A monitoring period has

shown that the Domain Owner and the third-party sender are both

shown that the Domain Owner and the third-party sender are both

executing well with respect to email authentication measures.

executing well with respect to email authentication measures.

skipping to change at page 58, line 50

skipping to change at page 66, line 25

o Aggregate feedback reports should be sent via email to the address

o Aggregate feedback reports should be sent via email to the address

"dmarc-feedback@example.com"

"dmarc-feedback@example.com"

("rua=mailto:dmarc-feedback@example.com")

("rua=mailto:dmarc-feedback@example.com")

The DMARC policy record might look like this when retrieved using a

The DMARC policy record might look like this when retrieved using a

common command-line tool (the output shown would appear on a single

common command-line tool (the output shown would appear on a single

line, but is wrapped here for publication):

line, but is wrapped here for publication):

% dig +short TXT _dmarc.example.com

% dig +short TXT _dmarc.example.com

"v=DMARC1\; p=reject\; adkim=s\; aspf=r\;

"v=DMARC1; p=reject; adkim=s; aspf=r;

rua=mailto:dmarc-feedback@example.com"

rua=mailto:dmarc-feedback@example.com"

To publish such a record, the DNS administrator for the Domain Owner

To publish such a record, the DNS administrator for the Domain Owner

might create an entry like the following in the appropriate zone

might create an entry like the following in the appropriate zone

file:

file:

; DMARC record for the domain example.com

; DMARC record for the domain example.com

_dmarc IN TXT ( "v=DMARC1; p=reject; adkim=s; aspf=r; "

_dmarc IN TXT ( "v=DMARC1; p=reject; adkim=s; aspf=r; "

"rua=mailto:dmarc-feedback@example.com" )

"rua=mailto:dmarc-feedback@example.com" )

skipping to change at page 60, line 8

skipping to change at page 67, line 31

o Aggregate reports should be sent via email to the addresses

o Aggregate reports should be sent via email to the addresses

"dmarc-feedback@example.com" and

"dmarc-feedback@example.com" and

"customer-analysis@thirdparty.example.net" ("rua=mailto:dmarc-

"customer-analysis@thirdparty.example.net" ("rua=mailto:dmarc-

feedback@example.com,mailto:customer-data@thirdparty.example.net")

feedback@example.com,mailto:customer-data@thirdparty.example.net")

The DMARC policy record might look like this when retrieved using a

The DMARC policy record might look like this when retrieved using a

common command-line tool (the output shown would appear on a single

common command-line tool (the output shown would appear on a single

line, but is wrapped here for publication):

line, but is wrapped here for publication):

% dig +short TXT _dmarc.example.com

% dig +short TXT _dmarc.example.com

"v=DMARC1\; p=quarantine\; sp=reject\; ri=14400\;

"v=DMARC1; p=quarantine; sp=reject; ri=14400;

rua=mailto:dmarc-feedback@example.com,

rua=mailto:dmarc-feedback@example.com,

mailto:customer-data@thirdparty.example.net"

mailto:customer-data@thirdparty.example.net"

To publish such a record, the DNS administrator for the Domain Owner

To publish such a record, the DNS administrator for the Domain Owner

might create an entry like the following in the appropriate zone

might create an entry like the following in the appropriate zone

file:

file:

; DMARC record for the domain example.com

; DMARC record for the domain example.com

_dmarc IN TXT ( "v=DMARC1; p=quarantine; sp=reject; "

_dmarc IN TXT ( "v=DMARC1; p=quarantine; sp=reject; "

"rua=mailto:dmarc-feedback@example.com,"

"rua=mailto:dmarc-feedback@example.com,"

skipping to change at page 61, line 32

skipping to change at page 69, line 7

the Mail Receiver applies the DMARC-record-specified policy.

the Mail Receiver applies the DMARC-record-specified policy.

However, before this action is taken, the Mail Receiver can consult

However, before this action is taken, the Mail Receiver can consult

external information to override the Domain Owner's policy. For

external information to override the Domain Owner's policy. For

example, if the Mail Receiver knows that this particular email came

example, if the Mail Receiver knows that this particular email came

from a known and trusted forwarder (that happens to break both SPF

from a known and trusted forwarder (that happens to break both SPF

and DKIM), then the Mail Receiver may choose to ignore the Domain

and DKIM), then the Mail Receiver may choose to ignore the Domain

Owner's policy.

Owner's policy.

The Mail Receiver is now ready to reply to the DATA command. If the

The Mail Receiver is now ready to reply to the DATA command. If the

DMARC check yields that the message is to be rejected, then the Mail

DMARC check yields that the message is to be rejected, then the Mail

Receiver replies with a 550 code to inform the sender of failure. If

Receiver replies with a 5xy code to inform the sender of failure. If

the DMARC check cannot be resolved due to transient network errors,

the DMARC check cannot be resolved due to transient network errors,

then the Mail Receiver replies with a 450 code to inform the sender

then the Mail Receiver replies with a 4xy code to inform the sender

as to the need to reattempt delivery later. If the DMARC check

as to the need to reattempt delivery later. If the DMARC check

yields a passing message, then the Mail Receiver continues on with

yields a passing message, then the Mail Receiver continues on with

email processing, perhaps using the result of the DMARC check as an

email processing, perhaps using the result of the DMARC check as an

input to additional processing modules such as a domain reputation

input to additional processing modules such as a domain reputation

query.

query.

Before exiting DMARC-specific processing, the Mail Receiver checks to

Before exiting DMARC-specific processing, the Mail Receiver checks to

see if the Author Domain DMARC record requests AFRF-based reporting.

see if the Author Domain DMARC record requests AFRF-based reporting.

If so, then the Mail Receiver can emit an AFRF to the reporting

If so, then the Mail Receiver can emit an AFRF to the reporting

address supplied in the DMARC record.

address supplied in the DMARC record.

At the exit of DMARC-specific processing, the Mail Receiver captures

At the exit of DMARC-specific processing, the Mail Receiver captures

(through logging or direct insertion into a data store) the result of

(through logging or direct insertion into a data store) the result of

DMARC processing. Captured information is used to build feedback for

DMARC processing. Captured information is used to build feedback for

Domain Owner consumption.

Domain Owner consumption. This is not necessary if the Domain Owner

has not requested aggregate reports, i.e., no "rua" tag was found in

the policy record.

B.3.2. Real-time Feedback Processing

B.3.2. Real-time Feedback Processing

If the DMARC record for the Author Domain of the message under

If the DMARC record for the Author Domain of the message under

processing requests [AFRF]-based reporting, then the Mail Receiver

processing requests [AFRF]-based reporting, then the Mail Receiver

can supply an AFRF report for a message that does not pass all

can supply an AFRF report for a message that does not pass all

underlying DMARC authentication checks. In other words, if any

underlying DMARC authentication checks. In other words, if any

DMARC-supporting authentication checks fail, an AFRF report should be

DMARC-supporting authentication checks fail, an AFRF report should be

generated and sent to the reporting address found in the Author

generated and sent to the reporting address found in the Author

Domain's DMARC record.

Domain's DMARC record.

skipping to change at page 63, line 26

skipping to change at page 71, line 26

This is a multipart message in MIME format.

This is a multipart message in MIME format.

------=_NextPart_000_024E_01CC9B0A.AFE54C00

------=_NextPart_000_024E_01CC9B0A.AFE54C00

Content-Type: text/plain; charset="us-ascii"

Content-Type: text/plain; charset="us-ascii"

Content-Transfer-Encoding: 7bit

Content-Transfer-Encoding: 7bit

This is an aggregate report from mail.receiver.example.

This is an aggregate report from mail.receiver.example.

------=_NextPart_000_024E_01CC9B0A.AFE54C00

------=_NextPart_000_024E_01CC9B0A.AFE54C00

Content-Type: application/zip

Content-Type: application/gzip

Content-Transfer-Encoding: base64

Content-Transfer-Encoding: base64

Content-Disposition: attachment;

Content-Disposition: attachment;

filename="mail.receiver.example!example.com!

filename="mail.receiver.example!example.com!

1013662812!1013749130.zip"

1013662812!1013749130.gz"

------=_NextPart_000_024E_01CC9B0A.AFE54C00--

------=_NextPart_000_024E_01CC9B0A.AFE54C00--

Not shown in the above example is that the Mail Receiver's feedback

Not shown in the above example is that the Mail Receiver's feedback

should be authenticated using SPF. Also, the value of the "filename"

should be authenticated using SPF. Also, the value of the "filename"

MIME parameter is wrapped for printing in this specification but

MIME parameter is wrapped for printing in this specification but

would normally appear as one continuous string.

would normally appear as one continuous string.

B.6. https Transport example

B.6. https Transport example

A DMARC record can contain an "https" reporting address, such as:

A DMARC record can contain an "https" reporting address, such as:

https:feedback.example.com/dmarc-feedback-submissions

https://feedback.example.com/dmarc-feedback-submissions

A sample aggregate report from the Mail Receiver at

A sample aggregate report from the Mail Receiver at

mail.receiver.example, being posted per the above URL via an

mail.receiver.example, being posted per the above URL via an

established secure HTTP (https) connection, might look like this:

established secure HTTP (https) connection, might look like this:

POST /dmarc-feedback-submissions HTTP/1.1

POST /dmarc-feedback-submissions HTTP/1.1

Host: feedback.example.com

Host: feedback.example.com

Subject: Report Domain: example.com

Subject: Report Domain: example.com

Submitter: mail.receiver.example

Submitter: mail.receiver.example

Report-ID: <2002.02.15.1>

Report-ID: <2002.02.15.1>

Content-Type: application/zip

Content-Type: application/gzip

Content-Length: 19191

Content-Length: 19191

Appendix C. DMARC XML Schema

Appendix C. DMARC XML Schema

The following is the proposed initial schema for producing XML

The following is the proposed initial schema for producing XML

formatted aggregate reports as described in this memo:

formatted aggregate reports as described in this memo.

NOTE: Per the definition of XML, unless otherwise specified in the

schema below, the minOccurs and maxOccurs values for each element is

set to 1.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="" title="undefined" rel="noopener noreferrer">http://dmarc.org/dmarc-xml/0.1">

targetNamespace="" title="undefined" rel="noopener noreferrer">http://dmarc.org/dmarc-xml/0.1">

specified in seconds since epoch. -->

<xs:complexType name="DateRangeType">

<xs:complexType name="DateRangeType">

xs:all

xs:all

<xs:element name="begin" type="xs:integer"/>

<xs:element name="begin" type="xs:integer"/>

skipping to change at page 67, line 18

skipping to change at page 75, line 22

type="PolicyEvaluatedType"

type="PolicyEvaluatedType"

minOccurs="0"/>

minOccurs="0"/>

<xs:complexType name="IdentifierType">

<xs:complexType name="IdentifierType">

xs:all

xs:all

<xs:element name="envelope_to" type="xs:string"

<xs:element name="envelope_to" type="xs:string"

minOccurs="0"/>

minOccurs="0"/>

<xs:element name="envelope_from" type="xs:string"

minOccurs="1"/>

<xs:element name="header_from" type="xs:string"

<xs:element name="header_from" type="xs:string"

minOccurs="1"/>

minOccurs="1"/>

Section 2.4.1. -->

<xs:simpleType name="DKIMResultType">

<xs:simpleType name="DKIMResultType">

<xs:restriction base="xs:string">

<xs:restriction base="xs:string">

skipping to change at page 67, line 43

skipping to change at page 75, line 50

<xs:enumeration value="temperror"/>

<xs:enumeration value="temperror"/>

<xs:enumeration value="permerror"/>

<xs:enumeration value="permerror"/>

<xs:complexType name="DKIMAuthResultType">

<xs:complexType name="DKIMAuthResultType">

xs:all

xs:all

<xs:element name="domain" type="xs:string"

<xs:element name="domain" type="xs:string"

minOccurs="1"/>

minOccurs="1"/>

<xs:element name="selector" type="xs:string"

minOccurs="0"/>

<xs:element name="result" type="DKIMResultType"

<xs:element name="result" type="DKIMResultType"

minOccurs="1"/>

minOccurs="1"/>

Authentication-Results -->

<xs:element name="human_result" type="xs:string"

<xs:element name="human_result" type="xs:string"

minOccurs="0"/>

minOccurs="0"/>

<xs:simpleType name="SPFDomainScope">

<xs:restriction base="xs:string">

<xs:enumeration value="helo"/>

<xs:enumeration value="mfrom"/>

<xs:simpleType name="SPFResultType">

<xs:simpleType name="SPFResultType">

<xs:restriction base="xs:string">

<xs:restriction base="xs:string">

<xs:enumeration value="none"/>

<xs:enumeration value="none"/>

<xs:enumeration value="neutral"/>

<xs:enumeration value="neutral"/>

<xs:enumeration value="pass"/>

<xs:enumeration value="pass"/>

<xs:enumeration value="fail"/>

<xs:enumeration value="fail"/>

<xs:enumeration value="softfail"/>

<xs:enumeration value="softfail"/>

<xs:enumeration value="temperror"/>

<xs:enumeration value="temperror"/>

<xs:enumeration value="permerror"/>

<xs:enumeration value="permerror"/>

<xs:complexType name="SPFAuthResultType">

<xs:complexType name="SPFAuthResultType">

xs:all

xs:all

<xs:element name="domain" type="xs:string" minOccurs="1"/>

<xs:element name="domain" type="xs:string" minOccurs="1"/>

<xs:element name="scope" type="SPFDomainScope" minOccurs="1"/>

<xs:element name="result" type="SPFResultType"

<xs:element name="result" type="SPFResultType"

minOccurs="1"/>

minOccurs="1"/>

with respect to DMARC. -->

<xs:complexType name="AuthResultType">

<xs:complexType name="AuthResultType">

xs:sequence

xs:sequence

signatures. -->

<xs:element name="dkim" type="DKIMAuthResultType"

<xs:element name="dkim" type="DKIMAuthResultType"

minOccurs="0" maxOccurs="unbounded"/>

minOccurs="0" maxOccurs="unbounded"/>

<xs:element name="spf" type="SPFAuthResultType" minOccurs="1"

<xs:element name="spf" type="SPFAuthResultType" minOccurs="1"

maxOccurs="unbounded"/>

maxOccurs="unbounded"/>

skipping to change at page 69, line 4

skipping to change at page 77, line 26

messages. -->

<xs:complexType name="RecordType">

<xs:complexType name="RecordType">

xs:sequence

xs:sequence

<xs:element name="row" type="RowType"/>

<xs:element name="row" type="RowType"/>

<xs:element name="identifiers" type="IdentifierType"/>

<xs:element name="identifiers" type="IdentifierType"/>

<xs:element name="auth_results" type="AuthResultType"/>

<xs:element name="auth_results" type="AuthResultType"/>

<xs:element name="feedback">

<xs:element name="feedback">

xs:complexType

xs:complexType

xs:sequence

xs:sequence

<xs:element name="version"

type="xs:decimal"/>

<xs:element name="report_metadata"

<xs:element name="report_metadata"

type="ReportMetadataType"/>

type="ReportMetadataType"/>

<xs:element name="policy_published"

<xs:element name="policy_published"

type="PolicyPublishedType"/>

type="PolicyPublishedType"/>

<xs:element name="record" type="RecordType"

<xs:element name="record" type="RecordType"

maxOccurs="unbounded"/>

maxOccurs="unbounded"/>

skipping to change at page 69, line 47

skipping to change at page 78, line 24

this list occurred. Additional detail can be found in the

this list occurred. Additional detail can be found in the

PolicyOverrideReason's "comment" field.

PolicyOverrideReason's "comment" field.

sampled_out: Message was exempted from application of policy by the

sampled_out: Message was exempted from application of policy by the

"pct" setting in the DMARC policy record.

"pct" setting in the DMARC policy record.

trusted_forwarder: Message authentication failure was anticipated by

trusted_forwarder: Message authentication failure was anticipated by

other evidence linking the message to a locally-maintained list of

other evidence linking the message to a locally-maintained list of

known and trusted forwarders.

known and trusted forwarders.

The "version" for reports generated per this specification MUST be

the value 1.0.

Appendix D. Public Discussion

Appendix D. Public Discussion

Public discussion of the DMARC proposal documents is taking place on

Public discussion of the DMARC proposal documents is taking place on

the dmarc-discuss@dmarc.org mailing list. Subscription is available

the dmarc-discuss@dmarc.org mailing list. Subscription is available

at http://www.dmarc.org/mailman/listinfo/dmarc-discuss.

at http://www.dmarc.org/mailman/listinfo/dmarc-discuss.

Appendix E. Acknowledgements

DMARC and the version of this document submitted to the IETF were the

result of lengthy efforts by an informal industry consortium:

DMARC.org [1]. Participating companies included: Agari, American

Greetings, AOL, Bank of America, Cloudmark, Comcast, Facebook,

Fidelity Investments, Google, JPMorgan Chase & Company, LinkedIn,

Microsoft, Netease, Paypal, ReturnPath, Trusted Domain Project, and

Yahoo!. Although the number of contributors and supporters are too

numerous to mention, notable individual contributions were made by J.

Trent Adams, Michael Adkins, Monica Chew, Dave Crocker, Tim Draegen,

Murray Kucherawy, Steve Jones, Franck Martin, Brett McDowell, and

Paul Midgen. The contributors would also like to recognize the

invaluable input and guidance that was provided by J.D. Falk.

Author's Address

Author's Address

Murray S. Kucherawy (editor)

Murray S. Kucherawy (editor)

Cloudmark

128 King St., 2nd Floor

San Francisco, CA 94107

USA

Phone: +1 415 946 3800

Email: superuser@gmail.com

Email: msk@cloudmark.com

End of changes. 144 change blocks.

309 lines changed or deleted

671 lines changed or added

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