Review of:     Authenticated Received Chain (ARC) Protocol
I-D:           draft-ietf-dmarc-arc-protocol-14
orgination
Review by:     D. Crocker
Review date:


(The usual caveat about my reviews: Comments are a mixture of major and minor, substantive and trivial, objective and stylistic. Do with them as you wish. /d)



Summary:


The draft starts using terms of art that haven't been defined yet.

Also it should do quite a bit more of cross-citing, when using a term, so the read knows where to go to find out the underlying technical detail that the term covers.


The beginning of a spec should have summary text that explains

a) explains the problem or needs space; what issue is being addressed by the spec?

b) what goals are being sought; how can the reader know whether the spec has done its job?

c) the basic approach/design of the spec; and optionally how this differs from existing, related work.

This allows a superficial reading by technical and non-technical folk, where the latter don't proceed to the rest of the document, but they walk away with a useful and accurate sense of what this spec is about.

Given the current draft's existing organization, all 3 of these should be in Section 1.


The draft does not really explain why certain mechanisms or choices are present. For example, every time there is a reference to DKIM similarities, there should be text explaining why DKIM wasn't just used.


Also, an ARC set has two signatures, rather than one.  Why?


General comments on readability:

* Make sure discussions are partitioned well, and that topics aren't conflated.

* Try for shorter sentences and make sure all sequences are extremely clear and logical -- having validation come before signing/sealing is an issue here.

* When using a term, make sure it has been defined earlier. When the term is defined externally, make sure the citation to it is precise, ie, fine-grained into the external document. (the draft does a pretty good job of this.)

* Make sure specialized terms have narrow application -- 'fail' vs. 'validate' is an example of a possible problem here, since they are formal terms.


The design of DKIM extensively considere signature survivability in transit. It's limitations in that regard are well-known. There should be some commentary about ARC on this issue. I think the substance is merely that ARC signature survivability is approximately the same as DKIM's when relaxed mode is usedm but this should be documented explicitly. In particular, any differences in survivability expected from differences in the choice of header fields that are covered should be discussed carefully. ("carefully" doesn't necessarily require verbosity...)


Organizational issue:

I'm finding myself thinking that the ARC text should be split into separate documents, but I'm not sure what to suggest. Some of the text is essentially specifying an extension to DKIM. Some of it is extending Authentication Results. Some of it is extending DMARC.

When a spec is really covering a number of separate (but related) topics, I usually find that things get /much/ simpler if they are documented separately. First, the text usually is simpler. Second, the lifecycle of the components can proceed independently.

DMARC is what's motivating this work but, really, it isn't DMARC work (in the technical sense; I'm not raising an issue about it's being in that working group.) I often note the distinction between what motivates some work, versus the nature of the work. For example, email authentication would be a good idea even if there were no abuse; but the abuse is an effective motivator.

Another attempt to summarize the nature of ARC:

ARC is a response to message handling authentication fragility (which encompsses both SPF and DKIM.) It deals with some types of fragility by providing mid-transit message analysis and signing. The analysis is to perform authentication prior to expected breakage, and then to package the analysis results for consideration by later receivers, including the final destination.

Reporting is an adjunct function. As with DMARC, it might turn out to be especially useful, but it's not a primary goal.

Yet DMARC is heavily referenced in the draft. I'd like to find a way to take it completely out of the critical path of the main document. Taking it out of everything but the Introduction would be ideal.

This permits focusing on ARC as a basic enhancement of authentication, rather than as integral with DMARC.


Detailed:

Abstract

   The Authenticated Received Chain (ARC) protocol creates a mechanism
   whereby a series of handlers of an email message can conduct
   authentication of the email message as it passes among them on the
   way to its destination, and create an attached, authenticated record
   of the status at each step along the handling path, for use by the
   final recipient in making choices about the disposition of the
   message.  Changes in the message that might break existing
   authentication mechanisms can be identified through the ARC Set of
   header fields.

Given that 'authentication' is in the title, redundant use of that core semantic word in the explanatory text "authentication of the email message" in summary statements like the Abstract is actually not very helpful. What does it mean to 'conduct' authentication of a message? It could mean many things. Which one is actually meant? We should not assume the reader has a background in this general area, nevermind this specific area.

(Yes, this is 'just' the abstract, but that's the bit of text that gets circulated, to recruit more readers. So its readability should target a wide audiencew.)

Hmmm. 'conduct' authentication sounds like verification rather than signing. The value add of ARC is that a series of handlers affix authentication information.

I suggest adding this existing, excellent sentence from the Intro:

     ARC provides an authenticated "chain of custody" for a message,
     allowing each entity that handles the message to see what entities
     handled it before, and to see what the authentication status of the
     message was at each step in the handling.

(I added 'authenticated'.)



Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
     1.1.  General Concepts  . . . . . . . . . . . . . . . . . . . .   5
     1.2.  Differences Between ARC and DKIM  . . . . . . . . . . . .   5
     1.3.  Definitions and Terminology . . . . . . . . . . . . . . .   6
       1.3.1.  Terms defined and used in this document . . . . . . .   6
       1.3.2.  Referenced Definitions  . . . . . . . . . . . . . . .   7
   2.  Protocol Elements and Features  . . . . . . . . . . . . . . .   7
     2.1.  The "ARC Set" of Header Fields  . . . . . . . . . . . . .   8
       2.1.1.  Instance Tags . . . . . . . . . . . . . . . . . . . .   9
     2.2.  Chain Validation Status . . . . . . . . . . . . . . . . .   9
     2.3.  Trace Information . . . . . . . . . . . . . . . . . . . .   9
     2.4.  Key Management  . . . . . . . . . . . . . . . . . . . . .   9
     2.5.  All Failures are Permanent  . . . . . . . . . . . . . . .  10
     2.6.  Chain of Custody  . . . . . . . . . . . . . . . . . . . .  10
     2.7.  Optional Participation  . . . . . . . . . . . . . . . . .  10
     2.8.  Broad Responsibility to Seal  . . . . . . . . . . . . . .  10
     2.9.  One Chain to Rule Them All  . . . . . . . . . . . . . . .  11
     2.10. Sealing is Always Safe  . . . . . . . . . . . . . . . . .  11
   3.  The ARC Header Fields . . . . . . . . . . . . . . . . . . . .  11
     3.1.  Instance ('i=') Tag . . . . . . . . . . . . . . . . . . .  11
     3.2.  ARC-Authentication-Results (AAR)  . . . . . . . . . . . .  12
     3.3.  ARC-Message-Signature (AMS) . . . . . . . . . . . . . . .  12
     3.4.  ARC-Seal (AS) . . . . . . . . . . . . . . . . . . . . . .  13
       3.4.1.  Covered Header Fields . . . . . . . . . . . . . . . .  13
       3.4.2.  The 'cv' Tag  . . . . . . . . . . . . . . . . . . . .  14
   4.  Verifier Actions  . . . . . . . . . . . . . . . . . . . . . .  14
     4.1.  Authentication-Results Information  . . . . . . . . . . .  15
     4.2.  Handling DNS Problems While Validating ARC  . . . . . . .  16
     4.3.  Responding to ARC Validity Violations During the SMTP
           Transaction . . . . . . . . . . . . . . . . . . . . . . .  16
   5.  Sealer Actions  . . . . . . . . . . . . . . . . . . . . . . .  16



Andersen, et al.        Expires October 25, 2018                [Page 2]

Internet-Draft ARC-Protocol April 2018


     5.1.  Marking and Sealing "cv=fail" (Invalid) Chains  . . . . .  17
   6.  Recording and Reporting the Results of ARC Evaluation . . . .  17
     6.1.  Information from an ARC Evaluation  . . . . . . . . . . .  17
     6.2.  Recording (local) ARC Evaluation Results  . . . . . . . .  17
     6.3.  DMARC Reporting of ARC Findings - Interim . . . . . . . .  18
   7.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .  18
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  18
     8.1.  Authentication-Results Method Registry Update . . . . . .  19
     8.2.  Email Authentication Result Names Registry Update . . . .  19
     8.3.  Definitions of the ARC header fields  . . . . . . . . . .  19
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  20
     9.1.  Header Size . . . . . . . . . . . . . . . . . . . . . . .  20
     9.2.  DNS Operations  . . . . . . . . . . . . . . . . . . . . .  20
     9.3.  Message Content Suspicion . . . . . . . . . . . . . . . .  21
   10. Evaluating the Efficacy of the ARC Protocol (Experimental
       Considerations) . . . . . . . . . . . . . . . . . . . . . . .  21
     10.1.  Success Consideration  . . . . . . . . . . . . . . . . .  21
     10.2.  Failure Considerations . . . . . . . . . . . . . . . . .  22
     10.3.  Open Questions . . . . . . . . . . . . . . . . . . . . .  22
       10.3.1.  Value of the ARC-Seal (AS) Header  . . . . . . . . .  22
       10.3.2.  DNS Overhead . . . . . . . . . . . . . . . . . . . .  22
       10.3.3.  Distinguishing Valuable from Worthless Trace
                Information  . . . . . . . . . . . . . . . . . . . .  22
   11. Implementation Status . . . . . . . . . . . . . . . . . . . .  23
     11.1.  GMail test reflector and incoming validation . . . . . .  24
     11.2.  AOL test reflector and internal tagging  . . . . . . . .  24
     11.3.  dkimpy . . . . . . . . . . . . . . . . . . . . . . . . .  24
     11.4.  OpenARC  . . . . . . . . . . . . . . . . . . . . . . . .  25
     11.5.  Mailman 3.2 patch  . . . . . . . . . . . . . . . . . . .  25
     11.6.  Copernica/MailerQ web-based validation . . . . . . . . .  25
     11.7.  Rspamd . . . . . . . . . . . . . . . . . . . . . . . . .  26
     11.8.  PERL MAIL::DKIM module . . . . . . . . . . . . . . . . .  26
     11.9.  PERL Mail::Milter::Authentication module . . . . . . . .  27
     11.10. Sympa List Manager . . . . . . . . . . . . . . . . . . .  27
     11.11. Oracle Messaging Server  . . . . . . . . . . . . . . . .  27
     11.12. MessageSystems Momentum and PowerMTA platforms . . . . .  28
   12. References  . . . . . . . . . . . . . . . . . . . . . . . . .  28
     12.1.  Normative References . . . . . . . . . . . . . . . . . .  28
     12.2.  Informative References . . . . . . . . . . . . . . . . .  29
     12.3.  URIs . . . . . . . . . . . . . . . . . . . . . . . . . .  30
   Appendix A.  Appendix A - Design Requirements . . . . . . . . . .  31
     A.1.  Primary Design Criteria . . . . . . . . . . . . . . . . .  31
     A.2.  Out of Scope  . . . . . . . . . . . . . . . . . . . . . .  31
   Appendix B.  Appendix B - Example Usage . . . . . . . . . . . . .  31
     B.1.  Example 1: Simple mailing list  . . . . . . . . . . . . .  31
       B.1.1.  Here's the message as it exits the Origin:  . . . . .  31
       B.1.2.  Message is then received at example.org . . . . . . .  32
       B.1.3.  Example 1: Message received by Recipient  . . . . . .  34



Andersen, et al.        Expires October 25, 2018                [Page 3]

Internet-Draft ARC-Protocol April 2018


     B.2.  Example 2: Mailing list to forwarded mailbox  . . . . . .  35
       B.2.1.  Here's the message as it exits the Origin:  . . . . .  35
       B.2.2.  Message is then received at example.org . . . . . . .  36
       B.2.3.  Example 2: Message received by Recipient  . . . . . .  40
     B.3.  Example 3: Mailing list to forwarded mailbox with source   42
       B.3.1.  Here's the message as it exits the Origin:  . . . . .  42
       B.3.2.  Message is then received at example.org . . . . . . .  43
       B.3.3.  Example 3: Message received by Recipient  . . . . . .  48
   Appendix C.  Acknowledgements . . . . . . . . . . . . . . . . . .  50
   Appendix D.  Comments and Feedback  . . . . . . . . . . . . . . .  51
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  51

1.  Introduction

This initial part of this section should lay out the nature of the problem being solved and the nature of the benefit being sought. I think it does a reasonable job of this.

   Modern email authentication techniques such as the Sender Policy
   Framework (SPF) [RFC7208] and DomainKeys Identified Mail (DKIM)
   [RFC6376] have become common.  However, their end-to-end utility is
   limited by the effects of intermediaries along the transmission path,
   which either are not listed (for SPF) or which break digital
   signatures (for DKIM).  These issues are described in substantial
   detail in those protocols' defining documents as well as in [RFC6377]
   and [RFC7960].

   Technologies that build upon the use of SPF and DKIM can reduce the
   success of fraudulent email campaigns.  To this end, Domain-based
   Mail Authentication, Reporting and Conformance (DMARC) [RFC7489],
   validates the domain of the RFC5322.From header field.  However its
   use along email transmission paths that have independent
   intermediaries, such as some forwarders and essentially all mailing
   list services, produces false positive rejections that are
   problematic, both for the message authors, the intermediary
   service(s), and for those they are interacting with.

   [RFC7960] documented the need for a mechanism which would survive
   legitimate alteration of a message, in spite of breaking the
   associated SPF and DKIM information so that the end receiver

     breaking the associated SPF and DKIM information
     ->
     associated SPF and DKIM information that is broken

(subtle distinction. The first ARC signer presumably did the breaking, but later signers presumably didn't...)


   system(s) can avoid those false positive rejections on delivery.
   Authenticated Received Chain (ARC) builds upon DKIM mechanisms to
   provide a sequence of signatures that provide a view of the handling
   sequence for a message, especially the points where alterations of
   the content might have occurred.  Equipped with this more complete

     Authenticated Received Chain (ARC) adapts DKIM so that signatures
     are affixed to the message, as a recorded audit of the message
     handling sequence, especially...


   information, the recipient system(s) can make a more informed
   handling choice, reducing or eliminating the rejections that would

     handling -> disposition

(handling includes relaying, and that's not what is meant here.)


   occur with the use of DKIM and/or SPF alone.








Andersen, et al.        Expires October 25, 2018                [Page 4]

Internet-Draft ARC-Protocol April 2018


1.1.  General Concepts

My hope, for a sub-section like this, is that it supplies enough detail to be useful for a non-technical reader to understand the basic approach ARC is taking to solve the problem layed out in the initial part of the Introduction.


   ARC provides a "chain of custody" for a message, allowing each entity
   that handles the message to see what entities handled it before, and
   to see what the authentication status of the message was at each step
   in the handling.  The handling entity can then put its own entry into
   the chain of custody and then relay the message to the next handler.

This section is missing quite a bit of conceptual explanation for ARC's purpose and design. I suggest adding something like this here:

     The ARC chain of custody provides information to augment receiver
     analysis, when the authentication information provided by the
     originator fails.  ARC supplies related analysis information
     that is obtained during transit.

     ARC adds intermediate analysis report information to the message,
     along with two signatures.  The first signs the message, itself, in
     a manner that is similar to DKIM.  The second signs the chain of
     signatures, by ARC-participating intermediaries, thereby creating
     an authenticated chain of custody.



   When the message reaches final delivery, the decision to accept and
   deliver the message, or, alternatively, to reject, discard, or
   quarantine it, can take the chain of custody into account, applying
   local policy in addition to policies advertised by the (purported)
   sending domain.  Consider, for example, this scenario:

     applying ->  evaluating whether to apply

(btw, why plural 'policies'? DMARC asserts a single policy.)


   1.  A sender from mysender.example posts a message to a mailing list
       hosted at listmania.example;

   2.  The mailing list modifies the message by prepending the list name
       to the subject line, then sends it to the subscribers;

   3.  One of the subscribers is [email protected], which
       receives the message from listmania.example.

   Assuming the original message was DKIM-signed and mysender.example
   published an SPF record, the handling by the mailing list will break
the DKIM signature because of the message modification, and the forwarding will cause the SPF check to fail in the next step. But
   listmania.example can add ARC headers to the message to add itself to
   the document's chain of custody.  When mail.service.example sees the
   message, it can see that SPF and DKIM validation fail, but it can
   also see that both of these succeeded when they were checked by
   listmania.example, and can verify listmania's assertion.

     but it can see that listmania.example reports that it succeeded
     when that site received the message.

(the reason for suggesting the wording change is to move from implying that it actually succeeded to the more tentative -- but accurate -- fact that listmania's claim of success requires trusting listmania... IMO this essential distinction cannot be stressed enough, about ARC.)



   As part of its evaluation of the message for delivery,
   mail.service.example can see that mysender.example publishes a DMARC
   policy asking that unauthenticated messages be rejected.  But is can
   also see the assertion by listmania.example that the message was
   correctly authenticated when the message arrived there, and if it
   accepts that assertion, it can accept the message for further
   processing, rather than reject it, based on the additional
   information that ARC has provided.

This is pedantic, but I suggest having a paragraph break for the last part, to so that this essential point is harder to miss. Hence:

      If mail.service.example accepts the assertion by the intermediary,
     listmania.example, then it can accept the message...



1.2.  Differences Between ARC and DKIM

There should probably be some text here that explain why these differences are needed. That is, answer the question: Why not just use DKIM?

(BTW, the early discussions consider differences that would make the signature somewhat more survivable during transit, but there's no reference to that here. I don't know whether that goal survived...)


   In DKIM, every participating signing agent attaches a signature that
   is based on some of the content of the message, local policy, and the
   domain name of the signing agent's Administrative Management Domain
   (ADMD).  Any verifier can process such a signature; a verified

delete 'participating'

'local policy' doesn't have any obvious meaning to me.

The domain name doesn't have to be tied to the ADMD. It usually is, but it doesn't have to be. For example, an authorized third party such as a bulk sending service might sign on behalf of a client; this practice is common. So perhaps:

   , and a domain name.

Just drop the additional detail.




Andersen, et al.        Expires October 25, 2018                [Page 5]

Internet-Draft ARC-Protocol April 2018


   signature means that the domain referenced in the signature's "d="
   parameter has some responsibility for handling the message.  An
   artifact of using digital signature technology for this means that
   verification also ensures that the portion of the message that was
   "covered" by the signature has not been altered since the signature
   was applied.  The signatures themselves are generally independent of
   one another.

   In contrast, a validated ARC Set conveys the following pieces of
   information:

ARC Set hasn't been defined, so the reader won't know what it means. For this introductory section, before technical definitions and details have been offered, I suggest keeping the discussion more generic or at least self-explanatory.

Perhaps:

In contrast, ARC supplies a set of signatures; their validation conveys...



   1.  An assertion that, at the time that the intermediary ADMD
       processed the message, the various assertions (such as SPF, DKIM-
       Signature(s) and/or ARC Chain) already attached to the message by
       other ADMDs were or were not valid;

"the intermediary ADMD"? There can be a sequence of them. I think you mean something like "the first ARC intermediary ADMD" or somesuch.



   2.  As with DKIM, an assertion that, for a validated ARC signature,
       the domain name in the signature takes some responsibility for
       handling of the message and that the covered content of the
       message is unchanged since that signature was applied;

   3.  A further assertion that binds the ARC evaluation results into
       the ARC Chain sequence.

This is a well-formed and relatively simple sentence, but I'm finding myself having no idea what it actually means. Really. I suggest re-forming the sentence to establish what the purpose/benefit of this point is.

"ARC evaluation results"? What does this mean. It hasn't been introduced yet.



1.3.  Definitions and Terminology

   This section defines terms used in the rest of the document.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP14 ([RFC2119][RFC8174]).

   Because many of the core concepts and definitions are found in
   [RFC5598], readers should to be familiar with the contents of
   [RFC5598], and in particular, the potential roles of intermediaries
   in the delivery of email.

    Many of the core concepts and definitions used here are found in
     Internet Mail Architecture [RFC5598].  So readers are encouraged to
     be familiar with it, an in particular...

(Found myself thinking it better to include the doc title and not just the citation.)



   Syntax descriptions use Augmented BNF (ABNF) [RFC5234].

1.3.1.  Terms defined and used in this document

Style suggestion:

Use hanging indents, rather than bullets, with the term unquoted and as the label. So, for example:

     ARC-Authentication-Results (AAR): an ARC header field described
     in Section 3.2.

Also, I think that the definitions section should contain actual definitions, not just pointers to other sections. The danger, of course, is the possibility of creating multiple definitions for the same term. The way to avoid that is to make sure that the later discussion of the term, supplying the technical detail, doesn't contain a 'definition'.

That is, define here, elaborate there.


   o  "ARC-Authentication-Results" (AAR) - an ARC header field described
      in Section 3.2.

   o  "ARC-Message-Signature" (AMS) - an ARC header field described in
      Section 3.3.




Andersen, et al.        Expires October 25, 2018                [Page 6]

Internet-Draft ARC-Protocol April 2018


   o  "ARC-Seal" (AS) - an ARC header field described in Section 3.4.

   o  "ARC Set" - A single group of the header fields introduced in
      Section 2.1 is called an "ARC Set".

I think the 'single group' is a group created by a single ARC participating site, yet? Making this clear, here, would be helpful.


   o  "ARC Chain" - the complete sequence of ARC Sets for a message.
      The ARC Chain represents a "chain of custody" for the message,
      recording its authentication status at each ARC-participating ADMD
      that handled the message.

1.3.2.  Referenced Definitions

Might want to move the above text that suggests familiarity with 5598 to be here, since you've got direct citations to it here.


   The following terms are defined in other RFCs.  Those definitions can
   be found as follows:

   o  ADMD - [RFC5598], Section 2.3

   o  MTA - [RFC5598], Section 4.3.2

   o  MSA - [RFC5598], Section 4.3.1

   o  MDA - [RFC5598], Section 4.3.3

   The three header fields that are part of this specification borrow
   heavily from existing specifications.  Rather than repeating all of
   the formal definitions that are being reused in ARC, this document
   only describes and specifies changes in syntax and semantics.

Presumably the above paragraph is refined by the following one, but there's nothing in the writing the makes that explicit. I suggest swapping the paragraphs, and adapting the above (with text to make it refer explicitly to the next one.)


   Language, syntax, and other details are imported from DKIM [RFC6376].
   Specific references can be found below.

2.  Protocol Elements and Features

Hmmm. As I've read through this section, I'm finding myself thinking there needs to be a distinction between core concepts, like key management and chain of custody, versus details of practice, such as all failures are permanent. And this distinction should split into two sections.


   As with other domain authentication technologies (such as SPF, DKIM,
   and DMARC), ARC makes no claims about the contents of the email
   message it has sealed.  However, for a valid and passing ARC Chain, a
   Final Receiver is able to ascertain:

"valid and passing"? what does this mean? eg, what would valid and not passing mean?

"Final Receiver" is capitalized, but hasn't been defined. I assume this is a modification of the RFC 5598 Receiver term. Might want to cite Receiver in terminology, above, and not capitalize final. (Note that because ARC covers re-posted messages that go through intermediaries such as mailing list, there really can be multiple 'receivers', in RFC 5598 terminology; so the 'final' qualifier makes sense, but it needs to be explained.)

'seal' is a term of art -- and an important one for ARC -- but it hasn't been defined.



   o  all (participating) domains that claim responsibility for handling
      (and possibly modifying) the email message in transit;

   o  trace information, including:

      *  the [RFC7601] Authentication-Results each participating ADMD
         saw; and

      *  additional data needed to compile a DMARC report for the
         sending domain.

Hmmm. This formally ties ARC to DMARC and it doesn't specify what the detail is. Since ARC really is only tied to DKIM, I suggest altering the wording to this.





Andersen, et al.        Expires October 25, 2018                [Page 7]

Internet-Draft ARC-Protocol April 2018


   Given this information, each receiver is able to make a more informed
   local policy decision regarding message processing and, ultimately,
   delivery to the end user in spite of authentication failure(s) and to
   inform the message orgination system(s) through the DMARC report(s).

     orgination -> origination

I assume there is nothing in ARC that alters the nature or detail in a DMARC report? Hence the 'inform' comment here seems to imply ARC-related detail in DMARC reports that won't be supplied...


   Every participant in an ARC Chain, except for the originating sender

   originating sender -> Originator

Another rfc 5598 term.


   and Final Receiver, is both an ARC Validator (when receiving) and
   then an ARC Sealer (when sending a message onward).

This uses detail (validator and sealer) that hasn't been defined yet. Perhaps fudge the issue:

     and final Receiver, does both validation of existing ARC headers
     and signing of new ARC information (when sending a message onward.)



   _INFORMATIONAL_: It is important to understand that validating and
   then immediately sealing a message leaves no room for message
   modification, and many early implementations of ARC did not initially
   work because both operations were performed in a single pass over the
   message.

   The following protocol features are functional parts and design
   decisions related the protocol that are not specific to either
   Validators or Sealers, but ensure that the ARC Chain conveys this
   information to a Final Receiver.

     The following features are common to participants doing either (or
     both) of validating or signing.  These ensure that the ARC Chain...



2.1.  The "ARC Set" of Header Fields

   Each "ARC Set" consists of the following three new header fields:

delete 'new'.

Explain where each set comes from.  ie, who generates a set?



   1.  ARC-Authentication-Results (referred to below as "AAR"):
       virtually identical in syntax to an Authentication-Results field
       [RFC7601], this field records the results of all message
       authentication checks done by the recording ADMD at the time the
       message arrived.  Additional information is placed in this field
       compared to a standard Authentication-Results field in order to
       support a more complete DMARC report;

What is the specific info that is additional? Put in a pointer to the AAR specification.



   2.  ARC-Message-Signature (referred to below as "AMS"): virtually
       identical in syntax to DKIM-Signature, this field contains the
       signature about the message header and body as they existed at
       the time of handling by the ADMD adding it (including any
       modifications made by the sealing ADMD); and


   header -> header fields

   about -> over

   handling -> signing

   of the handling by the ADMD... sealing ADMD)
   ->
   of the signing. The ADMD does the signing after making modifications
   to the signing.

How is this different from a DKIM signature?



   3.  ARC-Seal (referred to below as "AS"): highly similar in structure
       and format to a DKIM-Signature, this field applies a digital
       signature that protects the integrity of all three of these new
       fields when they are added by an ADMD, plus all instances of
       these fields added by prior ADMDs.

   An ARC participant always adds all of these header fields before
   relaying a message to the next handling agent _en route_ to its
   destination.  Moreover, they each have an "instance number" that
   increases with each ARC Set in the handling chain so that thei

   thei -> the




Andersen, et al.        Expires October 25, 2018                [Page 8]

Internet-Draft ARC-Protocol April 2018


   original order can be preserved and the three related header fields
   can be processed as a set.

2.1.1.  Instance Tags

   ARC includes an indicator in its header fields to show the order in
   which the header fields comprising an ARC Chain were added, and the
   specific members of each ARC Set.  This is known as the "instance",
   and the indicator is an "i=" tag/value.  That is, the members of the
   first ARC Set affixed to a message will all include "i=1".  This is
   described in detail in section Section 3.1.

2.2.  Chain Validation Status

   ARC includes a mechanism which denotes the state of the ARC Chain at
   each step.  The "chain validation status" ("cv" tag/value) is used to
   communicate the current chain status within the ARC Chain and also
   through Authentication-Results and ARC-Authentication-Results stamps
   as well as DMARC reporting.

This language seems to mean that chain status is communicated in 3 ways (cv, auth-results, and arc-auth-results.) I suspect that that is not the intended meaning, but I don't even have a guess about what is actually meant. Really.

Also, 'mechanism' might not be the most helpful word. I suspect 'indicator' is closer.



   The chain validation status has one of three possible values:

   o  none: There was no chain on the message when it arrived for
      validation; typically occurs when the message arrives at a Message
      Transfer Agent (MTA) or mediator from a Message Submission Agent
      (MSA) or when any upstream handlers may not be participating in
      ARC handling;

   o  fail: The message has a chain whose validation failed;

   o  pass: The message has a chain whose validation succeeded.

I suggest adding a pointer to the definition of chain validation (3.4.2) here, and a citing the computation of validation as per Section 4.



2.3.  Trace Information

   ARC includes trace information encoded in the AAR.  While section

trace of what? explain its nature, enough to distinguish it from a variety of reasonable other meanings. In particular, of course, how is it different from Received?


   Section 3.2 defines what information must be provided, sealing ADMDs
   may provide additional information, and validating receivers may use
   this trace information as they find it useful.

The text here isn't specifying detail, so don't use normative language.

     must be -> is

     may provide -> can provide

delete the ", and..." clause. It's using normative language but provides no substance.



2.4.  Key Management

   The public keys for ARC header fields follow the same requirements,
   syntax and semantics as those for DKIM signatures, described in
   Section 3.6 of [RFC6376].  ARC places no requirements on the
   selectors and/or domains used for the ARC header field signatures.






Andersen, et al.        Expires October 25, 2018                [Page 9]

Internet-Draft ARC-Protocol April 2018


2.5.  All Failures are Permanent

   Because ARC Chains are transmitted across multiple intermediaries,
   all errors, even temporary ones, become unrecoverable and are
   considered permanent.

   Any error validating or sealing a chain, for whatever reason, MUST
   result in a "cv=fail" verdict as documented in Section 3.4.2.

2.6.  Chain of Custody

   At a high level, an ARC Chain represents a chain of custody of
   authentication and other trace information (AAR) related to a
   message, signed by each handler of the message.  Each link in the
   chain (AMS) is designed to be brittle, insofar as it survives only
   until the next modification of the message.  However, the sequence of
   intermediaries in the handling chain (AS) is designed to remain
   intact over the entirety of the chain.

I suspect "chain of custody of authentication" is not a correct summary of what ARC does; I'm not even sure what it means. The language needs to distinguish purpose from method. Authentication is a method, not a purpose. I'd guess the summary description should be something like:

     An ARC Chain establishes a validated handling sequence for message,
     through participating email handlers of it.

Whatever the final text of such a summary winds up being, it should appear much sooner -- presumably in the Introduction or at least in the definitions -- and it shouldn't be repeated deeper in the document.

An AMS is a 'link in the chain'??? I susect not really, though I can see why it might be called that. I suspect each seal constitutes a link.



   The ARC Chain can be conceptualized through an analogy with the chain
   of custody for legal evidence.  The material evidence itself is
   sealed within an tamper-proof bag (AMS) each time.  When handed to a
   new party, that party both vouches for the state of the received
   evidence container (AAR) and signs for the evidence on a chain of
   custody report form (AS).  As with all analogies, this one should not
   be taken to interpretive extremes, but primarily used as a conceptual
   framework.

     can be conceptualized through an analogy with the
     ->
     is similar to a

(I had a 10th grade English teacher who beat my convoluted language to death, until I learned to simplify it and make it more direct. For the most part.)


     material evidence -> material evidence (the message)

     each time -> by each participating handler

The comparison to legal c-o-e gets tortured and isn't explained adequately. For example, it uses 'evidence container' as if the term is established, but it hasn't been and is used only once. And the AAR isn't the container. It's a report of the assessment of the contents in the container.



   An ARC Chain that is valid and passing has the attributes listed
   above in Section 2.

'passing'???

something like failures are permanent is not an 'attribute'. this adds to my suggestion to distinguish core concepts (possibly worth calling attributes) from practices.



2.7.  Optional Participation

   Validating an existing chain and then adding your own ARC Set to a
   message allows you to claim responsibility for handling the message
   and modifications, if any, done by your ADMD to benefit message
   delivery downstream.  However, no ADMD is obligated to perform these
   actions.

     claim responsibility -> claim some responsibility

'handling modifications'?  (the parallel construction doesn't quite work.)

     done by your ADMD to benefit message delivery downstream
     ->
     done by you.

(Not sure that use of you/your here works. At the least, the document should be reviewed carefully for the perspective of such usage, to decide whether it is consistent and accurate. I'm not objecting to the form -- though some with nitpick the informality in a spec -- but rather expressing concern that it not be inconsistent.)

     However -> NOTE:

(The however declares a contrast with the preceding text, but there isn't any contrast.)


2.8.  Broad Responsibility to Seal

   Any mediator ([RFC5598], section 5) that modifies a message may seal
   its own changes.  ARC is not solely intended for perimeter MTAs.

introduce mediator in the terminology section.

'may'?  or SHOULD?

There's nothing here that asserts or describes 'responsibility'.

Also, the language here seems to proscribe sealing for handlers that don't modify the message. Is that intended?









Andersen, et al.        Expires October 25, 2018               [Page 10]

Internet-Draft ARC-Protocol April 2018


2.9.  One Chain to Rule Them All

   A message can have only one ARC Chain on it at a time (see

   can -> MUST


   Section 3.1).  Once broken, the chain cannot be continued, as the

   cannot ->  MUST NOT (?)


   chain of custody is no longer valid and responsibility for the
   message has been lost.  For further discussion of this topic and the
   designed restriction which prevents chain continuation or re-
   establishment, see [ARC-USAGE].

2.10.  Sealing is Always Safe


Offhand, I suspect the title is not correct. Each Seal is another opportunity for failure.


   Even when an ARC Chain is valid and passes, its value is limited to
   very specific cases.  An ARC Chain is specifically designed to
   provide additional information to a receiver evaluating message
   delivery in the context of an authentication failure and otherwise be
   benign.  Specifically:

   o  properly adding an ARC Set to a message does not damage or
      invalidate an existing chain,

   o  sealing a chain when you did not modify a message does not
      negatively affect the chain, and

unless the seal later fails to validate...



   o  validating a message exposes no new threat vectors (see
      Section 9).

   _INFORMATIONAL_: If an ADMD is unsure whether it will be re-emitting
   and/or modifying a message, it may elect to seal all inbound mail.
   For complex or nested ADMD relationships such as found in some hosted
   mail solutions, this "inbound seal" can be used to facilitate
   traversal of internal boundaries as well as properly conveying
   incoming state to any egress MTAs that may need to assert a seal upon
   exit from the ADMD.  Since these internal relationships are highly
   implementation dependent, this protocol definition can not usefully
   explore such usage except to note that it is intentionally allowed
   within the scope of this specification.

3.  The ARC Header Fields

3.1.  Instance ('i=') Tag

    3.1. The Common Instance ('i=') Tag

(I found it disconcerting to have the section say header fields and have the first sub-section not be a header field. The suggested title change might avoid that reaction.)


   The header fields comprising a single ARC Set are identified by a
   common "instance" tag value.  The instance tag is a string in each
   header field value that complies with the "tag-spec" ABNF found in
   Section 3.2 of [RFC6376].  The tag-name is "i" and the value is the
   text representation of a positive integer, indicating the position in
   the ARC sequence this set occupies, where the first ARC Set is
   numbered 1.  In ABNF terms:

The second sentence is generic about all tags used in the spec, not just i=. So it should be moved elsewhere, if it isn't already redundant.





Andersen, et al.        Expires October 25, 2018               [Page 11]

Internet-Draft ARC-Protocol April 2018


      position = 1*2DIGIT ; 1 - 50
      instance = [FWS] %x69 [FWS] "=" [FWS] position [FWS] ";"

Why an upper limit of 50?


   Valid ARC Sets MUST have exactly one instance of each header field
   (of three) for a given instance value and signing algorithm.

   (_INFORMATIONAL:_ Initial development of ARC is only being done with
   a single allowed signing algorithm, but parallel work in the DCRUP
   working group [1] is expanding that.  For handling multiple signing
   algorithms, see [ARC-MULTI].)

Algorithm agility is a long-established requirement for use in security components. The approach typically defines a registry for algorithms, while specifyin the requirement that all implementations support a default.



   The 'i' tag value can range from 1-50 (inclusive).

   ARC Chains longer than the defined maximum count MUST be marked as
   failed.

   _INFORMATIONAL_: Because the AMS and AS header field values are made

   header field values -> header fields

   made up of -> use unordered


   up of tag-spec constructs, the i= tag may be found anywhere within
   the header field value, but is represented throughout this spec in

     the header field value -> the contents of the header field


   the initial position for convenience.  Implementers are encouraged to
   place the i= tag at the beginning of the field value to facilitate
   human inspection of the headers.

     Implementers -> However implementers



3.2.  ARC-Authentication-Results (AAR)

   The ARC-Authentication-Results header field is syntactically and
   semantically identical, except for the header field name itself and
   its instance tag, to an Authentication-Results header field (defined
   in Section 2.2 of [I-D-7601bis]).

     Except for the header field name itself and the presence of an
     instance tag, the ARC-Authentication-Results header field is
     syntactically and semantically identical to an Authentication-
     Results header field (defined in Section 2.2 of [I-D-7601bis]).


   Formally, the header field is specified as follows using ABNF
   [RFC5234]:

   arc-info = instance [CFWS] ";" authres-payload

     arc-info = instance [CFWS] ";" authres-payload ; per I-D-7601bis

(Note that instance /is/ order dependent in this ABNF...)


   arc-authres-header = "ARC-Authentication-Results:" [CFWS] arc-info

   The AAR MUST contain all Authentication-Results from within the
   participating ADMD, regardless of how many Authentication-Results
   headers are on the message.

   participating ADMD -> participating ADMD creating this AAR


3.3.  ARC-Message-Signature (AMS)

   The ARC-Message-Signature header field is simplified version of a
   DKIM-Signature header field [RFC6376], with the following
   modifications:

   o  There is an "i" tag, as described in Section 3.1.

Adding a tag is not a 'simplification'...





Andersen, et al.        Expires October 25, 2018               [Page 12]

Internet-Draft ARC-Protocol April 2018


   o  There is no "v" tag defined for the AMS header.  As required for
      undefined tags (in [RFC6376]), if seen, it MUST be ignored.

   ARC-related header fields (ARC-Seal, ARC-Message-Signture, ARC-
   Authentication-Results) MUST NOT be included in the content covered
   by the signature in the signature in this header field.

"by the signature in the signature"???

Anyhow this proscription seems an odd use of MUST NOT, to me. There should be a formal specification of what MUST, SHOULD, and/or MAY be included. Anything not listed there is excluded.



   The AMS SHOULD include any DKIM-Signature header fields already
   present on the message in the header fields covered by this
   signature.

"present on the message  in the header fields covered by this signature"???



   Authentication-Results header fields MUST NOT be included since they
   are likely to be deleted by downstream ADMDs (per Section 5 of
   [RFC7601]), thereby breaking the AMS signature.

3.4.  ARC-Seal (AS)

   The ARC-Seal header field is syntactically and semantically similar
   to a DKIM-Signature field, with the following exceptions:

Delete: ", with the following exceptions"

Saying "similar" is enough.


   o  Tag "i" tag is described in Section 3.1.

     o  Tags "a", "b", "d, "s", "t" from Section 3.5 of
       [RFC6376].

     o  Tag, "cv" is defined in Section 3.4.2


   o  The ARC-Seal covers none of the body content of the message.  It
      only covers specific header fields as defined below:
      Section 3.4.1.  No body canonicalization is done.

   o  Only "relaxed" header canonicalization (Section 3.4.2 of
      [RFC6376]) is used.

   o  The only supported tags are "i" (from Section 3.1 of this
      document), and "a", "b", "d, "s", "t" from Section 3.5 of
      [RFC6376].

   o  An additional tag, "cv" is defined in Section 3.4.2

See above for suggested cleanup/streamlining of tag specifications


3.4.1.  Covered Header Fields

   The ARC-Seal signs a specific canonicalized form of the ARC Set

"specific canonicalized form"??? what does this mean, given that 'relaxed' is dictated above.


   header values.  The ARC set header values are compiled in increasing

   compiled in -> arranged into

(this being a computer science discipline, and 'compiled' being a term of art, let's avoid possible confusion...)


   instance order, starting at 1, and include the set being added at the
   time of sealing the message.

   Within a set, the header fields are listed in the following order:

   1.  ARC-Authentication-Results

   2.  ARC-Message-Signature




Andersen, et al.        Expires October 25, 2018               [Page 13]

Internet-Draft ARC-Protocol April 2018


   3.  ARC-Seal

   Where the ARC-Seal is the one being generated, it is input to the
   hash function in its final form except with an empty "b=" value, in
   the same manner by which a DKIM-Signature signs itself ([RFC6376],
   section 3.7).

   Note that the signing scope for the ARC-Seal is modified in the
   situation where a chain has failed validation (see Section 5.1).

I don't quite understand what this means.


3.4.2.  The 'cv' Tag

   A new tag "cv" (chain validation) indicates the outcome of evaluating
   the existing ARC Chain upon arrival at the ADMD that is adding this
   header field.  The values are defined per Section Section 2.2.

   Section Section -> Section

add:

    and are based on the Verifier Actions of Section 4.


   In ABNF terms:

    chain-status = ("none" / "fail" / "pass")
    seal-cv-tag = %x63.76 [FWS] "=" [FWS] chain-status

Nevermind the values. What is the basis for asserting a value? Where is that defined?



4.  Verifier Actions

I continue to find it odd that the section on Verifier Actions precedes Signer Actions. I continue to suggest swapping them, to reflect the actual handling sequence for a message.


   A verifier takes the following steps to validate the ARC Chain.
   Canonicalization, hash functions, and signature validation methods
   are imported from Section 5 of [RFC6376].

   1.  Collect all ARC Sets currently on the message.  If there were
       none, the ARC state is "none" and the algorithm stops here.

   were -> are



   2.  Check the morphology of the ARC Chain.  If any of these
       conditions are not met, the chain state is "fail" and the
       algorithm stops here:

       1.  Each ARC Set must be complete (e.g., contains exactly one of
           each of the three ARC-specific header fields);

   e.g. -> i.e.

(if there are more conditions than the one stated here, how is the algorithm to know what to check for?)



       2.  The instance values must form a continuous sequence from 1..N
           with no gaps or repeats;

   continuous -> contiguous

   1..N  -> from 1 to the highest instance value found (N)

(N wasn't defined.)



       3.  The cv value for all ARC-Seal(s) must be non-failing:

           1.  For i > 1, the value must be "pass";

           2.  For i = 1, the value must be "none".

   3.  For each ARC-Message-Signature from the "N"th instance to the
       first, validate the AMS:

     3. From set N..1, validate each ARC-Message-Signature:


Andersen, et al.        Expires October 25, 2018               [Page 14]

Internet-Draft ARC-Protocol April 2018


       1.  If the "N"th instance (most recent) signature fails, then the
           chain state is "fail" and the algorithm stops here.

*** I think there needs to be some careful discipline to distinguish validation failure from resulting status (eg, chain) failure. I suggest the discipline to be using different language rigorously. I propose 'does not validate' for the former and 'fails' for the latter.



       2.  If one of the prior AMS signatures fails to validate (for
           instance "M"), then set the oldest-pass value to the lowest
           AMS instance number which passed (M+1) and go onto the next
           step (there is no need to check any other (older) AMS
           signatures).  This does not affect the validity of the chain.

         2. If a prior AMS signature (instance M) does not validate,
            then set Oldest-Pass to M+1 and go...


       3.  If all AMS signatures verify, set the oldest-pass value to
           zero (0).

"oldest"? hmmm. It's actually the newest. That is, it is the most recent signature, in the chain of signatures.



   4.  For each ARC-Seal from the "N"th instance to the first, validate
       the seal.

     4. From ARC-Seal N..1, validate each seal


       1.  If any seal is not valid, the chain state is "fail" and the
           algorithm stops here.

         1.  If a Seal does not validate, the chain statis is fail;
             terminate the algorithm here.



       2.  If all seals pass validation, then the chain state is "pass",
           and the algorithm is complete.

         2.  If all seals validate...


   The end result of the verifier's checks via this algorithm MUST be
   added into the Authentication-Results header(s) for the ADMD.

for /which/ ADMD?



   _INFORMATIONAL_: Recipients of an ARC Chain that is invalid or does

"invalid or does not pass" seems redundant.


   not pass SHOULD NOT draw negative conclusions without a good
   understanding of the wider handling context.  Until ARC usage is

This normative sentence has no substance. It does not specify a specific action and it cannot be tested. It also is arguably outside the scope of the spec...


   widespread, intermediaries will continue to modify messages without
   ARC seals.

They'll do that after it's widespread too.



   As with a failing DKIM signature ([RFC6376] Section-6.3), a message
   with a failing ARC Chain MUST be treated the same as a message with
   no ARC Chain.

+1



4.1.  Authentication-Results Information

   Certain information pertinent to ascertaining message disposition can
   be lost in transit when messages are handled by intermediaries.  For
   example, failing DKIM signatures are sometimes removed by MTAs, and

Since a failed DKIM signature is to be treated the same as having no DKIM signature, its removal should not affect disposition...


   most DKIM signatures on messages modified by intermediaries will

Except, for example, when adding Received:. So the statement needs some sort of qualifier. Not elegant, but perhaps something simple like "substantially modified". (I could argue for 'substantively' rather than 'substantially', but that's just fussy...)


   fail.  Recording the following information in the Authentication-
   Results stamped as part of the ARC evaluation provides a mechanism
   for this information to survive transit through a particular ADMD.

   Stamped ARC evaluation results is limited to the Chain Validation
   status (cv) from Section 2.2.

"stamped"?






Andersen, et al.        Expires October 25, 2018               [Page 15]

Internet-Draft ARC-Protocol April 2018


   The ptypes and properties defined in this section SHOULD be recorded
   in the Authentication-Results:

   o  smtp.client-ip - The connecting client IP address from which the
      message is received;

   o  header.oldest-pass - The instance number of the oldest AMS that
      still validates, or 0 if all pass.

Shouldn't the label identify which method is involved, to ensure the reference is unambiguous?



4.2.  Handling DNS Problems While Validating ARC

   DNS-based failures to verify a chain are treated no differently than
   any other ARC violation.  They result in a "cv=fail" verdict.

Should there be any wiggle room allowed here, for holding the message and retrying the DNS query, given how often DNS queries have a temporary failure?



4.3.  Responding to ARC Validity Violations During the SMTP Transaction

   If a receiver determines that the ARC Chain has failed, the receiver
   MAY signal the breakage through the extended SMTP response code 5.7.7
   [RFC3463] "message integrity failure" [ENHANCED-STATUS] and
   corresponding SMTP response code.

5.  Sealer Actions

   An ARC sealer MUST take the following actions when presented with a
   message:

   1.  Before creating an ARC signature, perform any other, normal
       authentication and/or signing, so that the ARC signature can
       cover those results.

     can cover those results
     ->
     has the option of covering any resulting message additions or
     modifications



   2.  Build and attach the new ARC Set:

       1.  If an ARC Chain exists on the message, then set "N" equal to
           the highest instance number found on the chain (i=);
           otherwise set "N" equal to zero for the following steps.

     exists -> already exists


       2.  Generate and attach to the message an ARC-Authentication-
           Results header field as defined in Section Section 3.2, using
           instance number N+1 and the same content from the previous
           step.

 Section Section


       3.  Generate and attach to the message an ARC-Message-Signature
           header field as defined in Section 3.3 above, using instance
           number N+1.

       4.  Generate and attach to the message an ARC-Seal header field
           using the general algorithm described in Section 3.4 above,




Andersen, et al.        Expires October 25, 2018               [Page 16]

Internet-Draft ARC-Protocol April 2018


           the chain validation status as determined in Section 4, and
           instance number N+1.

5.1.  Marking and Sealing "cv=fail" (Invalid) Chains

   The header fields signed by the AS header field b= value in the case
   of a chain failure MUST be only the matching instance headers created
   by the MTA which detected the malformed chain, as if this newest ARC
   Set was the only set present.

This seems oddly worded. The fine-grained detail of saying b= seems distracting or possibly misleading. I'm not exactly sure what's precisely meant to be specified here, but here's a guess:

In the case of a chain failure, the header fields covered by the newest AS signature MUST be only those specified for the newest ARC set, of the signer that detected the malformed chain.



   _INFORMATIONAL:_ In the case of a malformed or otherwise invalid
   chain there is no way to generate a deterministic set of AS header
   fields ({#implicit_as_h}) so this approach is mandated.

Do you mean deterministic or do you mean accurate? In either case, it might be worth elaborating on your point a bit more.

I suspect you also mean 'set of AS header fields across the entire chain'?



6.  Recording and Reporting the Results of ARC Evaluation

   The evaluation of an ARC Chain provides information which will be
   useful to both the receiver (or intermediary) and to the initial
   sender of the message.  This information should be preserved and
   reported as follows.

     sender -> originator

'should'?  normative?



6.1.  Information from an ARC Evaluation

   The evaluation of an ARC Chain produces a list of domain names for
   participating intermediaries which handled the message, to wit:

"for"? perhaps "of"?


   o  A list of the "d=" domains found in the validated ARC-Seal header
      fields

   o  The "d=" domain found in the most recent (highest instance number)
      AMS header field (since that is the only one necessarily
      validated)

   In the case of a failed chain, only the terminal ARC Set is covered
   by the ARC-Seal so the reporting is limited to the findings in that
   terminal ARC Set.

6.2.  Recording (local) ARC Evaluation Results

   Receivers who process an attached ARC Chain SHOULD add an
   "arc=[pass|fail|policy]" method annotation into a locally-affixed
   Authentication-Results [RFC7601] header field along with any salient
   comment(s).

   Details of the ARC Chain which was evaluated should be included in
   the Authentication-Results and AAR headers per Section Section 4.1.





Andersen, et al.        Expires October 25, 2018               [Page 17]

Internet-Draft ARC-Protocol April 2018


6.3.  DMARC Reporting of ARC Findings - Interim

   Receivers SHOULD indicate situations in which ARC evaluation
   influenced the results of their local policy determination.  DMARC
   reporting of ARC-informed decisions can be accomplished by adding a
   local_policy comment explanation containing the list of data
   discovered in the ARC evaluation, which at a minimum SHOULD include:
   * the Chain Validation status, * the domain and selector for each AS,
   * the IP addresses of the mail originating ADMD:

<policy_evaluated>
  <disposition>none</disposition>
  <dkim>fail</dkim>
  <spf>fail</spf>
  <reason>
   <type>local_policy</type>
   <comment>arc=pass ams[2].d=d2.example ams[2].s=s1 as[2].d=d2.example
     as[2].s=s2 as[1].d=d1.example as[1].s=s3 client-ip[1]=10.10.10.13</comment>
  </reason>
</policy_evaluated>

   In the sample above, d2.example is the sealing domain for ARC[2] and
   d1.example is the sealing domain for ARC[1].

   Intermediary message handlers SHOULD generate DMARC reports on
   messages which transit their system just like any other message which
   they receive.  This will result in multiple reports for each mediated
   message as they transit the series of handlers.  DMARC report
   consumers should be aware of this behaviour and make the necessary
   accommodations.

7.  Privacy Considerations

   The ARC Chain provides a verifiable record of the handlers for a
   message.  Anonymous remailers will probably not find this compatible
   with their operating goals.

Reporting back to the Originator also divulges Receiver details.


<< REVIEWED ENDED HERE >>


D/

--
Dave Crocker
Brandenburg InternetWorking
bbiw.net

--
Dave Crocker
Brandenburg InternetWorking
bbiw.net

_______________________________________________
dmarc mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dmarc

Reply via email to