mail-vet-discuss
[Top] [All Lists]

Re: [mail-vet-discuss] Reworked section 2 (for -13)

2008-03-11 16:53:10
Murray,

After reviewing section 2.4.3 I think it should be split out
separately for SPF and Sender-ID. A pass for SPF does not mean the
same thing as a pass for SIDF. Conflating the two is a recipe for
problems. Mail From pass from SPF is totally different from PRA pass
from SIDF.


On 3/11/08, Murray S. Kucherawy <msk(_at_)sendmail(_dot_)com> wrote:
Attached is a reworked section 2 based on Michael's recent suggestions
and discussions with Tony and a couple of others.

I still believe the specification should at least allow a filter to make
and convey local policy judgments on the acceptability of a signature
whether or not it validates.  A filter may not choose to use that
capability, but it should be provided.

I also agree with Tony that we don't need to force semantic meaning down
into the syntax level.  The IANA registry of ptypes and propspecs toward
the end of the document is sufficient for this purpose.

Comments, please.  Otherwise I'm prepared to post this as -13 and try to
move it along.

2.  Definition and Format of the Header

  This section gives a general overview of the format of the header
  field being defined, and then provides more formal specification.

2.1.  General Description

  The new header field being defined here is called "Authentication-
  Results".  It is a Structured Header Field as defined in [MAIL] and
  thus all of the related definitions in that document apply.

  This new header field MUST be added at the top of the message as it
  transits MTAs which do authentication checks so some idea of how far
  away the checks were done can be inferred.  It therefore should be
  treated as a Trace Header Field as defined in [MAIL] and thus all of
  the related definitions in that document apply.

  The value of the header field (after removing [MAIL] comments)
  consists of an authentication identifier and then a series of
  "method=result" statements indicating which authentication method(s)
  were applied and their respective results, and then, for each applied
  method, one or more "property=value" statements indicating which
  message properties were evaluated to reach that conclusion.

  The header field MAY appear more than once in a single message, or
  more than one result MAY be represented in a single header field, or
  a combination of these MAY be applied.

2.2.  Formal Definition

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

    header = "Authentication-Results:" [CFWS] authserv-id
             [CFWS [version]]
             *( ";" methodspec
                 *( CFWS reasonspec )
                 *( CFWS propspec ) [CFWS] ) CRLF


    authserv-id = dot-atom-text
                ; see below for a description of this element;
                ; "dot-atom-text" is defined in section 3.2.4 of [MAIL]


  version = 1*DIGIT [CFWS]
          ; indicates which version of this specification is in use;
          ; this specification is version "1"; the absence of a version
          ; implies this version of the specification



Kucherawy              Expires September 12, 2008               [Page 7]

Internet-Draft        Authentication-Results Header           March 2008


    methodspec = [CFWS] method [CFWS] "=" [CFWS] result
               ; indicates which authentication method was evaluated


    reasonspec = "reason=" dkim-quoted-printable
               ; a free-form comment on the reason the given result
               ; was returned; dkim-quoted-printable is defined in
               ; [DKIM]


    propspec = ptype [CFWS] "." [CFWS] property [CFWS] "=" value
             ; an indication of which properties of the message
             ; were evaluated by the authentication scheme being
             ; applied to yield the reported result


    method = token [ [CFWS] "/" [CFWS] version ]
           ; a method indicates which method's result is
           ; represented by "result", and is one of the methods
           ; explicitly defined as valid in this document
           ; or is an extension method as defined below


    result = token
           ; indicates the results of the attempt to authenticate
           ; the message; see below for details


    ptype = "smtp" / "header" / "body" / "policy"
          ; indicates whether the property being evaluated was
          ; a parameter to an [SMTP] command, or was a value taken
          ; from a message header field, or was some property of
          ; the message body, or some other property evaluated by
          ; the receiving MTA


    property = token
            ; if "ptype" is "smtp", this indicates which [SMTP]
            ; command provided the value which was evaluated by the
            ; authentication scheme being applied; if "ptype" is
            ; "header", this indicates from which header field the
            ; value being evaluated was extracted; if "ptype" is
            ; "body", this indicates the offset into the body at which
            ; content of interest was detected; if "ptype" is "policy"
            ; then this indicates the name of the policy which caused
            ; this header field to be added (see below)





Kucherawy              Expires September 12, 2008               [Page 8]

Internet-Draft        Authentication-Results Header           March 2008


    value = [CFWS] ( token / addr-spec ) [CFWS]
          ; the value extracted from the message property defined
          ; by the "ptype.property" construction; if the value
          ; identifies an address, then it is an "addr-spec"
          ; as defined in section 3.4 of [MAIL]

  The "token" is as defined in section 5.1 of [MIME].

  The "token" used in a "result" above is further constrained by the
  necessity of being enumerated in Section 2.4 or an amendment to it.

  See Section 2.3 for a description of the "authserv-id" element.

  The list of commands eligible for use with the "smtp" ptype can be
  found in [SMTP] and subsequent amendments.

  "CFWS" is as defined in section 3.2.3 of [MAIL].

  The "propspec" may be omitted if for example the method was unable to
  extract any properties to do its evaluation yet has a result to
  report.

  The "ptype" and "property" values used by each authentication method
  should be defined in the specification for that method (or its
  amendments).

  The "ptype" and "property" are case-insensitive.

  A "ptype" value of "policy" indicates a policy decision about the
  message not specific to a property of the message that could be
  extracted.  For example, if a method would normally report a
  "ptype.property" of "header.From" and no From: header field was
  present, the method can use "policy" to indicate that no conclusion
  about the authenticity of the message could be reached.

  If the parsed "ptype.property" construction clearly identifies a
  mailbox (in particular, smtp.mailfrom, smtp.rcpt, header.from,
  header.sender), then the "value" MUST be an "addr-spec".  Other
  properties (e.g. smtp.helo) may be evaluated, but the property MUST
  still be expressed as a "token" for simplified parsing.

2.3.  Authentication Identifier Fields

  Every Authentication-Results header field has an authentication
  identifier field ("authserv-id" above).  This is similar in syntax to
  a fully-qualified domain name.

  The authentication identifier field provides a unique identifier that



Kucherawy              Expires September 12, 2008               [Page 9]

Internet-Draft        Authentication-Results Header           March 2008


  refers to the authenticating service within a given mail
  administrative domain.  The uniqueness of the identifier is
  guaranteed by the mail administrative domain that generates it and
  must pertain to exactly that one mail administrative domain.  This
  identifier is intended to be machine-readable and not necessarily
  meaningful to users.  MUAs may use this identifier to determine
  whether or not the data contained in an Authentication-Results header
  field can be trusted.

  For tracing and debugging purposes, the authentication identifier
  SHOULD be the domain name of the MTA performing the authentication
  check whose result is being reported.

  Examples of valid authentication identifiers are mail.example.org,
  engineering.example.net and ms1.newyork.example.com.

2.4.  Result Values

  Each individual authentication method returns one of a set of
  specific result values.  The subsections below define these results
  for the authentication methods specifically supported by this memo.
  New methods not specified in this document intended to be supported
  by the header field defined in this memo MUST include a similar
  result table either in its defining memo or in a supplementary one.

2.4.1.  DKIM and DomainKeys Results

  The result values used by [DKIM] and [DOMAINKEYS] are as follows:

  none:  The message was not signed.

  pass:  The message was signed, the signature(s) is (were) acceptable
     to the verifier, and the signature(s) passed verification tests.

  fail:  The message was signed and the signature(s) is (were)
     acceptable to the verifier, but it (they) failed the verification
     test(s).

  policy:  The message was signed but the signature(s) is (were) not
     acceptable to the verifier.

  neutral:  The message was signed but the signature(s) contained
     syntax errors or were not otherwise able to be processed.  This
     result SHOULD also be used for other failures not covered
     elsewhere in this list.






Kucherawy              Expires September 12, 2008              [Page 10]

Internet-Draft        Authentication-Results Header           March 2008


  temperror:  The message could not be verified due to some error which
     is likely transient in nature, such as a temporary inability to
     retrieve a public key.  A later attempt may produce a final
     result.

  permerror:  The message could not be verified due to some error which
     is unrecoverable, such as a required header field being absent.  A
     later attempt is unlikley to produce a final result.

  A signature is "acceptable to the verifier" if it passes local policy
  checks (or there are no specific local policy checks).  For example,
  a verifier might require that the signature(s) on the message be
  added by the domain identified in the From: header field of the
  message, thus making third-party signatures unacceptable.

2.4.2.  DKIM ASP Results

  The result values are used by [I-D.DRAFT-IETF-DKIM-SSP] as follows:

  none:  No DKIM policy author signing practises (ASP) record was
     published.

  pass:  A DKIM ASP policy was published which indicated the mail
     should be signed with an author signature, and this message had
     such a signature that validated.

  unknown:  No valid author signature was found on the message and
     either the published ASP policy was "unknown", or no policy was
     published.

  signed:  A valid author signature was found on the message and the
     published ASP policy was "unknown".

  fail:  No valid author signature was found on the message and the
     published ASP record indicated an "all" policy.

  discard:  No valid author signature was found on the message and the
     published ASP record indicated a "discardable" policy.

  nxdomain:  Evaluating the ASP for the author's domain indicated that
     the author's domain does not exist.

  temperror:  A DKIM policy could not be retrieved due to some error
     which is likely transient in nature, such as a temporary DNS
     error.  A later attempt may produce a final result.






Kucherawy              Expires September 12, 2008              [Page 11]

Internet-Draft        Authentication-Results Header           March 2008


  permerror:  A DKIM policy could not be retrieved due to some error
     which is likely not transient in nature, such as a permanent DNS
     error.  A later attempt is unlikely to produce a final result.

2.4.3.  SPF and Sender-ID Results

  The result values are used by [SPF] and [SENDERID] as follows:

  none:  No policy records were published by the sender's domain.

  neutral:  The sender's domain has asserted that it cannot or does not
     want to assert a policy record suitable for evaluation of the
     authentication method.

  pass:  The client is authorized to inject or relay mail on behalf of
     the sender's domain.

  hardfail:  This client is explicitly not authorized to inject or
     relay mail on behalf of the sender's domain.

  softfail:  The sender's domain believes the client was not authorized
     to inject or relay mail on its behalf but is unwilling to make a
     strong assertion to that effect.

  temperror:  The message could not be verified due to some error which
     is likely transient in nature, such as a temporary inability to
     retrieve a policy record from DNS.  A later attempt may produce a
     final result.

  permerror:  The message could not be verified due to some error which
     is unrecoverable, such as a required header field being absent.  A
     later attempt is unlikley to produce a final result.

2.4.4.  iprev Results

  The result values are used by the "iprev" method, defined in
  Section 3, are as follows:

  pass:  The reverse DNS evaluation succeeded, i.e. the "reverse" and
     "forward" lookup results were in agreement.

  hardfail:  The reverse DNS evaluation failed.  In particular, the
     "reverse" and "forward" lookups each produced results but they
     were not in agreement.







Kucherawy              Expires September 12, 2008              [Page 12]

Internet-Draft        Authentication-Results Header           March 2008


  softfail:  The reverse DNS evaluation failed.  In particular, one or
     both of the "reverse" and forward lookups returned no data (i.e. a
     DNS reply code of NODATA).

  temperror:  The reverse DNS evaluation could not be completed due to
     some error which is likely transient in nature, such as a
     temporary DNS error.  A later attempt may produce a final result.

  permerror:  The reverse DNS evaluation could not be completed due to
     some error which is unrecoverable (e.g. a DNS reply code of
     NXDOMAIN).  A later attempt is unlikely to produce a final result.

2.4.5.  SMTP AUTH Results

  The result values are used by the [AUTH] method are as follows:

  none:  SMTP authentication was not attempted.

  pass:  The SMTP client had authenicated to the server reporting the
     result using the protocol described in [AUTH].

  hardfail:  The SMTP client had attempted to authenticate to the
     server using the protocol described in [AUTH] but was not
     successful, yet continued to send the message about which a result
     is being reported.

  temperror:  The SMTP client attempted to authenticate using the
     protocol described in [AUTH] but was not able to complete the
     attempt due to some error which is likely transient in nature,
     such as a temporary LDAP lookup error.  A later attempt may
     produce a final result.

  Note that an agent making use of the data provided by this header
  field SHOULD consider "hardfail" and "temperror" to be the synonymous
  in terms of message authentication, i.e. the client did not
  authenticate.

2.5.  Definition Of Initial Methods

  As they are currently existing specifications for message
  authentication, it is appropriate to define an authentication method
  identifier for each of [AUTH], [DKIM], [DOMAINKEYS], [SENDERID] and
  [SPF].  Therefore, the authentication method identifiers "auth",
  "dkim", "domainkeys", "senderid" and "spf" respectively are hereby
  defined for MTAs applying those specifications for e-mail message
  authentication.  See Section 7 for details.





Kucherawy              Expires September 12, 2008              [Page 13]

Internet-Draft        Authentication-Results Header           March 2008


2.6.  Extension Methods

  Additional authentication method identifiers (extension methods) may
  be defined in the future by later revisions or extensions to this
  specification.  Extension methods beginning with "x-" will never be
  defined as standard fields; such names are reserved for experimental
  use.  Method identifiers not beginning with "x-" MUST be registered
  with the Internet Assigned Numbers Authority (IANA) and published in
  an RFC.  See Section 7 for further details.

  Extension methods may be defined for the following reasons:

  1.  To allow additional information from new authentication systems
      to be communicated to MUAs.  The names of such identifiers should
      reflect the name of the method being defined, but should not be
      needlessly long.

  2.  To allow the creation of "sub-identifiers" which indicate
      different levels of authentication and differentiate between
      their relative strengths, e.g. "auth1-weak" and "auth1-strong".

  Implementations of new methods MUST use the "x-" prefix until such
  time as the new method is registered by IANA.

  Authentication method implementors are encouraged to provide adequate
  information, via [MAIL] comments if necessary, to allow an MUA
  developer to understand or relay ancilliary details of authentication
  results.  For example, if it might be of interest to relay what data
  was used to perform an evaluation, such information could be relayed
  as a comment in the header field, such as:

       Authentication-Results: mx.example.com;
                 foo=pass bar.baz=blob (2 of 3 tests OK)

  Experimental method identifiers MUST only be used within trust
  domains that have explicitly consented to use them.  These method
  identifiers and the parameters associated with them are not
  documented in RFCs.  Therefore, they are subject to change at any
  time and not suitable for production use.  Any MTA or MUA intended
  for production use SHOULD ignore or delete any Authentication-Results
  header that includes an experimental method identifier.

_______________________________________________
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html

_______________________________________________
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html 

<Prev in Thread] Current Thread [Next in Thread>