draft-ietf-dmarc-rfc7601bis-06.txt | rfc8601.txt | |||
---|---|---|---|---|
Individual submission M. Kucherawy | Internet Engineering Task Force (IETF) M. Kucherawy | |||
Internet-Draft January 28, 2019 | Request for Comments: 8601 May 2019 | |||
Obsoletes: 7601 (if approved) | Obsoletes: 7601 | |||
Intended status: Standards Track | Category: Standards Track | |||
Expires: August 1, 2019 | ISSN: 2070-1721 | |||
Message Header Field for Indicating Message Authentication Status | Message Header Field for Indicating Message Authentication Status | |||
draft-ietf-dmarc-rfc7601bis-06 | ||||
Abstract | Abstract | |||
This document specifies a message header field called Authentication- | This document specifies a message header field called | |||
Results for use with electronic mail messages to indicate the results | "Authentication-Results" for use with electronic mail messages to | |||
of message authentication efforts. Any receiver-side software, such | indicate the results of message authentication efforts. Any | |||
as mail filters or Mail User Agents (MUAs), can use this header field | receiver-side software, such as mail filters or Mail User Agents | |||
to relay that information in a convenient and meaningful way to users | (MUAs), can use this header field to relay that information in a | |||
or to make sorting and filtering decisions. | convenient and meaningful way to users or to make sorting and | |||
filtering decisions. | ||||
This document obsoletes [RFC7601]. | ||||
Status of this Memo | This document obsoletes RFC 7601. | |||
This Internet-Draft is submitted in full conformance with the | Status of This Memo | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This is an Internet Standards Track document. | |||
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 | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on August 1, 2019. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8601. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction ....................................................4 | |||
1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.1. Purpose ....................................................5 | |||
1.2. Trust Boundary . . . . . . . . . . . . . . . . . . . . . . 6 | 1.2. Trust Boundary .............................................6 | |||
1.3. Processing Scope . . . . . . . . . . . . . . . . . . . . . 6 | 1.3. Processing Scope ...........................................7 | |||
1.4. Requirements . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.4. Requirements ...............................................7 | |||
1.5. Definitions . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.5. Definitions ................................................7 | |||
1.5.1. Key Words . . . . . . . . . . . . . . . . . . . . . . 7 | 1.5.1. Key Words ...........................................7 | |||
1.5.2. Internationalized Email . . . . . . . . . . . . . . . 7 | 1.5.2. Internationalized Email .............................7 | |||
1.5.3. Security . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.5.3. Security ............................................8 | |||
1.5.4. Email Architecture . . . . . . . . . . . . . . . . . . 8 | 1.5.4. Email Architecture ..................................8 | |||
1.5.5. Other Terms . . . . . . . . . . . . . . . . . . . . . 9 | 1.5.5. Other Terms .........................................9 | |||
1.6. Trust Environment . . . . . . . . . . . . . . . . . . . . 9 | 1.6. Trust Environment .........................................10 | |||
2. Definition and Format of the Header Field . . . . . . . . . . 10 | 2. Definition and Format of the Header Field ......................10 | |||
2.1. General Description . . . . . . . . . . . . . . . . . . . 10 | 2.1. General Description .......................................10 | |||
2.2. Formal Definition . . . . . . . . . . . . . . . . . . . . 10 | 2.2. Formal Definition .........................................11 | |||
2.3. Property Types (ptypes) and Properties . . . . . . . . . . 13 | 2.3. Property Types (ptypes) and Properties ....................13 | |||
2.4. The "policy" ptype . . . . . . . . . . . . . . . . . . . . 14 | 2.4. The "policy" ptype ........................................15 | |||
2.5. Authentication Identifier Field . . . . . . . . . . . . . 15 | 2.5. Authentication Service Identifier Field ...................15 | |||
2.6. Version Tokens . . . . . . . . . . . . . . . . . . . . . . 16 | 2.6. Version Tokens ............................................17 | |||
2.7. Defined Methods and Result Values . . . . . . . . . . . . 16 | 2.7. Defined Methods and Result Values .........................17 | |||
2.7.1. DKIM . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 2.7.1. DKIM ...............................................17 | |||
2.7.2. SPF . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 2.7.2. SPF ................................................19 | |||
2.7.3. "iprev" . . . . . . . . . . . . . . . . . . . . . . . 19 | 2.7.3. "iprev" ............................................20 | |||
2.7.4. SMTP AUTH . . . . . . . . . . . . . . . . . . . . . . 20 | 2.7.4. SMTP AUTH ..........................................21 | |||
2.7.5. Other Registered Codes . . . . . . . . . . . . . . . . 21 | 2.7.5. Other Registered Codes .............................22 | |||
2.7.6. Extension Methods . . . . . . . . . . . . . . . . . . 21 | 2.7.6. Extension Methods ..................................22 | |||
2.7.7. Extension Result Codes . . . . . . . . . . . . . . . . 22 | 2.7.7. Extension Result Codes .............................23 | |||
3. The "iprev" Authentication Method . . . . . . . . . . . . . . 23 | 3. The "iprev" Authentication Method ..............................23 | |||
4. Adding the Header Field to a Message . . . . . . . . . . . . . 24 | 4. Adding the Header Field to a Message ...........................25 | |||
4.1. Header Field Position and Interpretation . . . . . . . . . 25 | 4.1. Header Field Position and Interpretation ..................26 | |||
4.2. Local Policy Enforcement . . . . . . . . . . . . . . . . . 26 | 4.2. Local Policy Enforcement ..................................27 | |||
5. Removing Existing Header Fields . . . . . . . . . . . . . . . 27 | ||||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | ||||
6.1. The Authentication-Results Header Field . . . . . . . . . 28 | ||||
6.2. "Email Authentication Methods" Registry Description . . . 29 | ||||
6.3. "Email Authentication Methods" Registry Update . . . . . . 30 | ||||
6.3.1. 'header.a' for DKIM . . . . . . . . . . . . . . . . . 30 | ||||
6.3.2. 'header.s' for DKIM . . . . . . . . . . . . . . . . . 31 | ||||
6.4. "Email Authentication Property Types" Registry | ||||
Description . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
6.5. "Email Authentication Property Types" Registry Update . . 32 | 5. Removing Existing Header Fields ................................28 | |||
6.6. "Email Authentication Result Names" Registry | 6. IANA Considerations ............................................29 | |||
Description . . . . . . . . . . . . . . . . . . . . . . . 32 | 6.1. The Authentication-Results Header Field ...................29 | |||
6.7. "Email Authentication Result Names" Registry Update . . . 33 | 6.2. "Email Authentication Methods" Registry Description .......30 | |||
6.8. SMTP Enhanced Status Codes . . . . . . . . . . . . . . . . 33 | 6.3. "Email Authentication Methods" Registry Update ............31 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 33 | 6.3.1. "header.a" for DKIM ................................32 | |||
7.1. Forged Header Fields . . . . . . . . . . . . . . . . . . . 34 | 6.3.2. "header.s" for DKIM ................................32 | |||
7.2. Misleading Results . . . . . . . . . . . . . . . . . . . . 35 | 6.4. "Email Authentication Property Types" Registry | |||
7.3. Header Field Position . . . . . . . . . . . . . . . . . . 36 | Description ...............................................32 | |||
7.4. Reverse IP Query Denial-of-Service Attacks . . . . . . . . 36 | 6.5. "Email Authentication Property Types" Registry Update .....33 | |||
7.5. Mitigation of Backscatter . . . . . . . . . . . . . . . . 36 | 6.6. "Email Authentication Result Names" Registry Description ..33 | |||
7.6. Internal MTA Lists . . . . . . . . . . . . . . . . . . . . 36 | 6.7. "Email Authentication Result Names" Registry Update .......34 | |||
7.7. Attacks against Authentication Methods . . . . . . . . . . 36 | 6.8. SMTP Enhanced Status Codes ................................34 | |||
7.8. Intentionally Malformed Header Fields . . . . . . . . . . 37 | 7. Security Considerations ........................................35 | |||
7.9. Compromised Internal Hosts . . . . . . . . . . . . . . . . 37 | 7.1. Forged Header Fields ......................................35 | |||
7.10. Encapsulated Instances . . . . . . . . . . . . . . . . . . 37 | 7.2. Misleading Results ........................................36 | |||
7.11. Reverse Mapping . . . . . . . . . . . . . . . . . . . . . 38 | 7.3. Header Field Position .....................................37 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | 7.4. Reverse IP Query Denial-of-Service Attacks ................37 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 38 | 7.5. Mitigation of Backscatter .................................37 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . . 39 | 7.6. Internal MTA Lists ........................................37 | |||
Appendix A. Legacy MUAs . . . . . . . . . . . . . . . . . . . . . 42 | 7.7. Attacks against Authentication Methods ....................38 | |||
Appendix B. Authentication-Results Examples . . . . . . . . . . . 42 | 7.8. Intentionally Malformed Header Fields .....................38 | |||
B.1. Trivial Case; Header Field Not Present . . . . . . . . . . 43 | 7.9. Compromised Internal Hosts ................................38 | |||
B.2. Nearly Trivial Case; Service Provided, but No | 7.10. Encapsulated Instances ...................................38 | |||
Authentication Done . . . . . . . . . . . . . . . . . . . 43 | 7.11. Reverse Mapping ..........................................39 | |||
B.3. Service Provided, Authentication Done . . . . . . . . . . 44 | 8. References .....................................................39 | |||
B.4. Service Provided, Several Authentications Done, Single | 8.1. Normative References ......................................39 | |||
MTA . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 | 8.2. Informative References ....................................40 | |||
B.5. Service Provided, Several Authentications Done, | Appendix A. Legacy MUAs ...........................................44 | |||
Different MTAs . . . . . . . . . . . . . . . . . . . . . . 46 | Appendix B. Authentication-Results Examples .......................44 | |||
B.6. Service Provided, Multi-tiered Authentication Done . . . . 48 | B.1. Trivial Case: Header Field Not Present .....................44 | |||
B.7. Comment-Heavy Example . . . . . . . . . . . . . . . . . . 49 | B.2. Nearly Trivial Case: Service Provided, but No | |||
Appendix C. Operational Considerations about Message | Authentication Done ........................................45 | |||
Authentication . . . . . . . . . . . . . . . . . . . 50 | B.3. Service Provided, Authentication Done ......................46 | |||
Appendix D. Changes since RFC7601 . . . . . . . . . . . . . . . . 51 | B.4. Service Provided, Several Authentications Done, Single | |||
Appendix E. Acknowledgments . . . . . . . . . . . . . . . . . . . 52 | MTA ........................................................47 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 52 | B.5. Service Provided, Several Authentications Done, Different | |||
MTAs .......................................................48 | ||||
B.6. Service Provided, Multi-tiered Authentication Done .........50 | ||||
B.7. Comment-Heavy Example ......................................51 | ||||
Appendix C. Operational Considerations about Message | ||||
Authentication ........................................52 | ||||
Appendix D. Changes since RFC 7601 ................................53 | ||||
Acknowledgments ...................................................54 | ||||
Author's Address ..................................................54 | ||||
1. Introduction | 1. Introduction | |||
This document describes a header field called Authentication-Results | This document describes a header field called "Authentication- | |||
for electronic mail messages that presents the results of a message | Results" for electronic mail messages that presents the results of a | |||
authentication effort in a machine-readable format. The intent of | message authentication effort in a machine-readable format. The | |||
the header field is to create a place to collect such data when | intent of the header field is to create a place to collect such data | |||
message authentication mechanisms are in use so that a Mail User | when message authentication mechanisms are in use so that a Mail User | |||
Agent (MUA) and downstream filters can make filtering decisions | Agent (MUA) and downstream filters can make filtering decisions | |||
and/or provide a recommendation to the user as to the validity of the | and/or provide a recommendation to the user as to the validity of the | |||
message's origin and possibly the safety and integrity of its | message's origin and possibly the safety and integrity of its | |||
content. | content. | |||
End users are not expected to be direct consumers of this header | End users are not expected to be direct consumers of this header | |||
field. This header field is intended for consumption by programs | field. This header field is intended for consumption by programs | |||
that will then use such data or render it in a human-usable form. | that will then use such data or render it in a human-usable form. | |||
This document specifies the format of this header field and discusses | This document specifies the format of this header field and discusses | |||
the implications of its presence or absence. However, it does not | the implications of its presence or absence. However, it does not | |||
discuss how the data contained in the header field ought to be used, | discuss how the data contained in the header field ought to be used, | |||
such as what filtering decisions are appropriate or how an MUA might | such as what filtering decisions are appropriate or how an MUA might | |||
render those results, as these are local policy and/or user interface | render those results, as these are local policy and/or user interface | |||
design questions that are not appropriate for this document. | design questions that are not appropriate for this document. | |||
At the time of publication of this document, the following are | At the time of publication of this document, the following are | |||
published email authentication methods: | published email authentication methods: | |||
o SMTP Service Extension for Authentication ([AUTH]) | o SMTP Service Extension for Authentication [AUTH] | |||
o DomainKeys Identified Mail Signatures ([DKIM]) | o DomainKeys Identified Mail Signatures [DKIM] | |||
o Domain-based Message Authentication, Reporting and Conformance | o Domain-based Message Authentication, Reporting, and Conformance | |||
([DMARC]) | [DMARC] | |||
o Sender Policy Framework ([SPF]) | o Sender Policy Framework [SPF] | |||
o reverse IP address name validation ("iprev", defined in Section 3) | o reverse IP address name validation ("iprev", defined in Section 3) | |||
o Require-Recipient-Valid-Since Header Field and SMTP Service | o Require-Recipient-Valid-Since Header Field and SMTP Service | |||
Extension ([RRVS]) | Extension [RRVS] | |||
o S/MIME Signature Verification ([SMIME-REG]) | ||||
o Vouch By Reference ([VBR]) | o S/MIME Signature Verification [SMIME-REG] | |||
The following historic specifications were previously supported by | o Vouch By Reference [VBR] | |||
this framework, but have since become obsolete: | The following Historic specifications were previously supported by | |||
this framework but have since become obsolete: | ||||
o Author Domain Signing Practices ([ADSP]) (Historic) | o Author Domain Signing Practices [ADSP] (Historic) | |||
o DomainKeys ([DOMAINKEYS]) (Historic) | o DomainKeys [DOMAINKEYS] (Historic) | |||
o Sender ID ([SENDERID]) (Historic) | Note that at the time of publication of this document the Sender ID | |||
specification [SENDERID] (Experimental) is no longer supported by | ||||
this framework. Discussion regarding moving it to Historic status is | ||||
underway. | ||||
There exist registries for tokens used within this header field that | There exist registries for tokens used within this header field that | |||
refer to the specifications listed above. Section 6 describes the | refer to the specifications listed above. Section 6 describes the | |||
registries and their contents and specifies the process by which | registries and their contents and specifies the process by which | |||
entries are added or updated. It also updates the existing contents | entries are added or updated. It also updates the existing contents | |||
to match the current states of these specifications. | to match the current states of these specifications. | |||
The goal of this work is to give current and future authentication | The goal of this work is to give current and future authentication | |||
schemes a common framework within which to deliver their results to | schemes a common framework within which to deliver their results to | |||
downstream agents and discourage the creation of unique header fields | downstream agents and discourage the creation of unique header fields | |||
skipping to change at page 5, line 40 ¶ | skipping to change at page 5, line 45 ¶ | |||
1.1. Purpose | 1.1. Purpose | |||
The header field defined in this document is expected to serve | The header field defined in this document is expected to serve | |||
several purposes: | several purposes: | |||
1. Convey the results of various message authentication checks, | 1. Convey the results of various message authentication checks, | |||
which are applied by upstream filters and Mail Transfer Agents | which are applied by upstream filters and Mail Transfer Agents | |||
(MTAs) and then passed to MUAs and downstream filters within the | (MTAs) and then passed to MUAs and downstream filters within the | |||
same "trust domain". Such agents might wish to render those | same "trust domain". Such agents might wish to render those | |||
results to end users or to use those data to apply more or less | results to end users or to use those data to apply more or less | |||
stringent content checks based on authentication results; | stringent content checks based on authentication results. | |||
2. Provide a common location within a message for this data; | 2. Provide a common location within a message for such data. | |||
3. Create an extensible framework for reporting new authentication | 3. Create an extensible framework for reporting new authentication | |||
methods as they emerge. | methods as they emerge. | |||
In particular, the mere presence of this header field does not mean | In particular, the mere presence of this header field does not mean | |||
its contents are valid. Rather, the header field is reporting | its contents are valid. Rather, the header field is reporting | |||
assertions made by one or more authentication schemes applied | assertions made by one or more authentication schemes applied | |||
somewhere upstream. For an MUA or downstream filter to treat the | somewhere upstream. For an MUA or downstream filter to treat the | |||
assertions as actually valid, there must be an assessment of the | assertions as actually valid, there must be an assessment of the | |||
trust relationship among such agents, the validating MTA, the paths | trust relationship among such agents, the validating MTA, the paths | |||
between them, and the mechanism for conveying the information. | between them, and the mechanism for conveying the information. | |||
1.2. Trust Boundary | 1.2. Trust Boundary | |||
This document makes several references to the "trust boundary" of an | This document makes several references to the "trust boundary" of an | |||
administrative management domain (ADMD). Given the diversity among | Administrative Management Domain (ADMD). Given the diversity among | |||
existing mail environments, a precise definition of this term isn't | existing mail environments, a precise definition of this term isn't | |||
possible. | possible. | |||
Simply put, a transfer from the producer of the header field to the | Simply put, a transfer from the producer of the header field to the | |||
consumer must occur within a context that permits the consumer to | consumer must occur within a context that permits the consumer to | |||
treat assertions by the producer as being reliable and accurate | treat assertions by the producer as being reliable and accurate | |||
(trustworthy). How this trust is obtained is outside the scope of | (trustworthy). How this trust is obtained is outside the scope of | |||
this document. It is entirely a local matter. | this document. It is entirely a local matter. | |||
Thus, this document defines a "trust boundary" as the delineation | Thus, this document defines a "trust boundary" as the delineation | |||
skipping to change at page 6, line 33 ¶ | skipping to change at page 6, line 40 ¶ | |||
the authority of the ADMD. By this definition, hosts that are within | the authority of the ADMD. By this definition, hosts that are within | |||
a trust boundary are subject to the ADMD's authority and policies, | a trust boundary are subject to the ADMD's authority and policies, | |||
independent of their physical placement or their physical operation. | independent of their physical placement or their physical operation. | |||
For example, a host within a trust boundary might actually be | For example, a host within a trust boundary might actually be | |||
operated by a remote service provider and reside physically within | operated by a remote service provider and reside physically within | |||
its data center. | its data center. | |||
It is possible for a message to be evaluated inside a trust boundary | It is possible for a message to be evaluated inside a trust boundary | |||
but then depart and re-enter the trust boundary. An example might be | but then depart and re-enter the trust boundary. An example might be | |||
a forwarded message such as a message/rfc822 attachment (see | a forwarded message such as a message/rfc822 attachment (see | |||
Multipurpose Internet Mail Extensions [MIME]) or one that is part of | "Multipurpose Internet Mail Extensions" [MIME]) or one that is part | |||
a multipart/digest. The details reported by this field cannot be | of a multipart/digest. The details reported by this field cannot be | |||
trusted in that case. Thus, this field found within one of those | trusted in that case. Thus, if found within one of those media | |||
media types is typically ignored. | types, this field is typically ignored. | |||
Note that an MUA could be configured to retrieve messages from a | Note that an MUA could be configured to retrieve messages from a | |||
Receiver yet not be within the Receiver's ADMD. In this case, for | receiver yet not be within the receiver's ADMD. In this case, for | |||
the purposes of this work, that MUA is considered to be within the | the purposes of this work, that MUA is considered to be within the | |||
Receiver's ADMD if is configured to identify and ascribe value to | receiver's ADMD if it is configured to identify and ascribe value to | |||
authentication results recorded by that ADMD. | authentication results recorded by that ADMD. | |||
1.3. Processing Scope | 1.3. Processing Scope | |||
The content of this header field is meant to convey to message | The content of this header field is meant to convey to message | |||
consumers that authentication work on the message was already done | consumers that authentication work on the message was already done | |||
within its trust boundary, and those results are being presented. It | within its trust boundary, and those results are being presented. It | |||
is not intended to provide message parameters to consumers so that | is not intended to provide message parameters to consumers so that | |||
they can perform authentication protocols on their own. | they can perform authentication protocols on their own. | |||
skipping to change at page 7, line 18 ¶ | skipping to change at page 7, line 26 ¶ | |||
insofar as a non-participating service will continue to interoperate | insofar as a non-participating service will continue to interoperate | |||
with the deployed messaging infrastructure. | with the deployed messaging infrastructure. | |||
In particular, this document establishes no requirement on MTAs to | In particular, this document establishes no requirement on MTAs to | |||
reject or filter arriving messages that do not pass authentication | reject or filter arriving messages that do not pass authentication | |||
checks. The data conveyed by the specified header field's contents | checks. The data conveyed by the specified header field's contents | |||
are for the information of MUAs and filters and are to be used at | are for the information of MUAs and filters and are to be used at | |||
their discretion. | their discretion. | |||
A participating ADMD does undertake some filtering and message | A participating ADMD does undertake some filtering and message | |||
modification obligations described in Section 5. | modification obligations as described in Section 5. | |||
1.5. Definitions | 1.5. Definitions | |||
This section defines various terms used throughout this document. | This section defines various terms used throughout this document. | |||
1.5.1. Key Words | 1.5.1. Key Words | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
document are to be interpreted as described in BCP 14 [RFC2119] | "OPTIONAL" in this document are to be interpreted as described in | |||
[RFC8174] when, and only when, they appear in all capitals, as shown | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
here. | capitals, as shown here. | |||
1.5.2. Internationalized Email | 1.5.2. Internationalized Email | |||
In this document, there are references to messages formatted to | In this document, there are references to messages formatted to | |||
support Email Address Internationalization (EAI). Reference material | support Email Address Internationalization (EAI). Reference material | |||
for this can be found in [RFC6530], [RFC6531], and [RFC6532]. | for this can be found in [RFC6530], [RFC6531], and [RFC6532]. | |||
Generally speaking, these documents allow UTF-8 in most places that | Generally speaking, these documents allow UTF-8 in most places that | |||
free-form text can be found and U-labels where domain names can be | free-form text can be found and U-labels where domain names can be | |||
used, and this document extends Authentication-Results accordingly. | used, and this document extends Authentication-Results accordingly. | |||
1.5.3. Security | 1.5.3. Security | |||
"Guidelines for Writing RFC Text on Security Considerations" | "Guidelines for Writing RFC Text on Security Considerations" | |||
([SECURITY]) discusses authentication and authorization and the | [SECURITY] discusses authentication and authorization and the | |||
conflation of the two concepts. The use of those terms within the | conflation of the two concepts. The use of those terms within the | |||
context of recent message security work has given rise to slightly | context of recent message security work has given rise to slightly | |||
different definitions, and this document reflects those current | different definitions, and this document reflects those current | |||
usages, as follows: | usages, as follows: | |||
o "Authorization" is the establishment of permission to use a | o "Authorization" is the establishment of permission to use a | |||
resource or represent an identity. In this context, authorization | resource or represent an identity. In this context, authorization | |||
indicates that a message from a particular ADMD arrived via a | indicates that a message from a particular ADMD arrived via a | |||
route the ADMD has explicitly approved. | route the ADMD has explicitly approved. | |||
o "Authentication" is the assertion of validity of a piece of data | o "Authentication" is the assertion of validity of a piece of data | |||
about a message (such as the sender's identity) or the message in | about a message (such as the sender's identity) or the message in | |||
its entirety. | its entirety. | |||
As examples: SPF is an authorization mechanism in that it expresses a | As examples: SPF is an authorization mechanism in that it expresses a | |||
result that shows whether the ADMD that apparently sent the message | result that shows whether the ADMD that apparently sent the message | |||
has explicitly authorized the connecting Simple Mail Transfer | has explicitly authorized the connecting Simple Mail Transfer | |||
Protocol ([SMTP]) client to relay messages on its behalf, but they do | Protocol (SMTP) client [SMTP] to relay messages on its behalf, but it | |||
not actually validate any other property of the message itself. By | does not actually validate any other property of the message itself. | |||
contrast, DKIM is agnostic as to the routing of a message but uses | By contrast, DKIM is agnostic as to the routing of a message but uses | |||
cryptographic signatures to authenticate agents, assign (some) | cryptographic signatures to authenticate agents, assign (some) | |||
responsibility for the message (which implies authorization), and | responsibility for the message (which implies authorization), and | |||
ensure that the listed portions of the message were not modified in | ensure that the listed portions of the message were not modified in | |||
transit. Since the signatures are not tied to SMTP connections, they | transit. Since the signatures are not tied to SMTP connections, they | |||
can be added by either the ADMD of origin, intermediate ADMDs (such | can be added by the ADMD of origin, intermediate ADMDs (such as a | |||
as a mailing list server), other handling agents, or any combination. | mailing list server), other handling agents, or any combination of | |||
these. | ||||
Rather than create a separate header field for each class of | Rather than create a separate header field for each class of | |||
solution, this specification groups them both into a single header | solution, this specification groups them both into a single header | |||
field. | field. | |||
1.5.4. Email Architecture | 1.5.4. Email Architecture | |||
o A "border MTA" is an MTA that acts as a gateway between the | o A "border MTA" is an MTA that acts as a gateway between the | |||
general Internet and the users within an organizational boundary. | general Internet and the users within an organizational boundary. | |||
(See also Section 1.2.) | (See also Section 1.2.) | |||
o A "delivery MTA" (or Mail Delivery Agent or MDA) is an MTA that | o A "delivery MTA" (or Mail Delivery Agent or MDA) is an MTA that | |||
actually enacts delivery of a message to a user's inbox or other | actually enacts delivery of a message to a user's inbox or other | |||
final delivery. | final delivery. | |||
o An "intermediate MTA" is any MTA that is not a delivery MTA and is | o An "intermediate MTA" is any MTA that is not a delivery MTA and is | |||
also not the first MTA to handle the message. | also not the first MTA to handle the message. | |||
o A Message Submission Agent (MSA) is an agent that accepts a | ||||
message from an MUA, introducing it to the mail-handling stream. | ||||
The following diagram illustrates the flow of mail among these | The following diagram illustrates the flow of mail among these | |||
defined components. See Internet Mail Architecture [EMAIL-ARCH] for | defined components. See "Internet Mail Architecture" [EMAIL-ARCH] | |||
further discussion on general email system architecture, which | for further discussion on general email system architecture, which | |||
includes detailed descriptions of these components, and Appendix C of | includes detailed descriptions of these components, and Appendix C of | |||
this document for discussion about the common aspects of email | this document for discussion about the common aspects of email | |||
authentication in current environments. | authentication in current environments. | |||
+-----+ +-----+ +------------+ | +-----+ +-----+ +------------+ | |||
| MUA |-->| MSA |-->| Border MTA | | | MUA |-->| MSA |-->| Border MTA | | |||
+-----+ +-----+ +------------+ | +-----+ +-----+ +------------+ | |||
| | | | |||
| | | | |||
V | V | |||
skipping to change at page 9, line 44 ¶ | skipping to change at page 10, line 10 ¶ | |||
In this document, the term "producer" refers to any component that | In this document, the term "producer" refers to any component that | |||
adds this header field to messages it is handling, and "consumer" | adds this header field to messages it is handling, and "consumer" | |||
refers to any component that identifies, extracts, and parses the | refers to any component that identifies, extracts, and parses the | |||
header field to use as part of a handling decision. | header field to use as part of a handling decision. | |||
1.6. Trust Environment | 1.6. Trust Environment | |||
This header field permits one or more message validation mechanisms | This header field permits one or more message validation mechanisms | |||
to communicate output to one or more separate assessment mechanisms. | to communicate output to one or more separate assessment mechanisms. | |||
These mechanisms operate within a unified trust boundary that defines | These mechanisms operate within a unified trust boundary that defines | |||
an Administrative Management Domain (ADMD). An ADMD contains one or | an ADMD. An ADMD contains one or more entities that perform | |||
more entities that perform validation and generate the header field | validation and generate the header field and one or more that consume | |||
and one or more that consume it for some type of assessment. The | it for some type of assessment. The field often contains no | |||
field often contains no integrity or validation mechanism of its own, | integrity or validation mechanism of its own, so its presence must be | |||
so its presence must be trusted implicitly. Hence, valid use of the | trusted implicitly. Hence, valid use of the header field requires | |||
header field requires removing any occurrences of it that claim to be | removing any occurrences of it that claim to be associated with the | |||
associated with the ADMD when the message enters the ADMD. This | ADMD when the message enters the ADMD. This ensures that later | |||
ensures that later occurrences have been added within the trust | occurrences have been added within the trust boundary of the ADMD. | |||
boundary of the ADMD. | ||||
The authserv-id token defined in Section 2.2 can be used to reference | The authserv-id token defined in Section 2.2 can be used to reference | |||
an entire ADMD or a specific validation engine within an ADMD. | an entire ADMD or a specific validation engine within an ADMD. | |||
Although the labeling scheme is left as an operational choice, some | Although the labeling scheme is left as an operational choice, some | |||
guidance for selecting a token is provided in later sections of this | guidance for selecting a token is provided in later sections of this | |||
document. | document. | |||
2. Definition and Format of the Header Field | 2. Definition and Format of the Header Field | |||
This section gives a general overview of the format of the header | This section gives a general overview of the format of the header | |||
field being defined and then provides a formal specification. | field being defined and then provides a formal specification. | |||
2.1. General Description | 2.1. General Description | |||
The header field specified here is called Authentication-Results. It | The header field specified here is called "Authentication-Results". | |||
is a Structured Header Field as defined in Internet Message Format | It is a structured header field as defined in "Internet Message | |||
([MAIL]), and thus all of the related definitions in that document | Format" [MAIL], and thus all of the related definitions in that | |||
apply. | document apply. | |||
This header field is added at the top of the message as it transits | This header field is added at the top of the message as it transits | |||
MTAs that do authentication checks, so some idea of how far away the | MTAs that do authentication checks, so some idea of how far away the | |||
checks were done can be inferred. It is therefore considered to be a | checks were done can be inferred. It is therefore considered to be a | |||
trace field as defined in [MAIL], and thus all of the related | trace field as defined in [MAIL], and thus all of the related | |||
definitions in that document apply. | definitions in that document apply. | |||
The value of the header field (after removing comments) consists of | The value of the header field (after removing comments) consists of | |||
an authentication identifier, an optional version, and then a series | an authentication service identifier, an optional version, and then a | |||
of statements and supporting data. The statements are of the form | series of statements and supporting data. The statements are of the | |||
"method=result" and indicate which authentication method(s) were | form "method=result" and indicate which authentication method or | |||
applied and their respective results. For each such statement, the | methods were applied and their respective results. For each such | |||
supporting data can include a "reason" string and one or more | statement, the supporting data can include a "reason" string and one | |||
"property=value" statements indicating which message properties were | or more "property=value" statements indicating which message | |||
evaluated to reach that conclusion. | properties were evaluated to reach that conclusion. | |||
The header field can appear more than once in a single message, more | The header field can appear more than once in a single message, more | |||
than one result can be represented in a single header field, or a | than one result can be represented in a single header field, or a | |||
combination of these can be applied. | combination of these can be applied. | |||
2.2. Formal Definition | 2.2. Formal Definition | |||
Formally, the header field is specified as shown below using | Formally, the header field is specified as shown below using | |||
Augmented Backus-Naur Form ([ABNF]). Examples of valid header fields | Augmented Backus-Naur Form [ABNF]. Examples of valid header fields | |||
with explanations of their semantics can be found in Appendix B. | with explanations of their semantics can be found in Appendix B. | |||
authres-header-field = "Authentication-Results:" authres-payload | authres-header-field = "Authentication-Results:" authres-payload | |||
authres-payload = [CFWS] authserv-id | authres-payload = [CFWS] authserv-id | |||
[ CFWS authres-version ] | [ CFWS authres-version ] | |||
( no-result / 1*resinfo ) [CFWS] CRLF | ( no-result / 1*resinfo ) [CFWS] CRLF | |||
authserv-id = value | authserv-id = value | |||
; see below for a description of this element | ; see below for a description of this element | |||
skipping to change at page 11, line 19 ¶ | skipping to change at page 11, line 34 ¶ | |||
authres-version = 1*DIGIT [CFWS] | authres-version = 1*DIGIT [CFWS] | |||
; indicates which version of this specification is in use; | ; indicates which version of this specification is in use; | |||
; this specification is version "1", and the absence of a | ; this specification is version "1", and the absence of a | |||
; version implies this version of the specification | ; version implies this version of the specification | |||
no-result = [CFWS] ";" [CFWS] "none" | no-result = [CFWS] ";" [CFWS] "none" | |||
; the special case of "none" is used to indicate that no | ; the special case of "none" is used to indicate that no | |||
; message authentication was performed | ; message authentication was performed | |||
resinfo = [CFWS] ";" methodspec [ CFWS reasonspec ] | resinfo = [CFWS] ";" methodspec [ CFWS reasonspec ] | |||
*( CFWS propspec ) | [ CFWS 1*propspec ] | |||
methodspec = [CFWS] method [CFWS] "=" [CFWS] result | methodspec = [CFWS] method [CFWS] "=" [CFWS] result | |||
; indicates which authentication method was evaluated | ; indicates which authentication method was evaluated | |||
; and what its output was | ; and what its output was | |||
reasonspec = "reason" [CFWS] "=" [CFWS] value | reasonspec = "reason" [CFWS] "=" [CFWS] value | |||
; a free-form comment on the reason the given result | ; a free-form comment on the reason the given result | |||
; was returned | ; was returned | |||
propspec = ptype [CFWS] "." [CFWS] property [CFWS] "=" pvalue | propspec = ptype [CFWS] "." [CFWS] property [CFWS] "=" pvalue | |||
; an indication of which properties of the message | ; an indication of which properties of the message | |||
; were evaluated by the authentication scheme being | ; were evaluated by the authentication scheme being | |||
; applied to yield the reported result | ; applied to yield the reported result | |||
method = Keyword [ [CFWS] "/" [CFWS] method-version ] | method = Keyword [ [CFWS] "/" [CFWS] method-version ] | |||
; a method indicates which method's result is | ; a method indicates which method's result is | |||
; represented by "result", and is one of the methods | ; represented by "result"; it is one of the methods | |||
; explicitly defined as valid in this document | ; explicitly defined as valid in this document | |||
; or is an extension method as defined below | ; or is an extension method as defined below | |||
method-version = 1*DIGIT [CFWS] | method-version = 1*DIGIT [CFWS] | |||
; indicates which version of the method specification is | ; indicates which version of the method specification is | |||
; in use, corresponding to the matching entry in the IANA | ; in use, corresponding to the matching entry in the IANA | |||
; "Email Authentication Methods" registry; a value of "1" | ; "Email Authentication Methods" registry; a value of "1" | |||
; is assumed if this version string is absent | ; is assumed if this version string is absent | |||
result = Keyword | result = Keyword | |||
; indicates the results of the attempt to authenticate | ; indicates the results of the attempt to authenticate | |||
; the message; see below for details | ; the message; see below for details | |||
ptype = Keyword | ptype = Keyword | |||
; indicates whether the property being evaluated was | ; indicates whether the property being evaluated was | |||
; a parameter to an [SMTP] command, was a value taken | ; a parameter to an SMTP command [SMTP], was a value taken | |||
; from a message header field, was some property of | ; from a message header field, was some property of | |||
; the message body, or was some other property evaluated by | ; the message body, or was some other property evaluated by | |||
; the receiving MTA; expected to be one of the "property | ; the receiving MTA; expected to be one of the "property | |||
; types" explicitly defined as valid, or an extension | ; types" explicitly defined as valid, or an extension | |||
; ptype, as defined below | ; ptype, as defined below | |||
property = special-smtp-verb / Keyword | property = special-smtp-verb / Keyword | |||
; indicates more specifically than "ptype" what the | ; indicates more specifically than "ptype" what the | |||
; source of the evaluated property is; the exact meaning | ; source of the evaluated property is; the exact meaning | |||
; is specific to the method whose result is being reported | ; is specific to the method whose result is being reported | |||
; and is defined more clearly below | ; and is defined more clearly below | |||
special-smtp-verb = "mailfrom" / "rcptto" | special-smtp-verb = "mailfrom" / "rcptto" | |||
; special cases of [SMTP] commands that are made up | ; special cases of SMTP commands [SMTP] that are made up | |||
; of multiple words | ; of multiple words | |||
pvalue = [CFWS] ( value / [ [ local-part ] "@" ] domain-name ) | pvalue = [CFWS] ( value / [ [ local-part ] "@" ] domain-name ) | |||
[CFWS] | [CFWS] | |||
; the value extracted from the message property defined | ; the value extracted from the message property defined | |||
; by the "ptype.property" construction | ; by the "ptype.property" construction | |||
"local-part" is defined in Section 3.4.1 of [MAIL], as modified by | "local-part" is defined in Section 3.4.1 of [MAIL], as modified by | |||
[RFC6531]. | [RFC6531]. | |||
"CFWS" is defined in Section 3.2.2 of [MAIL]. | "CFWS" is defined in Section 3.2.2 of [MAIL]. | |||
"Keyword" is defined in Section 4.1.2 of [SMTP]. It is further | "Keyword" is defined in Section 4.1.2 of [SMTP]. It is further | |||
constrained by the necesity of being registered in the IANA registry | constrained by the necessity of being registered in the Internet | |||
relevant to the context in which it it is used. See Section 2.7, and | Assigned Numbers Authority (IANA) registry relevant to the context in | |||
Section 2.3, and Section 6. | which it is used. See Sections 2.3, 2.7, and 6. | |||
The "value" is as defined in Section 5.1 of [MIME], with "quoted- | The "value" is as defined in Section 5.1 of [MIME], with | |||
string" updated as specified in [RFC6532]. | "quoted-string" updated as specified in [RFC6532]. | |||
The "domain-name" is as defined in Section 3.5 of [DKIM]. | The "domain-name" is as defined in Section 3.5 of [DKIM]. | |||
The "Keyword" used in "result" above is further constrained by the | ||||
necessity of being enumerated in Section 2.7. | ||||
See Section 2.5 for a description of the authserv-id element. | See Section 2.5 for a description of the authserv-id element. | |||
If the value portion of a "pvalue" construction identifies something | If the value portion of a "pvalue" construction identifies something | |||
intended to be an email identity, then it MUST use the right hand | intended to be an email identity, then it MUST use the right-hand | |||
portion of that ABNF definition. | portion of that ABNF definition. | |||
The list of commands eligible for use with the "smtp" ptype can be | The list of commands eligible for use with the "smtp" ptype can be | |||
found in Section 4.1 of [SMTP]. | found in Section 4.1 of [SMTP]. | |||
The "propspec" may be omitted if, for example, the method was unable | The "propspec" may be omitted if, for example, the method was unable | |||
to extract any properties to do its evaluation yet still has a result | to extract any properties to do its evaluation yet still has a result | |||
to report. It may also be omitted if the agent generating this | to report. It may also be omitted if the agent generating this | |||
result wishes not to reveal such properties to downstream agents. | result wishes not to reveal such properties to downstream agents. | |||
skipping to change at page 13, line 27 ¶ | skipping to change at page 13, line 46 ¶ | |||
extracted. See Section 2.4 for details. | extracted. See Section 2.4 for details. | |||
Examples of complete messages using this header field can be found in | Examples of complete messages using this header field can be found in | |||
Appendix B. | Appendix B. | |||
2.3. Property Types (ptypes) and Properties | 2.3. Property Types (ptypes) and Properties | |||
The "ptype" in the ABNF above indicates the general type of property | The "ptype" in the ABNF above indicates the general type of property | |||
being described by the result being reported, upon which the reported | being described by the result being reported, upon which the reported | |||
result was based. Coupled with the "property", which is more | result was based. Coupled with the "property", which is more | |||
specific, they indicate from where the reported data were extracted. | specific, it indicates from where the reported "pvalue" was | |||
This can include a particular part of the message header or body, | extracted. This can include a particular part of the message header | |||
some part of the SMTP session, a secondary output of an | or body, some part of the SMTP session, a secondary output of an | |||
authentication method (apart from its pure result), or some other | authentication method (apart from its pure result), or some other | |||
aspect of the message's handling. | aspect of the message's handling. | |||
Combinations of ptypes and properties are registered and described in | Combinations of ptypes and properties are registered and described in | |||
the "Email Authentication Methods" registry, coupled with the | the "Email Authentication Methods" registry, coupled with the | |||
authentication methods with which they are used. This is further | authentication methods with which they are used. This is further | |||
described in Section 6. | described in Section 6. | |||
Legal values of "ptype" are as defined in the IANA "Email | Legal values of "ptype" are as defined in the IANA "Email | |||
Authentication Property Types" registry, created by [RFC7410]. The | Authentication Property Types" registry, created by [RFC7410]. The | |||
initial values and what they typically indicate are as follows, based | initial values and what they typically indicate are as follows, based | |||
on [RFC7001]: | on [RFC7001]: | |||
body: Information that was extracted from the body of the message. | body: Information that was extracted from the body of the message. | |||
This might be an arbitrary string of bytes, a hash of a string of | This might be an arbitrary string of bytes, a hash of a string of | |||
bytes, a Uniform Resource Identifier, or some other content of | bytes, a Uniform Resource Identifier, or some other content of | |||
interest. The "property" is an indication of where within the | interest. The "property" is an indication of where within the | |||
message body the extracted content was found, and can indicate an | message body the extracted content was found and can indicate an | |||
offset, identify a MIME part, etc. (At the time of this revision, | offset, identify a MIME part, etc. (At the time of this revision, | |||
no properties matching this ptype have been registered. | no properties matching this ptype have been registered. | |||
Accordingly, this ptype may be deprecated in the future.) | Accordingly, this ptype may be deprecated in the future.) | |||
header: Indicates information that was extracted from the header of | header: Indicates information that was extracted from the header of | |||
the message. This might be the value of a header field or some | the message. This might be the value of a header field or some | |||
portion of a header field. The "property" gives a more precise | portion of a header field. The "property" gives a more precise | |||
indication of the place in the header from which the extraction | indication of the place in the header from which the extraction | |||
took place. | took place. | |||
skipping to change at page 14, line 43 ¶ | skipping to change at page 15, line 21 ¶ | |||
identify the local policy that was applied and the result it | identify the local policy that was applied and the result it | |||
returned. | returned. | |||
For example, a DKIM signature is not required to include the Subject | For example, a DKIM signature is not required to include the Subject | |||
header field in the set of fields that are signed. An ADMD receiving | header field in the set of fields that are signed. An ADMD receiving | |||
such a message might decide that such a signature is unacceptable, | such a message might decide that such a signature is unacceptable, | |||
even if it passes, because the content of the Subject header field | even if it passes, because the content of the Subject header field | |||
could be altered post-signing without invalidating the signature. | could be altered post-signing without invalidating the signature. | |||
Such an ADMD could replace the DKIM "pass" result with a "policy" | Such an ADMD could replace the DKIM "pass" result with a "policy" | |||
result and then also include the following in the corresponding | result and then also include the following in the corresponding | |||
Authentication-Result field: | Authentication-Results field: | |||
... dkim=policy policy.dkim-rules=unsigned-subject ... | ... dkim=policy policy.dkim-rules=unsigned-subject ... | |||
In this case, the property is "dkim-rules", indicating some local | In this case, the property is "dkim-rules", indicating that some | |||
check by that name took place and that check returned a result of | local check by that name took place and that check returned a result | |||
"unsigned-subject". These are arbitrary names selected by (and | of "unsigned-subject". These are arbitrary names selected by (and | |||
presumably used within) the ADMD making use of them, so they are not | presumably used within) the ADMD making use of them, so they are not | |||
normally registered with IANA or otherwise specified apart from | normally registered with IANA or otherwise specified apart from | |||
setting syntax restrictions that allow for easy parsing within the | setting syntax restrictions that allow for easy parsing within the | |||
rest of the header field. | rest of the header field. | |||
This ptype existed in the original specification for this header | This ptype existed in the original specification for this header | |||
field ([RFC5451]), but without a complete description or example of | field [RFC5451], but without a complete description or example of | |||
intended use. As a result, it has not seen any practical use to date | intended use. As a result, it has not seen any practical use to date | |||
that matches its intended purpose. These added details are provided | that matches its intended purpose. These added details are provided | |||
to guide implementers toward proper use. | to guide implementers toward proper use. | |||
2.5. Authentication Identifier Field | 2.5. Authentication Service Identifier Field | |||
Every Authentication-Results header field has an authentication | Every Authentication-Results header field has an authentication | |||
service identifier field (authserv-id above). Specifically, this is | service identifier field (authserv-id above). Specifically, this is | |||
any string intended to identify the authentication service within the | any string intended to identify the authentication service within the | |||
ADMD that conducted authentication checks on the message. This | ADMD that conducted authentication checks on the message. This | |||
identifier is intended to be machine-readable and not necessarily | identifier is intended to be machine-readable and not necessarily | |||
meaningful to users. | meaningful to users. | |||
Note that in an EAI-formatted message, this identifier may be | Note that in an EAI-formatted message, this identifier may be | |||
expressed in UTF-8. | expressed in UTF-8. | |||
skipping to change at page 15, line 38 ¶ | skipping to change at page 16, line 19 ¶ | |||
filters SHOULD use this identifier to determine whether or not the | filters SHOULD use this identifier to determine whether or not the | |||
data contained in an Authentication-Results header field ought to be | data contained in an Authentication-Results header field ought to be | |||
used or ignored. | used or ignored. | |||
For simplicity and scalability, the authentication service identifier | For simplicity and scalability, the authentication service identifier | |||
SHOULD be a common token used throughout the ADMD. Common practice | SHOULD be a common token used throughout the ADMD. Common practice | |||
is to use the DNS domain name used by or within that ADMD, sometimes | is to use the DNS domain name used by or within that ADMD, sometimes | |||
called the "organizational domain", but this is not strictly | called the "organizational domain", but this is not strictly | |||
necessary. | necessary. | |||
For tracing and debugging purposes, the authentication identifier can | For tracing and debugging purposes, the authentication service | |||
instead be the specific hostname of the MTA performing the | identifier can instead be the specific hostname of the MTA performing | |||
authentication check whose result is being reported. Moreover, some | the authentication check whose result is being reported. Moreover, | |||
implementations define a substructure to the identifier; such | some implementations define a substructure to the identifier; such | |||
structures are outside of the scope of this specification. | structures are outside of the scope of this specification. | |||
Note, however, that using a local, relative identifier like a flat | Note, however, that using a local, relative identifier like a flat | |||
hostname, rather than a hierarchical and globally unique ADMD | hostname, rather than a hierarchical and globally unique ADMD | |||
identifier like a DNS domain name, makes configuration more difficult | identifier like a DNS domain name, makes configuration more difficult | |||
for large sites. The hierarchical identifier permits aggregating | for large sites. The hierarchical identifier permits aggregating | |||
related, trusted systems together under a single, parent identifier, | related, trusted systems together under a single, parent identifier, | |||
which in turn permits assessing the trust relationship with a single | which in turn permits assessing the trust relationship with a single | |||
reference. The alternative is a flat namespace requiring | reference. The alternative is a flat namespace requiring | |||
individually listing each trusted system. Since consumers will use | individually listing each trusted system. Since consumers will use | |||
skipping to change at page 16, line 16 ¶ | skipping to change at page 16, line 45 ¶ | |||
o Changes to the identifier impose a large, centralized | o Changes to the identifier impose a large, centralized | |||
administrative burden. | administrative burden. | |||
o Ongoing administrative changes require constantly updating this | o Ongoing administrative changes require constantly updating this | |||
centralized table, making it difficult to ensure that an MUA or | centralized table, making it difficult to ensure that an MUA or | |||
downstream filter will have access to accurate information for | downstream filter will have access to accurate information for | |||
assessing the usability of the header field's content. In | assessing the usability of the header field's content. In | |||
particular, consumers of the header field will need to know not | particular, consumers of the header field will need to know not | |||
only the current identifier(s) in use but previous ones as well to | only the current identifier(s) in use but previous ones as well to | |||
account for delivery latency or later re-assessment of the header | account for delivery latency or later reassessment of the header | |||
field's contents. | field's content. | |||
Examples of valid authentication identifiers are "example.com", | Examples of valid authentication service identifiers are | |||
"mail.example.org", "ms1.newyork.example.com", and "example-auth". | "example.com", "mail.example.org", "ms1.newyork.example.com", and | |||
"example-auth". | ||||
2.6. Version Tokens | 2.6. Version Tokens | |||
The grammar above provides for the optional inclusion of versions on | The grammar above provides for the optional inclusion of versions on | |||
both the header field itself (attached to the authserv-id token) and | both the header field itself (attached to the authserv-id token) and | |||
on each of the methods being reported. The method version refers to | on each of the methods being reported. The method version refers to | |||
the method itself, which is specified in the documents describing | the method itself, which is specified in the documents describing | |||
those methods, while the authserv-id version refers to this document | those methods, while the authserv-id version refers to this document | |||
and thus the syntax of this header field. | and thus the syntax of this header field. | |||
The purpose of including these is to avoid misinterpretation of the | The purpose of including these is to avoid misinterpretation of the | |||
results. That is, if a parser finds a version after an authserv-id | results. That is, if a parser finds a version after an authserv-id | |||
that it does not explicitly know, it can immediately discontinue | that it does not explicitly know, it can immediately discontinue | |||
trying to parse since what follows might not be in an expected | trying to parse, since what follows might not be in an expected | |||
format. For a method version, the parser SHOULD ignore a method | format. For a method version, the parser SHOULD ignore a method | |||
result if the version is not supported in case the semantics of the | result if the version is not supported in case the semantics of the | |||
result have a different meaning than what is expected. For example, | result have a different meaning than what is expected. For example, | |||
if a hypothetical DKIM version 2 yielded a "pass" result for | if a hypothetical DKIM version 2 yielded a "pass" result for | |||
different reasons than version 1 does, a consumer of this field might | different reasons than version 1 does, a consumer of this field might | |||
not want to use the altered semantics. Allowing versions in the | not want to use the altered semantics. Allowing versions in the | |||
syntax is a way to indicate this and let the consumer of the header | syntax is a way to indicate this and let the consumer of the header | |||
field decide. | field decide. | |||
2.7. Defined Methods and Result Values | 2.7. Defined Methods and Result Values | |||
skipping to change at page 18, line 10 ¶ | skipping to change at page 18, line 45 ¶ | |||
header field rather than a distinct header field. For example, the | header field rather than a distinct header field. For example, the | |||
ptype-property combination "header.d" refers to the content of the | ptype-property combination "header.d" refers to the content of the | |||
"d" (signing domain) tag from within the signature header field, and | "d" (signing domain) tag from within the signature header field, and | |||
not a distinct header field called "d". | not a distinct header field called "d". | |||
Note that in an EAI-formatted message, the values of the "d" and "i" | Note that in an EAI-formatted message, the values of the "d" and "i" | |||
properties can be expressed in UTF-8. | properties can be expressed in UTF-8. | |||
In addition to previous registrations, this document registers the | In addition to previous registrations, this document registers the | |||
DKIM tags "a" (cryptographic algorithm used to sign the message) and | DKIM tags "a" (cryptographic algorithm used to sign the message) and | |||
"s" (selector) as reportable properties. This can be used to aid | "s" (selector) as reportable properties. These can be used to aid | |||
receivers during post-verification processing. In particular, | receivers during post-verification processing. In particular, | |||
[RFC8301] obsoleted use of the "rsa-sha1" algorithm in DKIM, so it is | [RFC8301] obsoleted use of the "rsa-sha1" algorithm in DKIM, so it is | |||
important to be able to distinguish such signatures from those using | important to be able to distinguish such signatures from those using | |||
preferred algorithms. | preferred algorithms. | |||
The ability to report different DKIM results for a message with | The ability to report different DKIM results for a message with | |||
multiple signatures is described in [RFC6008]. | multiple signatures is described in [RFC6008]. | |||
[DKIM] advises that if a message fails verification, it is to be | [DKIM] advises that if a message fails verification, it is to be | |||
treated as an unsigned message. A report of "fail" here permits the | treated as an unsigned message. A report of "fail" here permits the | |||
receiver of the report to decide how to handle the failure. A report | receiver of the report to decide how to handle the failure. A report | |||
of "neutral" or "none" preempts that choice, ensuring the message | of "neutral" or "none" preempts that choice, ensuring that the | |||
will be treated as if it had not been signed. | message will be treated as if it had not been signed. | |||
2.7.2. SPF | 2.7.2. SPF | |||
SPF uses the "spf" method name. The result values for SPF are | SPF uses the "spf" method name. The result values for SPF are | |||
defined in Section 2.6 of [SPF], and those definitions are included | defined in Section 2.6 of [SPF], and those definitions are included | |||
here by reference: | here by reference: | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| Code | Meaning | | | Code | Meaning | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| none | [SPF], Section 2.6.1 | | | none | [SPF], Section 2.6.1 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| pass | [SPF], Section 2.6.3 | | | pass | [SPF], Section 2.6.3 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| fail | [SPF], Section 2.6.4 | | | fail | [SPF], Section 2.6.4 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| softfail | [SPF], Section 2.6.5 | | | softfail | [SPF], Section 2.6.5 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| policy | [this document], Section 2.4 | | | policy | RFC 8601, Section 2.4 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| neutral | [SPF], Section 2.6.2 | | | neutral | [SPF], Section 2.6.2 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| temperror | [SPF], Section 2.6.6 | | | temperror | [SPF], Section 2.6.6 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
| permerror | [SPF], Section 2.6.7 | | | permerror | [SPF], Section 2.6.7 | | |||
+-----------+------------------------------+ | +-----------+------------------------------+ | |||
These result codes are used in the context of this specification to | These result codes are used in the context of this specification to | |||
reflect the result returned by the component conducting SPF | reflect the result returned by the component conducting SPF | |||
evaluation. | evaluation. | |||
For SPF, the ptype used is "smtp", and the property is either | For SPF, the ptype used is "smtp", and the property is either | |||
"mailfrom" or "helo", since those values are the ones SPF can | "mailfrom" or "helo", since those values are the ones SPF can | |||
evaluate. (If the SMTP client issued the EHLO command instead of | evaluate. (If the SMTP client issued the EHLO command instead of | |||
HELO, the property used is "helo".) | HELO, the property used is "helo".) | |||
skipping to change at page 19, line 24 ¶ | skipping to change at page 20, line 10 ¶ | |||
For this method, an additional result of "policy" is defined, which | For this method, an additional result of "policy" is defined, which | |||
means the client was authorized to inject or relay mail on behalf of | means the client was authorized to inject or relay mail on behalf of | |||
the sender's DNS domain according to the authentication method's | the sender's DNS domain according to the authentication method's | |||
algorithm, but local policy dictates that the result is unacceptable. | algorithm, but local policy dictates that the result is unacceptable. | |||
For example, "policy" might be used if SPF returns a "pass" result, | For example, "policy" might be used if SPF returns a "pass" result, | |||
but a local policy check matches the sending DNS domain to one found | but a local policy check matches the sending DNS domain to one found | |||
in an explicit list of unacceptable DNS domains (e.g., spammers). | in an explicit list of unacceptable DNS domains (e.g., spammers). | |||
If the retrieved sender policies used to evaluate SPF do not contain | If the retrieved sender policies used to evaluate SPF do not contain | |||
explicit provisions for authenticating the local-part (see Section | explicit provisions for authenticating the local-part (see | |||
3.4.1 of [MAIL]) of an address, the "pvalue" reported along with | Section 3.4.1 of [MAIL]) of an address, the "pvalue" reported along | |||
results for this mechanism SHOULD NOT include the local-part or the | with results for this mechanism SHOULD NOT include the local-part or | |||
following "@" character. | the following "@" character. | |||
2.7.3. "iprev" | 2.7.3. "iprev" | |||
The result values used by the "iprev" method, defined in Section 3, | The result values used by the "iprev" method, defined in Section 3, | |||
are as follows: | are as follows: | |||
pass: The DNS evaluation succeeded, i.e., the "reverse" and | pass: The DNS evaluation succeeded, i.e., the "reverse" and | |||
"forward" lookup results were returned and were in agreement. | "forward" lookup results were returned and were in agreement. | |||
fail: The DNS evaluation failed. In particular, the "reverse" and | fail: The DNS evaluation failed. In particular, the "reverse" and | |||
skipping to change at page 20, line 12 ¶ | skipping to change at page 20, line 43 ¶ | |||
other error condition resulted. A later attempt may produce a | other error condition resulted. A later attempt may produce a | |||
final result. | final result. | |||
permerror: The DNS evaluation could not be completed because no PTR | permerror: The DNS evaluation could not be completed because no PTR | |||
data are published for the connecting IP address, e.g., a DNS | data are published for the connecting IP address, e.g., a DNS | |||
RCODE of 3, commonly known as NXDOMAIN, or an RCODE of 0 (NOERROR) | RCODE of 3, commonly known as NXDOMAIN, or an RCODE of 0 (NOERROR) | |||
in a reply containing no answers, was returned. This prevented | in a reply containing no answers, was returned. This prevented | |||
completion of the evaluation. A later attempt is unlikely to | completion of the evaluation. A later attempt is unlikely to | |||
produce a final result. | produce a final result. | |||
There is no "none" for this method since any TCP connection | There is no "none" for this method, since any TCP connection | |||
delivering email has an IP address associated with it, so some kind | delivering email has an IP address associated with it, so some kind | |||
of evaluation will always be possible. | of evaluation will always be possible. | |||
The result is reported using a ptype of "policy" (as this is not part | The result is reported using a ptype of "policy" (as this is not part | |||
of any established protocol) and a property of "iprev". | of any established protocol) and a property of "iprev". | |||
For discussion of the format of DNS replies, see "Domain Names - | For discussion of the format of DNS replies, see "Domain names - | |||
Implementation and Specification" ([DNS]). | implementation and specification" [DNS]. | |||
2.7.4. SMTP AUTH | 2.7.4. SMTP AUTH | |||
SMTP AUTH (defined in [AUTH]) is represented by the "auth" method. | SMTP AUTH (defined in [AUTH]) is represented by the "auth" method. | |||
Its result values are as follows: | Its result values are as follows: | |||
none: SMTP authentication was not attempted. | none: SMTP authentication was not attempted. | |||
pass: The SMTP client authenticated to the server reporting the | pass: The SMTP client authenticated to the server reporting the | |||
result using the protocol described in [AUTH]. | result using the protocol described in [AUTH]. | |||
skipping to change at page 21, line 9 ¶ | skipping to change at page 21, line 41 ¶ | |||
The result of AUTH is reported using a ptype of "smtp" and a property | The result of AUTH is reported using a ptype of "smtp" and a property | |||
of either: | of either: | |||
o "auth", in which case the value is the authorization identity | o "auth", in which case the value is the authorization identity | |||
generated by the exchange initiated by the AUTH command; or | generated by the exchange initiated by the AUTH command; or | |||
o "mailfrom", in which case the value is the mailbox identified by | o "mailfrom", in which case the value is the mailbox identified by | |||
the AUTH parameter used with the MAIL FROM command. | the AUTH parameter used with the MAIL FROM command. | |||
Note that in an EAI-formatted message, the local-part can be | Note that in an EAI-formatted message, the local-part can be | |||
expressed in UTF-8, and the domain can be expressed as a U-label. | expressed in UTF-8 and the domain can be expressed as a U-label. | |||
If both identities are available, both can be reported. For example, | If both identities are available, both can be reported. For example, | |||
consider this command issued by a client that has completed session | consider this command issued by a client that has completed session | |||
authentication with the AUTH command resulting in an authorized | authentication with the AUTH command resulting in an authorized | |||
identity of "client@c.example": | identity of "client@c.example": | |||
MAIL FROM:<alice@a.example> AUTH=<bob@b.example> | MAIL FROM:<alice@a.example> AUTH=<bob@b.example> | |||
This could result in a "resinfo" construction like so: | This could result in a "resinfo" construction like so: | |||
; auth=pass smtp.auth=client@c.example smtp.mailfrom=bob@b.example | ; auth=pass smtp.auth=client@c.example smtp.mailfrom=bob@b.example | |||
Note that in all cases other than "pass", the message was sent by an | Note that in all cases other than "pass", the message was sent by an | |||
unauthenticated client. All non-"pass" cases SHOULD thus be treated | unauthenticated client. All non-"pass" cases SHOULD thus be treated | |||
as equivalent with respect to this method. | as equivalent with respect to this method. | |||
2.7.5. Other Registered Codes | 2.7.5. Other Registered Codes | |||
Result codes were also registered in other RFCs as follows: | Result codes were also registered in other RFCs as follows: | |||
o Vouch By Reference (in [AR-VBR], represented by "vbr"); | o Vouch By Reference (in [AR-VBR], represented by "vbr"). | |||
o Authorized Third-Party Signatures (in [ATPS], represented by | o Authorized Third-Party Signatures (in [ATPS], represented by | |||
"dkim-atps"); | "dkim-atps"). | |||
o Author Domain Signing Practices (in [ADSP], represented by "dkim- | o Author Domain Signing Practices (in [ADSP], represented by | |||
adsp"); | "dkim-adsp"). | |||
o Require-Recipient-Valid-Since (in [RRVS], represented by "rrvs"); | o Require-Recipient-Valid-Since (in [RRVS], represented by "rrvs"). | |||
o S/MIME (in [SMIME-REG], represented by "smime"). | o S/MIME (in [SMIME-REG], represented by "smime"). | |||
Note that in an EAI-formatted message, "vbr.mv" and "vbr.md", which | Note that in an EAI-formatted message, "vbr.mv" and "vbr.md", which | |||
are already registered, can be expressed as U-labels. | are already registered, can be expressed as U-labels. | |||
2.7.6. Extension Methods | 2.7.6. Extension Methods | |||
Additional authentication method identifiers (extension methods) may | Additional authentication method identifiers (extension methods) may | |||
be defined in the future by later revisions or extensions to this | be defined in the future by later revisions or extensions to this | |||
specification. These method identifiers are registered with the | specification. These method identifiers are registered with IANA | |||
Internet Assigned Numbers Authority (IANA) and, preferably, published | and, preferably, published in an RFC. See Section 6 for further | |||
in an RFC. See Section 6 for further details. | details. | |||
Extension methods can be defined for the following reasons: | Extension methods can be defined for the following reasons: | |||
1. To allow additional information from new authentication systems | 1. To allow additional information from new authentication systems | |||
to be communicated to MUAs or downstream filters. The names of | to be communicated to MUAs or downstream filters. The names of | |||
such identifiers ought to reflect the name of the method being | such identifiers ought to reflect the name of the method being | |||
defined but ought not be needlessly long. | defined but ought not be needlessly long. | |||
2. To allow the creation of "sub-identifiers" that indicate | 2. To allow the creation of "sub-identifiers" that indicate | |||
different levels of authentication and differentiate between | different levels of authentication and differentiate between | |||
their relative strengths, e.g., "auth1-weak" and "auth1-strong". | their relative strengths, e.g., "auth1-weak" and "auth1-strong". | |||
Authentication method implementers are encouraged to provide adequate | Authentication method implementers are encouraged to provide adequate | |||
information, via message header field comments if necessary, to allow | information, via message header field comments if necessary, to allow | |||
an MUA developer to understand or relay ancillary details of | an MUA developer to understand or relay ancillary details of | |||
authentication results. For example, if it might be of interest to | authentication results. For example, if it might be of interest to | |||
relay what data was used to perform an evaluation, such information | relay what data were used to perform an evaluation, such information | |||
could be relayed as a comment in the header field, such as: | could be relayed as a comment in the header field, such as: | |||
Authentication-Results: example.com; | Authentication-Results: example.com; | |||
foo=pass bar.baz=blob (2 of 3 tests OK) | foo=pass bar.baz=blob (2 of 3 tests OK) | |||
Experimental method identifiers MUST only be used within ADMDs that | Experimental method identifiers MUST only be used within ADMDs that | |||
have explicitly consented to use them. These method identifiers and | have explicitly consented to use them. These method identifiers and | |||
the parameters associated with them are not documented formally. | the parameters associated with them are not documented formally. | |||
Therefore, they are subject to change at any time and not suitable | Therefore, they are subject to change at any time and not suitable | |||
for production use. Any MTA, MUA, or downstream filter intended for | for production use. Any MTA, MUA, or downstream filter intended for | |||
production use SHOULD ignore or delete any Authentication-Results | production use SHOULD ignore or delete any Authentication-Results | |||
header field that includes an experimental (unknown) method | header field that includes an experimental (unknown) method | |||
identifier. | identifier. | |||
2.7.7. Extension Result Codes | 2.7.7. Extension Result Codes | |||
Additional result codes (extension results) might be defined in the | Additional result codes (extension results) might be defined in the | |||
future by later revisions or extensions to this specification. Non- | future by later revisions or extensions to this specification. | |||
experimental result codes MUST be registered with the Internet | Non-experimental result codes MUST be registered with IANA (and, | |||
Assigned Numbers Authority (IANA) and preferably published in an RFC. | preferably, published in an RFC). See Section 6 for further details. | |||
See Section 6 for further details. | ||||
Experimental results MUST only be used within ADMDs that have | Experimental results MUST only be used within ADMDs that have | |||
explicitly consented to use them. These results and the parameters | explicitly consented to use them. These results and the parameters | |||
associated with them are not formally documented. Therefore, they | associated with them are not formally documented. Therefore, they | |||
are subject to change at any time and not suitable for production | are subject to change at any time and not suitable for production | |||
use. Any MTA, MUA, or downstream filter intended for production use | use. Any MTA, MUA, or downstream filter intended for production use | |||
SHOULD ignore or delete any Authentication-Results header field that | SHOULD ignore or delete any Authentication-Results header field that | |||
includes an extension result. | includes an extension result. | |||
3. The "iprev" Authentication Method | 3. The "iprev" Authentication Method | |||
skipping to change at page 23, line 34 ¶ | skipping to change at page 24, line 20 ¶ | |||
the union of IP addresses to which each member of N maps (after | the union of IP addresses to which each member of N maps (after | |||
corresponding "A" and "AAAA" queries) is L, then this test is | corresponding "A" and "AAAA" queries) is L, then this test is | |||
successful if I is an element of L. | successful if I is an element of L. | |||
Often an MTA receiving a connection that fails this test will simply | Often an MTA receiving a connection that fails this test will simply | |||
reject the connection using the enhanced status code defined in | reject the connection using the enhanced status code defined in | |||
[AUTH-ESC]. If an operator instead wishes to make this information | [AUTH-ESC]. If an operator instead wishes to make this information | |||
available to downstream agents as a factor in handling decisions, it | available to downstream agents as a factor in handling decisions, it | |||
records a result in accordance with Section 2.7.3. | records a result in accordance with Section 2.7.3. | |||
The response to a PTR query could contain multiple names. To prevent | The response to a "PTR" query could contain multiple names. To | |||
heavy DNS loads, agents performing these queries MUST be implemented | prevent heavy DNS loads, agents performing these queries MUST be | |||
such that the number of names evaluated by generation of | implemented such that the number of names evaluated by generation of | |||
corresponding A or AAAA queries is limited so as not to be unduly | corresponding "A" or "AAAA" queries is limited so as not to be unduly | |||
taxing to the DNS infrastructure, though it MAY be configurable by an | taxing to the DNS infrastructure, though it MAY be configurable by an | |||
administrator. As an example, Section 4.6.4 of [SPF] chose a limit | administrator. As an example, Section 4.6.4 of [SPF] chose a limit | |||
of 10 for its implementation of this algorithm. | of 10 for its implementation of this algorithm. | |||
"DNS Extensions to Support IP Version 6" ([DNS-IP6]) discusses the | "DNS Extensions to Support IP Version 6" [DNS-IP6] discusses the | |||
query formats for the IPv6 case. | query formats for the IPv6 case. | |||
There is some contention regarding the wisdom and reliability of this | There is some contention regarding the wisdom and reliability of this | |||
test. For example, in some regions, it can be difficult for this | test. For example, in some regions, it can be difficult for this | |||
test ever to pass because the practice of arranging to match the | test ever to pass because the practice of arranging to match the | |||
forward and reverse DNS is infrequently observed. Therefore, the | forward and reverse DNS is infrequently observed. Therefore, the | |||
precise implementation details of how a verifier performs an "iprev" | precise implementation details of how a verifier performs an "iprev" | |||
test are not specified here. The verifier MAY report a successful or | test are not specified here. The verifier MAY report a successful or | |||
failed "iprev" test at its discretion having done some kind of check | failed "iprev" test at its discretion having done some kind of check | |||
of the validity of the connection's identity using DNS. It is | of the validity of the connection's identity using DNS. It is | |||
incumbent upon an agent making use of the reported "iprev" result to | incumbent upon an agent making use of the reported "iprev" result to | |||
understand what exactly that particular verifier is attempting to | understand what exactly that particular verifier is attempting to | |||
report. | report. | |||
Extensive discussion of reverse DNS mapping and its implications can | Extensive discussion of reverse DNS mapping and its implications can | |||
be found in "Considerations for the use of DNS Reverse Mapping" | be found in "Considerations for the use of DNS Reverse Mapping" | |||
([DNSOP-REVERSE]). In particular, it recommends that applications | [DNSOP-REVERSE]. In particular, it recommends that applications | |||
avoid using this test as a means of authentication or security. Its | avoid using this test as a means of authentication or security. Its | |||
presence in this document is not an endorsement but is merely | presence in this document is not an endorsement but is merely | |||
acknowledgment that the method remains common and provides the means | acknowledgment that the method remains common and provides the means | |||
to relay the results of that test. | to relay the results of that test. | |||
4. Adding the Header Field to a Message | 4. Adding the Header Field to a Message | |||
This specification makes no attempt to evaluate the relative | This specification makes no attempt to evaluate the relative | |||
strengths of various message authentication methods that may become | strengths of various message authentication methods that may become | |||
available. The methods listed are an order-independent set; their | available. The methods listed are an order-independent set; their | |||
skipping to change at page 24, line 42 ¶ | skipping to change at page 25, line 31 ¶ | |||
An MTA compliant with this specification adds this header field | An MTA compliant with this specification adds this header field | |||
(after performing one or more message authentication tests) to | (after performing one or more message authentication tests) to | |||
indicate which MTA or ADMD performed the test, which test was | indicate which MTA or ADMD performed the test, which test was | |||
applied, and what the result was. If an MTA applies more than one | applied, and what the result was. If an MTA applies more than one | |||
such test, it adds this header field either once per test or once | such test, it adds this header field either once per test or once | |||
indicating all of the results. An MTA MUST NOT add a result to an | indicating all of the results. An MTA MUST NOT add a result to an | |||
existing header field. | existing header field. | |||
An MTA MAY add this header field containing only the authentication | An MTA MAY add this header field containing only the authentication | |||
identifier portion and the "none" token (see Section 2.2) to indicate | service identifier portion and the "none" token (see Section 2.2) to | |||
explicitly that no message authentication schemes were applied prior | indicate explicitly that no message authentication schemes were | |||
to delivery of this message. | applied prior to delivery of this message. | |||
An MTA adding this header field has to take steps to identify it as | An MTA adding this header field has to take steps to identify it as | |||
legitimate to the MUAs or downstream filters that will ultimately | legitimate to the MUAs or downstream filters that will ultimately | |||
consume its content. One process to do so is described in Section 5. | consume its content. One process to do so is described in Section 5. | |||
Further measures may be necessary in some environments. Some | Further measures may be necessary in some environments. Some | |||
possible solutions are enumerated in Section 7.1. This document does | possible solutions are enumerated in Section 7.1. This document does | |||
not mandate any specific solution to this issue as each environment | not mandate any specific solution to this issue, as each environment | |||
has its own facilities and limitations. | has its own facilities and limitations. | |||
Most known message authentication methods focus on a particular | Most known message authentication methods focus on a particular | |||
identifier to evaluate. SPF differs in that it can yield a result | identifier to evaluate. SPF differs in that it can yield a result | |||
based on more than one identifier; specifically, SPF can evaluate the | based on more than one identifier; specifically, SPF can evaluate the | |||
RFC5321.HELO parameter or the RFC5321.MailFrom parameter. When | RFC5321.HELO parameter or the RFC5321.MailFrom parameter. When | |||
generating this field to report those results, only the parameter | generating this field to report those results, only the parameter | |||
that yielded the result is included. | that yielded the result is included. | |||
For MTAs that add this header field, adding header fields in order | For MTAs that add this header field, adding header fields in order | |||
(at the top), per Section 3.6 of [MAIL], is particularly important. | (at the top), per Section 3.6 of [MAIL], is particularly important. | |||
Moreover, this header field SHOULD be inserted above any other trace | Moreover, this header field SHOULD be inserted above any other trace | |||
header fields such MTAs might prepend. This placement allows easy | header fields such MTAs might prepend. This placement allows easy | |||
detection of header fields that can be trusted. | detection of header fields that can be trusted. | |||
End users making direct use of this header field might inadvertently | End users making direct use of this header field might inadvertently | |||
trust information that has not been properly vetted. If, for | trust information that has not been properly vetted. If, for | |||
example, a basic SPF result were to be relayed that claims an | example, a basic SPF result were to be relayed that claims an | |||
authenticated addr-spec, the local-part of that addr-spec has | authenticated addr-spec, the local-part of that addr-spec has | |||
actually not been authenticated. Thus, an MTA adding this header | actually not been authenticated. Thus, an MTA adding this header | |||
field SHOULD NOT include any data that has not been authenticated by | field SHOULD NOT include any data that have not been authenticated by | |||
the method(s) being applied. Moreover, MUAs SHOULD NOT render to | the method(s) being applied. Moreover, MUAs SHOULD NOT render to | |||
users such information if it is presented by a method known not to | users such information if it is presented by a method known not to | |||
authenticate it. | authenticate it. | |||
4.1. Header Field Position and Interpretation | 4.1. Header Field Position and Interpretation | |||
In order to ensure non-ambiguous results and avoid the impact of | In order to ensure non-ambiguous results and avoid the impact of | |||
false header fields, MUAs and downstream filters SHOULD NOT interpret | false header fields, MUAs and downstream filters SHOULD NOT interpret | |||
this header field unless specifically configured to do so by the user | this header field unless specifically configured to do so by the user | |||
or administrator. That is, this interpretation should not be "on by | or administrator. That is, this interpretation should not be "on by | |||
skipping to change at page 26, line 9 ¶ | skipping to change at page 26, line 48 ¶ | |||
MUAs and downstream filters MUST ignore any result reported using a | MUAs and downstream filters MUST ignore any result reported using a | |||
"result" not specified in the IANA "Result Code" registry or a | "result" not specified in the IANA "Result Code" registry or a | |||
"ptype" not listed in the "Email Authentication Property Types" | "ptype" not listed in the "Email Authentication Property Types" | |||
registry for such values as defined in Section 6. Moreover, such | registry for such values as defined in Section 6. Moreover, such | |||
agents MUST ignore a result indicated for any "method" they do not | agents MUST ignore a result indicated for any "method" they do not | |||
specifically support. The exception to this is experimental methods | specifically support. The exception to this is experimental methods | |||
as discussed in Section 2.7.6. | as discussed in Section 2.7.6. | |||
An MUA SHOULD NOT reveal these results to end users, absent careful | An MUA SHOULD NOT reveal these results to end users, absent careful | |||
human factors design considerations and testing, for the presentation | "human factors" design considerations and testing, for the | |||
of trust-related materials. For example, an attacker could register | presentation of trust-related materials. For example, an attacker | |||
examp1e.com (note the digit "1" (one)) and send signed mail to | could register examp1e.com (note the digit "1" (one)) and send signed | |||
intended victims; a verifier would detect that the signature was | mail to intended victims; a verifier would detect that the signature | |||
valid and report a "pass" even though it's clear the DNS domain name | was valid and report a "pass" even though it's clear the DNS domain | |||
was intended to mislead. See Section 7.2 for further discussion. | name was intended to mislead. See Section 7.2 for further | |||
discussion. | ||||
As stated in Section 2.1, this header field MUST be treated as though | As stated in Section 2.1, this header field MUST be treated as though | |||
it were a trace header field as defined in Section 3.6.7 of [MAIL] | it were a trace header field as defined in Section 3.6.7 of [MAIL] | |||
and hence MUST NOT be reordered and MUST be prepended to the message, | and hence MUST NOT be reordered and MUST be prepended to the message, | |||
so that there is generally some indication upon delivery of where in | so that there is generally some indication upon delivery of where in | |||
the chain of handling MTAs the message authentication was done. | the chain of handling MTAs the message authentication was done. | |||
Note that there are a few message handlers that are only capable of | Note that there are a few message handlers that are only capable of | |||
appending new header fields to a message. Strictly speaking, these | appending new header fields to a message. Strictly speaking, these | |||
handlers are not compliant with this specification. They can still | handlers are not compliant with this specification. They can still | |||
add the header field to carry authentication details, but any signal | add the header field to carry authentication details, but any signal | |||
about where in the handling chain the work was done may be lost. | about where in the handling chain the work was done may be lost. | |||
Consumers SHOULD be designed such that this can be tolerated, | Consumers SHOULD be designed such that this can be tolerated, | |||
especially from a producer known to have this limitation. | especially from a producer known to have this limitation. | |||
MUAs SHOULD ignore instances of this header field discovered within | MUAs SHOULD ignore instances of this header field discovered within | |||
message/rfc822 MIME attachments. They are likely to contain the | message/rfc822 MIME attachments. They are likely to contain the | |||
results of authentication checks done in the past, possibly long ago, | results of authentication checks done in the past, possibly long ago, | |||
and have no contemporary value. Due caution to this needs to be | and have no contemporary value. Due caution therefore needs to be | |||
taken when choosing to consume them. | taken when choosing to consume them. | |||
Further discussion of these topics can be found in Section 7 below. | Further discussion of these topics can be found in Section 7 below. | |||
4.2. Local Policy Enforcement | 4.2. Local Policy Enforcement | |||
Some sites have a local policy that considers any particular | Some sites have a local policy that considers any particular | |||
authentication policy's non-recoverable failure results (typically | authentication policy's non-recoverable failure results (typically | |||
"fail" or similar) as justification for rejecting the message. In | "fail" or similar) as justification for rejecting the message. In | |||
such cases, the border MTA SHOULD issue an SMTP rejection response to | such cases, the border MTA SHOULD issue an SMTP rejection response to | |||
skipping to change at page 27, line 25 ¶ | skipping to change at page 28, line 20 ¶ | |||
identifier, to have been added within its trust boundary but that did | identifier, to have been added within its trust boundary but that did | |||
not come directly from another trusted MTA. For example, an MTA for | not come directly from another trusted MTA. For example, an MTA for | |||
example.com receiving a message MUST delete or otherwise obscure any | example.com receiving a message MUST delete or otherwise obscure any | |||
instance of this header field bearing an authentication service | instance of this header field bearing an authentication service | |||
identifier indicating that the header field was added within | identifier indicating that the header field was added within | |||
example.com prior to adding its own header fields. This could mean | example.com prior to adding its own header fields. This could mean | |||
each internal MTA will need to be configured with a list of other | each internal MTA will need to be configured with a list of other | |||
known, trusted MTAs that are thus expected to be using that same | known, trusted MTAs that are thus expected to be using that same | |||
identifier. | identifier. | |||
For messages that are EAI-formatted messages, this test is done after | In the case of EAI-formatted messages, this test is done after | |||
converting A-labels into U-labels. | converting A-labels into U-labels. | |||
For simplicity and maximum security, a border MTA could remove all | For simplicity and maximum security, a border MTA could remove all | |||
instances of this header field on mail crossing into its trust | instances of this header field on mail crossing into its trust | |||
boundary. However, this may conflict with the desire to access | boundary. However, this may conflict with the desire to access | |||
authentication results performed by trusted external service | authentication results performed by trusted external service | |||
providers. It may also invalidate signed messages whose signatures | providers. It may also invalidate signed messages whose signatures | |||
cover external instances of this header field. A more robust border | cover external instances of this header field. A more robust border | |||
MTA could allow a specific list of authenticating MTAs whose | MTA could allow a specific list of authenticating MTAs whose | |||
information is to be admitted, removing the header field originating | information is to be admitted, removing the header field originating | |||
skipping to change at page 28, line 6 ¶ | skipping to change at page 28, line 48 ¶ | |||
border MTA MAY elect not to delete those results; moreover, the | border MTA MAY elect not to delete those results; moreover, the | |||
upstream host doing some authentication work could apply a signing | upstream host doing some authentication work could apply a signing | |||
technology such as [DKIM] on its own results to assure downstream | technology such as [DKIM] on its own results to assure downstream | |||
hosts of their authenticity. An example of this is provided in | hosts of their authenticity. An example of this is provided in | |||
Appendix B. | Appendix B. | |||
Similarly, in the case of messages signed using [DKIM] or other | Similarly, in the case of messages signed using [DKIM] or other | |||
message-signing methods that sign header fields, this removal action | message-signing methods that sign header fields, this removal action | |||
could invalidate one or more signatures on the message if they | could invalidate one or more signatures on the message if they | |||
covered the header field to be removed. This behavior can be | covered the header field to be removed. This behavior can be | |||
desirable since there's little value in validating the signature on a | desirable, since there's little value in validating the signature on | |||
message with forged header fields. However, signing agents MAY | a message with forged header fields. However, signing agents MAY | |||
therefore elect to omit these header fields from signing to avoid | therefore elect to omit these header fields from signing to avoid | |||
this situation. | this situation. | |||
An MTA SHOULD remove any instance of this header field bearing a | An MTA SHOULD remove any instance of this header field bearing a | |||
version (express or implied) that it does not support. However, an | version (express or implied) that it does not support. However, an | |||
MTA MUST remove such a header field if the [SMTP] connection relaying | MTA MUST remove such a header field if the SMTP connection [SMTP] | |||
the message is not from a trusted internal MTA. (As discussed above, | relaying the message is not from a trusted internal MTA. (As | |||
this too can result in invalidation of signatures.) This means the | discussed above, this too can result in invalidation of signatures.) | |||
MTA needs to be able to understand versions of this header field at | This means the MTA needs to be able to understand versions of this | |||
least as late as the ones understood by the MUAs or other consumers | header field at least as late as the ones understood by the MUAs or | |||
within its ADMD. | other consumers within its ADMD. | |||
6. IANA Considerations | 6. IANA Considerations | |||
IANA has registered the defined header field and created registries | IANA has registered the defined header field and created registries | |||
as described below. These registry actions were originally defined | as described below. These registry actions were originally defined | |||
by [RFC5451] and updated by [RFC6577] and [RFC7001]. The created | by [RFC5451] and updated by [RFC6577] and [RFC7001]. The created | |||
registries were further updated in [RFC7601] to make them more | registries were further updated in [RFC7601] to make them more | |||
complete. | complete. | |||
Each registry has two related sections below. The first describes | Each registry has two related sections below. The first describes | |||
the registry and its update procedures, which are unchanged from | the registry and its update procedures, which are unchanged from | |||
[RFC7601]. The second enumerates changes to entries that are | [RFC7601]. The second enumerates changes to entries that are | |||
relevant to this document. | relevant to this document. | |||
6.1. The Authentication-Results Header Field | 6.1. The Authentication-Results Header Field | |||
The Authentication-Results header field was added to the IANA | The Authentication-Results header field was added to the IANA | |||
"Permanent Message Header Field Names" registry, per the procedure | "Permanent Message Header Field Names" registry, per the procedure | |||
found in [IANA-HEADERS]. That entry will be updated to reference | found in [IANA-HEADERS]. That entry has been updated to reference | |||
this document. The following is the registration template: | this document. The following is the registration template: | |||
Header field name: Authentication-Results | Header field name: Authentication-Results | |||
Applicable protocol: mail ([MAIL]) | Applicable protocol: mail [MAIL] | |||
Status: Standard | Status: standard | |||
Author/Change controller: IETF | Author/Change controller: IETF | |||
Specification document(s): [this document] | Specification document(s): RFC 8601 | |||
Related information: none | Related information: none | |||
6.2. "Email Authentication Methods" Registry Description | 6.2. "Email Authentication Methods" Registry Description | |||
Names of message authentication methods supported by this | Names of message authentication methods supported by this | |||
specification have been registered with IANA, with the exception of | specification have been registered with IANA, with the exception of | |||
experimental names as described in Section 2.7.6. Along with each | experimental names as described in Section 2.7.6. Along with each | |||
method is recorded the properties that accompany the method's result. | method are recorded the properties that accompany the method's | |||
result. | ||||
The "Email Authentication Parameters" group, and within it the "Email | The "Email Authentication Parameters" group, and within it the "Email | |||
Authentication Methods" registry, were created by [RFC5451] for this | Authentication Methods" registry, were created by [RFC5451] for this | |||
purpose. [RFC6577] added a "status" field for each entry. [RFC7001] | purpose. [RFC6577] added a "Status" field for each entry. [RFC7001] | |||
amended the rules governing that registry and also added a "version" | amended the rules governing that registry and also added a "Version" | |||
field to the registry. | field to the registry. | |||
The reference for that registry will be updated to reference this | The reference for that registry has been updated to reference this | |||
document. | document. | |||
New entries are assigned only for values that have received Expert | New entries are assigned only for values that have received Expert | |||
Review, per [IANA-CONSIDERATIONS]. The designated expert shall be | Review, per [IANA-CONSIDERATIONS]. The designated expert shall be | |||
appointed by the IESG. The designated expert has discretion to | appointed by the IESG. The designated expert has discretion to | |||
request that a publication be referenced if a clear, concise | request that a publication be referenced if a clear, concise | |||
definition of the authentication method cannot be provided such that | definition of the authentication method cannot be provided, such that | |||
interoperability is assured. Registrations should otherwise be | interoperability is assured. Registrations should otherwise be | |||
permitted. The designated expert can also handle requests to mark | permitted. The designated expert can also handle requests to mark | |||
any current registration as "deprecated". | any current registration as "deprecated". | |||
No two entries can have the same combination of method, ptype, and | No two entries can have the same combination of method, ptype, and | |||
property. | property. | |||
An entry in this registry contains the following: | An entry in this registry contains the following: | |||
Method: the name of the method. | Method: the name of the method. | |||
Definition: a reference to the document that created this entry, if | Definition: a reference to the document that created this entry, if | |||
any (see below). | any (see below). | |||
ptype: a "ptype" value appropriate for use with that method. | ptype: a "ptype" value appropriate for use with that method. | |||
property: a "property" value matching that "ptype" also appropriate | Property: a "property" value matching that "ptype" also appropriate | |||
for use with that method. | for use with that method. | |||
Value: a brief description of the value to be supplied with that | Value: a brief description of the value to be supplied with that | |||
method/ptype/property tuple. | method/ptype/property tuple. | |||
Status: the status of this entry, which is either: | Status: the status of this entry, which is one of the following: | |||
active: The entry is in current use. | active: The entry is in current use. | |||
deprecated: The entry is no longer in current use. | deprecated: The entry is no longer in current use. | |||
Version: a version number associated with the method (preferably | Version: a version number associated with the method (preferably | |||
starting at "1"). | starting at "1"). | |||
The "Definition" field will typically refer to a permanent document, | The "Definition" field will typically refer to a permanent document, | |||
or at least some descriptive text, where additional information about | or at least some descriptive text, where additional information about | |||
the entry being added can be found. This might in turn reference the | the entry being added can be found. This might in turn reference the | |||
document where the method is defined so that all of the semantics | document where the method is defined so that all of the semantics | |||
around creating or interpreting an Authentication-Results header | around creating or interpreting an Authentication-Results header | |||
field using this method, ptype, and property can be understood. | field using this method, ptype, and property can be understood. | |||
6.3. "Email Authentication Methods" Registry Update | 6.3. "Email Authentication Methods" Registry Update | |||
The following entries in this registry are to be updated to replace | The following entries in this registry have been updated to replace | |||
[RFC7601] with this document: | [RFC7601] with this document: | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| Method | ptype | Property | | | Method | ptype | Property | | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| auth | smtp | auth | | | auth | smtp | auth | | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| auth | smtp | mailfrom | | | auth | smtp | mailfrom | | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| dkim | header | d | | | dkim | header | d | | |||
skipping to change at page 30, line 44 ¶ | skipping to change at page 31, line 46 ¶ | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| iprev | policy | iprev | | | iprev | policy | iprev | | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| spf | smtp | mailfrom | | | spf | smtp | mailfrom | | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
| spf | smtp | helo | | | spf | smtp | helo | | |||
+------------+--------+----------------------------------+ | +------------+--------+----------------------------------+ | |||
Notably, the DomainKeys and Sender ID entries are not updated to | Notably, the DomainKeys and Sender ID entries are not updated to | |||
refer to this revised specification, as they are considered obsolete. | refer to this revised specification, as they are considered obsolete. | |||
IANA is accordingly asked to change the Status of the "sender-id" | Accordingly, IANA has changed the "Status" field of the "sender-id" | |||
entry in this table to "deprecated". | entry in this table to "deprecated". | |||
Finally, two new entries are added to this registry, as follows: | Finally, two new entries have been added to this registry, as | |||
follows: | ||||
6.3.1. "header.a" for DKIM | ||||
6.3.1. 'header.a' for DKIM | ||||
Method: dkim | Method: dkim | |||
Definition: [this document] | Definition: RFC 8601 | |||
ptype: header | ptype: header | |||
property: a | Property: a | |||
Description: value of signature "a" tag | Value: value of signature "a" tag | |||
Status: active | Status: active | |||
Version: 1 | Version: 1 | |||
6.3.2. 'header.s' for DKIM | 6.3.2. "header.s" for DKIM | |||
Method: dkim | Method: dkim | |||
Definition: [this document] | Definition: RFC 8601 | |||
ptype: header | ptype: header | |||
property: s | Property: s | |||
Description: value of signature "s" tag | Value: value of signature "s" tag | |||
Status: active | Status: active | |||
Version: 1 | Version: 1 | |||
6.4. "Email Authentication Property Types" Registry Description | 6.4. "Email Authentication Property Types" Registry Description | |||
[RFC7410] created the "Email Authentication Property Types" registry. | [RFC7410] created the "Email Authentication Property Types" registry. | |||
Entries in this registry are subject to the Expert Review rules as | Entries in this registry are subject to the Expert Review rules as | |||
described in [IANA-CONSIDERATIONS]. Each entry in the registry | described in [IANA-CONSIDERATIONS]. Each entry in the registry | |||
requires the following values: | requires the following values: | |||
ptype: The name of the ptype being registered, which must fit within | ptype: the name of the ptype being registered, which must fit within | |||
the ABNF described in Section 2.2. | the ABNF described in Section 2.2. | |||
Definition: An optional reference to a defining specification. | Definition: an optional reference to a defining specification. | |||
Description: A brief description of what sort of information this | Description: a brief description of what sort of information this | |||
"ptype" is meant to cover. | "ptype" is meant to cover. | |||
For new entries, the Designated Expert needs to assure that the | For new entries, the designated expert needs to ensure that the | |||
description provided for the new entry adequately describes the | description provided for the new entry adequately describes the | |||
intended use. An example would be helpful to include in the entry's | intended use. An example would be helpful to include in the entry's | |||
defining document, if any, although entries in the "Email | defining document (if any), although entries in the "Email | |||
Authentication Methods" registry or the "Email Authentication Result | Authentication Methods" registry or the "Email Authentication Result | |||
Names" registry might also serve as examples of intended use. | Names" registry might also serve as examples of intended use. | |||
As this is a complete restatement of the definition and rules for | As this is a complete restatement of the definition and rules for | |||
this registry, IANA will update this registry to show Section 2.3 of | this registry, IANA has updated this registry to show Section 2.3 of | |||
this document as the current definitions for the "body", "header", | this document as the current definitions for the "body", "header", | |||
"policy", and "smtp" entries of that registry. References to other | "policy", and "smtp" entries of that registry. | |||
documents will be removed. | ||||
6.5. "Email Authentication Property Types" Registry Update | 6.5. "Email Authentication Property Types" Registry Update | |||
All current entries in this registry are to be updated to replace | All current entries in this registry have been updated to replace | |||
[RFC7601] with this document. | [RFC7601] with this document. | |||
6.6. "Email Authentication Result Names" Registry Description | 6.6. "Email Authentication Result Names" Registry Description | |||
Names of message authentication result codes supported by this | Names of message authentication result codes supported by this | |||
specification must be registered with IANA, with the exception of | specification must be registered with IANA, with the exception of | |||
experimental codes as described in Section 2.7.7. | experimental codes as described in Section 2.7.7. | |||
New entries are assigned only for values that have received Expert | New entries are assigned only for values that have received Expert | |||
Review, per [IANA-CONSIDERATIONS]. The designated expert shall be | Review, per [IANA-CONSIDERATIONS]. The designated expert shall be | |||
appointed by the IESG. The designated expert has discretion to | appointed by the IESG. The designated expert has discretion to | |||
request that a publication be referenced if a clear, concise | request that a publication be referenced if a clear, concise | |||
definition of the authentication result cannot be provided such that | definition of the authentication result cannot be provided, such that | |||
interoperability is assured. Registrations should otherwise be | interoperability is assured. Registrations should otherwise be | |||
permitted. The designated expert can also handle requests to mark | permitted. The designated expert can also handle requests to mark | |||
any current registration as "deprecated". | any current registration as "deprecated". | |||
No two entries can have the same combination of method and code. | No two entries can have the same combination of method and code. | |||
An entry in this registry contains the following: | An entry in this registry contains the following: | |||
Auth Method: an authentication method for which results are being | Auth Method: an authentication method for which results are being | |||
returned using the header field defined in this document. | returned using the header field defined in this document. | |||
Code: a result code that can be returned for this authentication | Code: a result code that can be returned for this authentication | |||
method. | method. | |||
Specification: either free form text explaining the meaning of this | Specification: either free-form text explaining the meaning of this | |||
method-code combination, or a reference to such a definition. | method-code combination or a reference to such a definition. | |||
Status: the status of this entry, which is either: | Status: the status of this entry, which is one of the following: | |||
active: The entry is in current use. | active: The entry is in current use. | |||
deprecated: The entry is no longer in current use. | deprecated: The entry is no longer in current use. | |||
6.7. "Email Authentication Result Names" Registry Update | 6.7. "Email Authentication Result Names" Registry Update | |||
The following entries in this registry are to be updated to reflect | For the following entries in this registry, the new "Specification" | |||
this new Specification as follows: | field has been set as follows: | |||
o All "auth" method result codes ("fail", "none", "pass", | o All "auth" method result codes ("fail", "none", "pass", | |||
"permerror", "temperror") are now specified in Section 2.7.4 of | "permerror", and "temperror") are now specified in Section 2.7.4 | |||
this document. | of this document. | |||
o All "dkim" method result names ("fail", "neutral", "none", "pass", | o All "dkim" method result names ("fail", "neutral", "none", "pass", | |||
"permerror", "policy", "temperror") are now specified in | "permerror", "policy", and "temperror") are now specified in | |||
Section 2.7.1 of this document. | Section 2.7.1 of this document. | |||
o All "iprev" method result names ("fail", "pass", "permerror", | o All "iprev" method result names ("fail", "pass", "permerror", and | |||
"temperror") are now specified in Section 2.7.3 of this document. | "temperror") are now specified in Section 2.7.3 of this document. | |||
o The "spf" method result names "fail", "neutral", "none", "pass", | o The "spf" method result names "fail", "neutral", "none", "pass", | |||
"permerror", "policy", "softfail", and "temperror" are now | "permerror", "policy", "softfail", and "temperror" are now | |||
specified in Section 2.7.2 of this document. The registration for | specified in Section 2.7.2 of this document. The registration for | |||
result name "hardfail" is not updated. | result name "hardfail" is not updated. | |||
The following entries in this registry are to be updated with a new | The following entries in this registry have been updated with a new | |||
Status of "deprecated", with no change to the Specification as they | "Status" field set to "deprecated", and with no change to the | |||
reference historic protocols: | "Specification" field as they reference historic protocols: | |||
o All "domainkeys" method result names ("fail", "neutral", "none", | o All "domainkeys" method result names ("fail", "neutral", "none", | |||
"pass", "permerror", "policy", and "temperror"). | "pass", "permerror", "policy", and "temperror"). | |||
o All "sender-id" method result names ("fail", "neutral", "none", | o All "sender-id" method result names ("fail", "neutral", "none", | |||
"pass", "permerror", "policy", "softfail", and "temperror"). | "pass", "permerror", "policy", "softfail", and "temperror"). | |||
6.8. SMTP Enhanced Status Codes | 6.8. SMTP Enhanced Status Codes | |||
The entry for X.7.25 in the "Enumerated Status Codes" sub-registry of | The entry for X.7.25 in the "Enumerated Status Codes" subregistry of | |||
the "Simple Mail Transfer Protocol (SMTP) Enhanced Status Codes | the "Simple Mail Transfer Protocol (SMTP) Enhanced Status Codes | |||
Registry" is to be updated to refer only to Section 3.3 of [AUTH-ESC] | Registry" has been updated to refer only to Section 3.3 of | |||
as that is where that registration was done. | [AUTH-ESC], as that is where that registration was done. | |||
7. Security Considerations | 7. Security Considerations | |||
The following security considerations apply when adding or processing | The following security considerations apply when adding or processing | |||
the Authentication-Results header field: | the Authentication-Results header field: | |||
7.1. Forged Header Fields | 7.1. Forged Header Fields | |||
An MTA not applying the filtering discussed in Section 5 exposes MUAs | An MTA not applying the filtering discussed in Section 5 exposes MUAs | |||
to false conclusions based on forged header fields. A malicious user | to false conclusions based on forged header fields. A malicious user | |||
skipping to change at page 35, line 13 ¶ | skipping to change at page 36, line 18 ¶ | |||
this memo. This, too, has potentially high barriers to entry. | this memo. This, too, has potentially high barriers to entry. | |||
4. Extensions to [IMAP], [SMTP], and [POP3] could be defined to | 4. Extensions to [IMAP], [SMTP], and [POP3] could be defined to | |||
allow an MUA or filtering agent to acquire the authserv-id in use | allow an MUA or filtering agent to acquire the authserv-id in use | |||
within an ADMD, thus allowing it to identify which | within an ADMD, thus allowing it to identify which | |||
Authentication-Results header fields it can trust. | Authentication-Results header fields it can trust. | |||
5. On the presumption that internal MTAs are fully compliant with | 5. On the presumption that internal MTAs are fully compliant with | |||
Section 3.6 of [MAIL] and the compliant internal MTAs are using | Section 3.6 of [MAIL] and the compliant internal MTAs are using | |||
their own hostnames or the ADMD's DNS domain name as the | their own hostnames or the ADMD's DNS domain name as the | |||
authserv-id token, the header field proposed here should always | authserv-id token, this header field should always appear above a | |||
appear above a Received header added by a trusted MTA. This can | Received header added by a trusted MTA. This can be used as a | |||
be used as a test for header field validity. | test for header field validity. | |||
Support for some of these is being considered for future work. | Support for some of these is being considered for future work. | |||
In any case, a mechanism needs to exist for an MUA or filter to | In any case, a mechanism needs to exist for an MUA or filter to | |||
verify that the host that appears to have added the header field (a) | verify that the host that appears to have added the header field | |||
actually did so and (b) is legitimately adding that header field for | (a) actually did so and (b) is legitimately adding that header field | |||
this delivery. Given the variety of messaging environments deployed | for this delivery. Given the variety of messaging environments | |||
today, consensus appears to be that specifying a particular mechanism | deployed today, consensus appears to be that specifying a particular | |||
for doing so is not appropriate for this document. | mechanism for doing so is not appropriate for this document. | |||
Mitigation of the forged header field attack can also be accomplished | Mitigation of the forged header field attack can also be accomplished | |||
by moving the authentication results data into metadata associated | by moving the authentication results data into metadata associated | |||
with the message. In particular, an [SMTP] extension could be | with the message. In particular, an SMTP extension [SMTP] could be | |||
established to communicate authentication results from the border MTA | established to communicate authentication results from the border MTA | |||
to intermediate and delivery MTAs; the latter of these could arrange | to intermediate and delivery MTAs; the latter of these could arrange | |||
to store the authentication results as metadata retrieved and | to store the authentication results as metadata retrieved and | |||
rendered along with the message by an [IMAP] client aware of a | rendered along with the message by an IMAP client [IMAP] aware of a | |||
similar extension in that protocol. The delivery MTA would be told | similar extension in that protocol. The delivery MTA would be told | |||
to trust data via this extension only from MTAs it trusts, and border | to trust data via this extension only from MTAs it trusts, and border | |||
MTAs would not accept data via this extension from any source. There | MTAs would not accept data via this extension from any source. There | |||
is no vector in such an arrangement for forgery of authentication | is no vector in such an arrangement for forgery of authentication | |||
data by an outside agent. | data by an outside agent. | |||
7.2. Misleading Results | 7.2. Misleading Results | |||
Until some form of service for querying the reputation of a sending | Until some form of service for querying the reputation of a sending | |||
agent is widely deployed, the existence of this header field | agent is widely deployed, the existence of this header field | |||
indicating a "pass" does not render the message trustworthy. It is | indicating a "pass" does not render the message trustworthy. It is | |||
possible for an arriving piece of spam or other undesirable mail to | possible for an arriving piece of spam or other undesirable mail to | |||
pass checks by several of the methods enumerated above (e.g., a piece | pass checks by several of the methods enumerated above (e.g., a piece | |||
of spam signed using [DKIM] by the originator of the spam, which | of spam signed using [DKIM] by the originator of the spam, which | |||
might be a spammer or a compromised system). In particular, this | might be a spammer or a compromised system). In particular, this | |||
issue is not resolved by forged header field removal discussed above. | issue is not resolved by forged header field removal (discussed | |||
above). | ||||
Hence, MUAs and downstream filters must take some care with use of | Hence, MUAs and downstream filters must take some care with use of | |||
this header even after possibly malicious headers are scrubbed. | this header even after possibly malicious headers are scrubbed. | |||
7.3. Header Field Position | 7.3. Header Field Position | |||
Despite the requirements of [MAIL], header fields can sometimes be | Despite the requirements of [MAIL], header fields can sometimes be | |||
reordered en route by intermediate MTAs. The goal of requiring | reordered en route by intermediate MTAs. The goal of requiring | |||
header field addition only at the top of a message is an | header field addition only at the top of a message is an | |||
acknowledgment that some MTAs do reorder header fields, but most do | acknowledgment that some MTAs do reorder header fields, but most do | |||
not. Thus, in the general case, there will be some indication of | not. Thus, in the general case, there will be some indication of | |||
which MTAs (if any) handled the message after the addition of the | which MTAs (if any) handled the message after the addition of the | |||
header field defined here. | header field defined here. | |||
7.4. Reverse IP Query Denial-of-Service Attacks | 7.4. Reverse IP Query Denial-of-Service Attacks | |||
Section 4.6.4 of [SPF] describes a DNS-based denial-of-service attack | Section 4.6.4 of [SPF] observes that limits are necessary on | |||
for verifiers that attempt DNS-based identity verification of | recursive evaluations of SPF records in order to avoid abuse of or | |||
arriving client connections. A verifier wishing to do this check and | attacks on the DNS when verifying arriving client connections. A | |||
report this information needs to take care not to go to unbounded | verifier wishing to do this check and report this information needs | |||
lengths to resolve "A" and "PTR" queries. MUAs or other filters | to take care not to go to unbounded lengths to resolve "A" and "PTR" | |||
making use of an "iprev" result specified by this document need to be | queries. MUAs or other filters making use of an "iprev" result | |||
aware of the algorithm used by the verifier reporting the result and, | specified by this document need to be aware of the algorithm used by | |||
especially, its limitations. | the verifier reporting the result and, especially, its limitations. | |||
7.5. Mitigation of Backscatter | 7.5. Mitigation of Backscatter | |||
Failing to follow the instructions of Section 4.2 can result in a | Failing to follow the instructions of Section 4.2 can result in a | |||
denial-of-service attack caused by the generation of [DSN] messages | denial-of-service attack caused by the generation of DSN messages | |||
(or equivalent) to addresses that did not send the messages being | [DSN] (or equivalent) to addresses that did not send the messages | |||
rejected. | being rejected. | |||
7.6. Internal MTA Lists | 7.6. Internal MTA Lists | |||
Section 5 describes a procedure for scrubbing header fields that may | Section 5 describes a procedure for scrubbing header fields that may | |||
contain forged authentication results about a message. A compliant | contain forged authentication results about a message. A compliant | |||
installation will have to include, at each MTA, a list of other MTAs | installation will have to include, at each MTA, a list of other MTAs | |||
known to be compliant and trustworthy. Failing to keep this list | known to be compliant and trustworthy. Failing to keep this list | |||
current as internal infrastructure changes may expose an ADMD to | current as internal infrastructure changes may expose an ADMD to | |||
attack. | attack. | |||
7.7. Attacks against Authentication Methods | 7.7. Attacks against Authentication Methods | |||
If an attack becomes known against an authentication method, clearly | If an attack against an authentication method becomes known, clearly | |||
then the agent verifying that method can be fooled into thinking an | then the agent verifying that method can be fooled into thinking an | |||
inauthentic message is authentic, and thus the value of this header | inauthentic message is authentic, and thus the value of this header | |||
field can be misleading. It follows that any attack against the | field can be misleading. It follows that any attack against the | |||
authentication methods supported by this document is also a security | authentication methods supported by this document is also a security | |||
consideration here. | consideration here. | |||
7.8. Intentionally Malformed Header Fields | 7.8. Intentionally Malformed Header Fields | |||
As with any other header field found in the message, it is possible | As with any other header field found in the message, it is possible | |||
for an attacker to add an Authentication-Results header field that is | for an attacker to add an Authentication-Results header field that is | |||
skipping to change at page 37, line 23 ¶ | skipping to change at page 38, line 32 ¶ | |||
unintentionally malformed header fields. | unintentionally malformed header fields. | |||
7.9. Compromised Internal Hosts | 7.9. Compromised Internal Hosts | |||
An internal MUA or MTA that has been compromised could generate mail | An internal MUA or MTA that has been compromised could generate mail | |||
with a forged From header field and a forged Authentication-Results | with a forged From header field and a forged Authentication-Results | |||
header field that endorses it. Although it is clearly a larger | header field that endorses it. Although it is clearly a larger | |||
concern to have compromised internal machines than it is to prove the | concern to have compromised internal machines than it is to prove the | |||
value of this header field, this risk can be mitigated by arranging | value of this header field, this risk can be mitigated by arranging | |||
that internal MTAs will remove this header field if it claims to have | that internal MTAs will remove this header field if it claims to have | |||
been added by a trusted border MTA (as described above), yet the | been added by a trusted border MTA (as described above), yet the SMTP | |||
[SMTP] connection is not coming from an internal machine known to be | connection [SMTP] is not coming from an internal machine known to be | |||
running an authorized MTA. However, in such a configuration, | running an authorized MTA. However, in such a configuration, | |||
legitimate MTAs will have to add this header field when legitimate | legitimate MTAs will have to add this header field when legitimate | |||
internal-only messages are generated. This is also covered in | internal-only messages are generated. This is also covered in | |||
Section 5. | Section 5. | |||
7.10. Encapsulated Instances | 7.10. Encapsulated Instances | |||
MIME messages can contain attachments of type "message/rfc822", which | MIME messages can contain attachments of type "message/rfc822", which | |||
contain other messages. Such an encapsulated message can also | contain other messages. Such an encapsulated message can also | |||
contain an Authentication-Results header field. Although the | contain an Authentication-Results header field. Although the | |||
skipping to change at page 37, line 51 ¶ | skipping to change at page 39, line 11 ¶ | |||
Section 4.1 cautioning MUAs to ignore such instances within MIME | Section 4.1 cautioning MUAs to ignore such instances within MIME | |||
attachments, as might be included when a message is forwarded. | attachments, as might be included when a message is forwarded. | |||
Moreover, when extracting a message digest to separate mail store | Moreover, when extracting a message digest to separate mail store | |||
messages or other media, such header fields should be removed so that | messages or other media, such header fields should be removed so that | |||
they will never be interpreted improperly by MUAs that might later | they will never be interpreted improperly by MUAs that might later | |||
consume them. | consume them. | |||
There can be cases where these header fields included as part of | There can be cases where these header fields included as part of | |||
encapsulated messages might actually be of value, such as when they | encapsulated messages might actually be of value, such as when they | |||
are taken from messages within the same ADMD where they will be | are taken from messages within the same ADMD where they will be | |||
consumed. Caution must be taken that the consumer fully understands | consumed. Caution must be taken to ensure that the consumer fully | |||
the semantics of what the header field is indicating and the | understands the semantics of what the header field is indicating and | |||
message's handling history before ascribing any value, positive or | the message's handling history before ascribing any value, positive | |||
negative, to such data. | or negative, to such data. | |||
7.11. Reverse Mapping | 7.11. Reverse Mapping | |||
Although Section 3 of this memo includes explicit support for the | Although Section 3 of this memo includes explicit support for the | |||
"iprev" method, its value as an authentication mechanism is limited. | "iprev" method, its value as an authentication mechanism is limited. | |||
Implementers of both this specification and agents that use the data | Implementers of both this specification and agents that use the data | |||
it relays are encouraged to become familiar with the issues raised by | it relays are encouraged to become familiar with the issues raised by | |||
[DNSOP-REVERSE] when deciding whether or not to include support for | [DNSOP-REVERSE] when deciding whether or not to include support for | |||
"iprev". | "iprev". | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/ | Specifications: ABNF", STD 68, RFC 5234, | |||
RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
<http://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
[IANA-HEADERS] | [IANA-HEADERS] | |||
Klyne, G., Nottingham, M., and J. Mogul, "Registration | Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
Procedures for Message Header Fields", BCP 90, RFC 3864, | Procedures for Message Header Fields", BCP 90, RFC 3864, | |||
DOI 10.17487/RFC3864, September 2004, | DOI 10.17487/RFC3864, September 2004, | |||
<http://www.rfc-editor.org/info/rfc3864>. | <https://www.rfc-editor.org/info/rfc3864>. | |||
[MAIL] Resnick, P., Ed., "Internet Message Format", RFC 5322, | [MAIL] Resnick, P., Ed., "Internet Message Format", RFC 5322, | |||
DOI 10.17487/RFC5322, October 2008, | DOI 10.17487/RFC5322, October 2008, | |||
<http://www.rfc-editor.org/info/rfc5322>. | <https://www.rfc-editor.org/info/rfc5322>. | |||
[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, DOI 10.17487/RFC2045, November 1996, | Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, | |||
<http://www.rfc-editor.org/info/rfc2045>. | <https://www.rfc-editor.org/info/rfc2045>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | Requirement Levels", BCP 14, RFC 2119, | |||
RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for | [RFC6530] Klensin, J. and Y. Ko, "Overview and Framework for | |||
Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, | Internationalized Email", RFC 6530, DOI 10.17487/RFC6530, | |||
February 2012, <https://www.rfc-editor.org/info/rfc6530>. | February 2012, <https://www.rfc-editor.org/info/rfc6530>. | |||
[RFC6531] Yao, J. and W. Mao, "SMTP Extension for Internationalized | [RFC6531] Yao, J. and W. Mao, "SMTP Extension for Internationalized | |||
Email", RFC 6531, DOI 10.17487/RFC6531, February 2012, | Email", RFC 6531, DOI 10.17487/RFC6531, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6531>. | <https://www.rfc-editor.org/info/rfc6531>. | |||
[RFC6532] Yang, A., Steele, S., and N. Freed, "Internationalized | [RFC6532] Yang, A., Steele, S., and N. Freed, "Internationalized | |||
Email Headers", RFC 6532, DOI 10.17487/RFC6532, | Email Headers", RFC 6532, DOI 10.17487/RFC6532, | |||
February 2012, <https://www.rfc-editor.org/info/rfc6532>. | February 2012, <https://www.rfc-editor.org/info/rfc6532>. | |||
[RFC7601] Kucherawy, M., "Message Header Field for Indicating | [RFC7601] Kucherawy, M., "Message Header Field for Indicating | |||
Message Authentication Status", RFC 7601, DOI 10.17487/ | Message Authentication Status", RFC 7601, | |||
RFC7601, August 2015, | DOI 10.17487/RFC7601, August 2015, | |||
<https://www.rfc-editor.org/info/rfc7601>. | <https://www.rfc-editor.org/info/rfc7601>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | RFC 2119 Key Words", BCP 14, RFC 8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | DOI 10.17487/RFC8174, May 2017, | |||
<https://www.rfc-editor.org/info/rfc8174>. | ||||
[SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | [SMTP] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | |||
DOI 10.17487/RFC5321, October 2008, | DOI 10.17487/RFC5321, October 2008, | |||
<http://www.rfc-editor.org/info/rfc5321>. | <https://www.rfc-editor.org/info/rfc5321>. | |||
8.2. Informative References | 8.2. Informative References | |||
[ADSP] Allman, E., Fenton, J., Delany, M., and J. Levine, | [ADSP] Allman, E., Fenton, J., Delany, M., and J. Levine, | |||
"DomainKeys Identified Mail (DKIM) Author Domain Signing | "DomainKeys Identified Mail (DKIM) Author Domain Signing | |||
Practices (ADSP)", RFC 5617, DOI 10.17487/RFC5617, | Practices (ADSP)", RFC 5617, DOI 10.17487/RFC5617, | |||
August 2009, <http://www.rfc-editor.org/info/rfc5617>. | August 2009, <https://www.rfc-editor.org/info/rfc5617>. | |||
[AR-VBR] Kucherawy, M., "Authentication-Results Registration for | [AR-VBR] Kucherawy, M., "Authentication-Results Registration for | |||
Vouch by Reference Results", RFC 6212, DOI 10.17487/ | Vouch by Reference Results", RFC 6212, | |||
RFC6212, April 2011, | DOI 10.17487/RFC6212, April 2011, | |||
<http://www.rfc-editor.org/info/rfc6212>. | <https://www.rfc-editor.org/info/rfc6212>. | |||
[ATPS] Kucherawy, M., "DomainKeys Identified Mail (DKIM) | [ATPS] Kucherawy, M., "DomainKeys Identified Mail (DKIM) | |||
Authorized Third-Party Signatures", RFC 6541, | Authorized Third-Party Signatures", RFC 6541, | |||
DOI 10.17487/RFC6541, February 2012, | DOI 10.17487/RFC6541, February 2012, | |||
<http://www.rfc-editor.org/info/rfc6541>. | <https://www.rfc-editor.org/info/rfc6541>. | |||
[AUTH] Siemborski, R., Ed. and A. Melnikov, Ed., "SMTP Service | [AUTH] Siemborski, R., Ed. and A. Melnikov, Ed., "SMTP Service | |||
Extension for Authentication", RFC 4954, DOI 10.17487/ | Extension for Authentication", RFC 4954, | |||
RFC4954, July 2007, | DOI 10.17487/RFC4954, July 2007, | |||
<http://www.rfc-editor.org/info/rfc4954>. | <https://www.rfc-editor.org/info/rfc4954>. | |||
[AUTH-ESC] | [AUTH-ESC] Kucherawy, M., "Email Authentication Status Codes", | |||
Kucherawy, M., "Email Authentication Status Codes", | ||||
RFC 7372, DOI 10.17487/RFC7372, September 2014, | RFC 7372, DOI 10.17487/RFC7372, September 2014, | |||
<http://www.rfc-editor.org/info/rfc7372>. | <https://www.rfc-editor.org/info/rfc7372>. | |||
[DKIM] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., | [DKIM] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., | |||
"DomainKeys Identified Mail (DKIM) Signatures", STD 76, | "DomainKeys Identified Mail (DKIM) Signatures", STD 76, | |||
RFC 6376, DOI 10.17487/RFC6376, September 2011, | RFC 6376, DOI 10.17487/RFC6376, September 2011, | |||
<http://www.rfc-editor.org/info/rfc6376>. | <https://www.rfc-editor.org/info/rfc6376>. | |||
[DMARC] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based | [DMARC] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based | |||
Message Authentication, Reporting, and Conformance | Message Authentication, Reporting, and Conformance | |||
(DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, | (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, | |||
<http://www.rfc-editor.org/info/rfc7489>. | <https://www.rfc-editor.org/info/rfc7489>. | |||
[DNS] Mockapetris, P., "Domain names - implementation and | [DNS] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
November 1987, <http://www.rfc-editor.org/info/rfc1035>. | November 1987, <https://www.rfc-editor.org/info/rfc1035>. | |||
[DNS-IP6] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi, | [DNS-IP6] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi, | |||
"DNS Extensions to Support IP Version 6", RFC 3596, | "DNS Extensions to Support IP Version 6", STD 88, | |||
DOI 10.17487/RFC3596, October 2003, | RFC 3596, DOI 10.17487/RFC3596, October 2003, | |||
<http://www.rfc-editor.org/info/rfc3596>. | <https://www.rfc-editor.org/info/rfc3596>. | |||
[DNSOP-REVERSE] | [DNSOP-REVERSE] | |||
Senie, D. and A. Sullivan, "Considerations for the use of | Senie, D. and A. Sullivan, "Considerations for the use | |||
DNS Reverse Mapping", Work in Progress, draft-ietf-dnsop- | of DNS Reverse Mapping", Work in Progress, | |||
reverse-mapping-considerations-06, March 2008. | draft-ietf-dnsop-reverse-mapping-considerations-06, | |||
March 2008. | ||||
[DOMAINKEYS] | [DOMAINKEYS] | |||
Delany, M., "Domain-Based Email Authentication Using | Delany, M., "Domain-Based Email Authentication Using | |||
Public Keys Advertised in the DNS (DomainKeys)", RFC 4870, | Public Keys Advertised in the DNS (DomainKeys)", RFC 4870, | |||
DOI 10.17487/RFC4870, May 2007, | DOI 10.17487/RFC4870, May 2007, | |||
<http://www.rfc-editor.org/info/rfc4870>. | <https://www.rfc-editor.org/info/rfc4870>. | |||
[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, | |||
DOI 10.17487/RFC3464, January 2003, | DOI 10.17487/RFC3464, January 2003, | |||
<http://www.rfc-editor.org/info/rfc3464>. | <https://www.rfc-editor.org/info/rfc3464>. | |||
[EMAIL-ARCH] | [EMAIL-ARCH] | |||
Crocker, D., "Internet Mail Architecture", RFC 5598, | Crocker, D., "Internet Mail Architecture", RFC 5598, | |||
DOI 10.17487/RFC5598, July 2009, | DOI 10.17487/RFC5598, July 2009, | |||
<http://www.rfc-editor.org/info/rfc5598>. | <https://www.rfc-editor.org/info/rfc5598>. | |||
[IANA-CONSIDERATIONS] | [IANA-CONSIDERATIONS] | |||
Cotton, M., Leiba, B., and T. Narten, "Guidelines for | Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<http://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | [IMAP] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | |||
4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | |||
<http://www.rfc-editor.org/info/rfc3501>. | <https://www.rfc-editor.org/info/rfc3501>. | |||
[POP3] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | [POP3] Myers, J. and M. Rose, "Post Office Protocol - Version 3", | |||
STD 53, RFC 1939, DOI 10.17487/RFC1939, May 1996, | STD 53, RFC 1939, DOI 10.17487/RFC1939, May 1996, | |||
<http://www.rfc-editor.org/info/rfc1939>. | <https://www.rfc-editor.org/info/rfc1939>. | |||
[RFC5451] Kucherawy, M., "Message Header Field for Indicating | [RFC5451] Kucherawy, M., "Message Header Field for Indicating | |||
Message Authentication Status", RFC 5451, DOI 10.17487/ | Message Authentication Status", RFC 5451, | |||
RFC5451, April 2009, | DOI 10.17487/RFC5451, April 2009, | |||
<https://www.rfc-editor.org/info/rfc5451>. | <https://www.rfc-editor.org/info/rfc5451>. | |||
[RFC6008] Kucherawy, M., "Authentication-Results Registration for | [RFC6008] Kucherawy, M., "Authentication-Results Registration for | |||
Differentiating among Cryptographic Results", RFC 6008, | Differentiating among Cryptographic Results", RFC 6008, | |||
DOI 10.17487/RFC6008, September 2010, | DOI 10.17487/RFC6008, September 2010, | |||
<https://www.rfc-editor.org/info/rfc6008>. | <https://www.rfc-editor.org/info/rfc6008>. | |||
[RFC6577] Kucherawy, M., "Authentication-Results Registration Update | [RFC6577] Kucherawy, M., "Authentication-Results Registration Update | |||
for Sender Policy Framework (SPF) Results", RFC 6577, | for Sender Policy Framework (SPF) Results", RFC 6577, | |||
DOI 10.17487/RFC6577, March 2012, | DOI 10.17487/RFC6577, March 2012, | |||
<https://www.rfc-editor.org/info/rfc6577>. | <https://www.rfc-editor.org/info/rfc6577>. | |||
[RFC7001] Kucherawy, M., "Message Header Field for Indicating | [RFC7001] Kucherawy, M., "Message Header Field for Indicating | |||
Message Authentication Status", RFC 7001, DOI 10.17487/ | Message Authentication Status", RFC 7001, | |||
RFC7001, September 2013, | DOI 10.17487/RFC7001, September 2013, | |||
<https://www.rfc-editor.org/info/rfc7001>. | <https://www.rfc-editor.org/info/rfc7001>. | |||
[RFC7410] Kucherawy, M., "A Property Types Registry for the | [RFC7410] Kucherawy, M., "A Property Types Registry for the | |||
Authentication-Results Header Field", RFC 7410, | Authentication-Results Header Field", RFC 7410, | |||
DOI 10.17487/RFC7410, December 2014, | DOI 10.17487/RFC7410, December 2014, | |||
<http://www.rfc-editor.org/info/rfc7410>. | <https://www.rfc-editor.org/info/rfc7410>. | |||
[RFC8301] Kitterman, S., "Cryptographic Algorithm and Key Usage | [RFC8301] Kitterman, S., "Cryptographic Algorithm and Key Usage | |||
Update to DomainKeys Identified Mail (DKIM)", RFC 8301, | Update to DomainKeys Identified Mail (DKIM)", RFC 8301, | |||
DOI 10.17487/RFC8301, January 2018, | DOI 10.17487/RFC8301, January 2018, | |||
<https://www.rfc-editor.org/info/rfc8301>. | <https://www.rfc-editor.org/info/rfc8301>. | |||
[RRVS] Mills, W. and M. Kucherawy, "The Require-Recipient-Valid- | [RRVS] Mills, W. and M. Kucherawy, "The Require-Recipient-Valid- | |||
Since Header Field and SMTP Service Extension", RFC 7293, | Since Header Field and SMTP Service Extension", RFC 7293, | |||
DOI 10.17487/RFC7293, July 2014, | DOI 10.17487/RFC7293, July 2014, | |||
<http://www.rfc-editor.org/info/rfc7293>. | <https://www.rfc-editor.org/info/rfc7293>. | |||
[SECURITY] | [SECURITY] Rescorla, E. and B. Korver, "Guidelines for Writing RFC | |||
Rescorla, E. and B. Korver, "Guidelines for Writing RFC | ||||
Text on Security Considerations", BCP 72, RFC 3552, | Text on Security Considerations", BCP 72, RFC 3552, | |||
DOI 10.17487/RFC3552, July 2003, | DOI 10.17487/RFC3552, July 2003, | |||
<http://www.rfc-editor.org/info/rfc3552>. | <https://www.rfc-editor.org/info/rfc3552>. | |||
[SENDERID] | [SENDERID] Lyon, J. and M. Wong, "Sender ID: Authenticating E-Mail", | |||
Lyon, J. and M. Wong, "Sender ID: Authenticating E-Mail", | ||||
RFC 4406, DOI 10.17487/RFC4406, April 2006, | RFC 4406, DOI 10.17487/RFC4406, April 2006, | |||
<http://www.rfc-editor.org/info/rfc4406>. | <https://www.rfc-editor.org/info/rfc4406>. | |||
[SMIME-REG] | [SMIME-REG] | |||
Melnikov, A., "Authentication-Results Registration for | Melnikov, A., "Authentication-Results Registration for | |||
S/MIME Signature Verification", RFC 7281, DOI 10.17487/ | S/MIME Signature Verification", RFC 7281, | |||
RFC7281, June 2014, | DOI 10.17487/RFC7281, June 2014, | |||
<http://www.rfc-editor.org/info/rfc7281>. | <https://www.rfc-editor.org/info/rfc7281>. | |||
[SPF] Kitterman, S., "Sender Policy Framework (SPF) for | [SPF] Kitterman, S., "Sender Policy Framework (SPF) for | |||
Authorizing Use of Domains in Email, Version 1", RFC 7208, | Authorizing Use of Domains in Email, Version 1", RFC 7208, | |||
DOI 10.17487/RFC7208, April 2014, | DOI 10.17487/RFC7208, April 2014, | |||
<http://www.rfc-editor.org/info/rfc7208>. | <https://www.rfc-editor.org/info/rfc7208>. | |||
[VBR] Hoffman, P., Levine, J., and A. Hathcock, "Vouch By | [VBR] Hoffman, P., Levine, J., and A. Hathcock, "Vouch By | |||
Reference", RFC 5518, DOI 10.17487/RFC5518, April 2009, | Reference", RFC 5518, DOI 10.17487/RFC5518, April 2009, | |||
<http://www.rfc-editor.org/info/rfc5518>. | <https://www.rfc-editor.org/info/rfc5518>. | |||
Appendix A. Legacy MUAs | Appendix A. Legacy MUAs | |||
Implementers of this protocol should be aware that many MUAs are | Implementers of this specification should be aware that many MUAs are | |||
unlikely to be retrofitted to support the new header field and its | unlikely to be retrofitted to support the Authentication-Results | |||
semantics. In the interests of convenience and quicker adoption, a | header field and its semantics. In the interests of convenience and | |||
delivery MTA might want to consider adding things that are processed | quicker adoption, a delivery MTA might want to consider adding things | |||
by existing MUAs in addition to the Authentication-Results header | that are processed by existing MUAs in addition to the | |||
field. One suggestion is to include a Priority header field, on | Authentication-Results header field. One suggestion is to include a | |||
messages that don't already have such a header field, containing a | Priority header field, on messages that don't already have such a | |||
value that reflects the strength of the authentication that was | header field, containing a value that reflects the strength of the | |||
accomplished, e.g., "low" for weak or no authentication, "normal" or | authentication that was accomplished, e.g., "low" for weak or no | |||
"high" for good or strong authentication. | authentication, "normal" or "high" for good or strong authentication. | |||
Some modern MUAs can already filter based on the content of this | Some modern MUAs can already filter based on the content of this | |||
header field. However, there is keen interest in having MUAs make | header field. However, there is keen interest in having MUAs make | |||
some kind of graphical representation of this header field's meaning | some kind of graphical representation of this header field's meaning | |||
to end users. Until this capability is added (i.e., while this | to end users. Until this capability is added (i.e., while this | |||
specification and its successors continue to be adopted), other | specification and its successors continue to be adopted), other | |||
interim means of conveying authentication results may be necessary. | interim means of conveying authentication results may be necessary. | |||
Appendix B. Authentication-Results Examples | Appendix B. Authentication-Results Examples | |||
This section presents some examples of the use of this header field | This section presents some examples of the use of this header field | |||
to indicate authentication results. | to indicate authentication results. | |||
B.1. Trivial Case; Header Field Not Present | B.1. Trivial Case: Header Field Not Present | |||
The trivial case: | The trivial case: | |||
Received: from mail-router.example.com | Received: from mail-router.example.com | |||
(mail-router.example.com [192.0.2.1]) | (mail-router.example.com [192.0.2.1]) | |||
by server.example.org (8.11.6/8.11.6) | by server.example.org (8.11.6/8.11.6) | |||
with ESMTP id g1G0r1kA003489; | with ESMTP id g1G0r1kA003489; | |||
Fri, Feb 15 2002 17:19:07 -0800 | Fri, Feb 15 2002 17:19:07 -0800 | |||
From: sender@example.com | From: sender@example.com | |||
Date: Fri, Feb 15 2002 16:54:30 -0800 | Date: Fri, Feb 15 2002 16:54:30 -0800 | |||
To: receiver@example.org | To: receiver@example.org | |||
Message-Id: <12345.abc@example.com> | Message-Id: <12345.abc@example.com> | |||
Subject: here's a sample | Subject: here's a sample | |||
Hello! Goodbye! | Hello! Goodbye! | |||
Example 1: Trivial Case | Example 1: Header Field Not Present | |||
The Authentication-Results header field is completely absent. The | The Authentication-Results header field is completely absent. The | |||
MUA may make no conclusion about the validity of the message. This | MUA may make no conclusion about the validity of the message. This | |||
could be the case because the message authentication services were | could be the case because (1) the message authentication services | |||
not available at the time of delivery, or no service is provided, or | were not available at the time of delivery, (2) no service is | |||
the MTA is not in compliance with this specification. | provided, or (3) the MTA is not in compliance with this | |||
specification. | ||||
B.2. Nearly Trivial Case; Service Provided, but No Authentication Done | B.2. Nearly Trivial Case: Service Provided, but No Authentication Done | |||
A message that was delivered by an MTA that conforms to this | A message that was delivered by an MTA that conforms to this | |||
specification but provides no actual message authentication service: | specification but provides no actual message authentication service: | |||
Authentication-Results: example.org 1; none | Authentication-Results: example.org 1; none | |||
Received: from mail-router.example.com | Received: from mail-router.example.com | |||
(mail-router.example.com [192.0.2.1]) | (mail-router.example.com [192.0.2.1]) | |||
by server.example.org (8.11.6/8.11.6) | by server.example.org (8.11.6/8.11.6) | |||
with ESMTP id g1G0r1kA003489; | with ESMTP id g1G0r1kA003489; | |||
Fri, Feb 15 2002 17:19:07 -0800 | Fri, Feb 15 2002 17:19:07 -0800 | |||
skipping to change at page 45, line 34 ¶ | skipping to change at page 47, line 34 ¶ | |||
Message-Id: <12345.abc@example.net> | Message-Id: <12345.abc@example.net> | |||
Subject: here's a sample | Subject: here's a sample | |||
Hello! Goodbye! | Hello! Goodbye! | |||
Example 4: Headers Reporting Results from One MTA | Example 4: Headers Reporting Results from One MTA | |||
The Authentication-Results header field is present, indicating that | The Authentication-Results header field is present, indicating that | |||
the delivering MTA conforms to this specification. Once again, the | the delivering MTA conforms to this specification. Once again, the | |||
receiving DNS domain name is used as the authserv-id. Furthermore, | receiving DNS domain name is used as the authserv-id. Furthermore, | |||
the sender authenticated herself/himself to the MTA via a method | the sender authenticated themselves to the MTA via a method specified | |||
specified in [AUTH], and both SPF and "iprev" checks were done and | in [AUTH], and both SPF and "iprev" checks were done and passed. The | |||
passed. The MUA could extract and relay this extra information if | MUA could extract and relay this extra information if desired. | |||
desired. | ||||
Two Authentication-Results header fields are not required since the | Two Authentication-Results header fields are not required, since the | |||
same host did all of the checking. The authenticating agent could | same host did all of the checking. The authenticating agent could | |||
have consolidated all the results into one header field. | have consolidated all the results into one header field. | |||
This example illustrates a scenario in which a remote user on a | This example illustrates a scenario in which a remote user on a | |||
dial-up connection (example.net) sends mail to a border MTA | dial-up connection (example.net) sends mail to a border MTA | |||
(example.com) using SMTP authentication to prove identity. The | (example.com) using SMTP authentication to prove identity. The | |||
dial-up provider has been explicitly authorized to relay mail as | dial-up provider has been explicitly authorized to relay mail as | |||
example.net, producing a "pass" result from the SPF check. | example.net, producing a "pass" result from the SPF check. | |||
B.5. Service Provided, Several Authentications Done, Different MTAs | B.5. Service Provided, Several Authentications Done, Different MTAs | |||
skipping to change at page 47, line 4 ¶ | skipping to change at page 49, line 7 ¶ | |||
is the recipient's DNS domain name. The header field is present | is the recipient's DNS domain name. The header field is present | |||
twice because two different MTAs in the chain of delivery did | twice because two different MTAs in the chain of delivery did | |||
authentication tests. The first MTA, mail-router.example.com, | authentication tests. The first MTA, mail-router.example.com, | |||
reports that SMTP AUTH and SPF were both used and that the former | reports that SMTP AUTH and SPF were both used and that the former | |||
passed while the latter failed. In the SMTP AUTH case, additional | passed while the latter failed. In the SMTP AUTH case, additional | |||
information is provided in the comment field, which the MUA can | information is provided in the comment field, which the MUA can | |||
choose to render if desired. | choose to render if desired. | |||
The second MTA, auth-checker.example.com, reports that it did a DKIM | The second MTA, auth-checker.example.com, reports that it did a DKIM | |||
test (which passed). Again, additional data about one of the tests | test (which passed). Again, additional data about one of the tests | |||
is provided as a comment, which the MUA may choose to render. Also | are provided as a comment, which the MUA may choose to render. Also | |||
noteworthy here is the fact that there is a DKIM signature added by | noteworthy here is the fact that there is a DKIM signature added by | |||
example.com that assured the integrity of the lower Authentication- | example.com that assured the integrity of the lower Authentication- | |||
Results field. | Results field. | |||
Since different hosts did the two sets of authentication checks, the | Since different hosts did the two sets of authentication checks, the | |||
header fields cannot be consolidated in this example. | header fields cannot be consolidated in this example. | |||
This example illustrates more typical transmission of a message into | This example illustrates more typical transmission of a message into | |||
example.com from a user on a dial-up connection example.net. The | example.com from a user on a dial-up connection example.net. The | |||
user appears to be legitimate as he/she had a valid password allowing | user appears to be legitimate, as they had a valid password allowing | |||
authentication at the border MTA using SMTP AUTH. The SPF test | authentication at the border MTA using SMTP AUTH. The SPF test | |||
failed since example.com has not granted example.net's dial-up | failed, since example.com has not granted example.net's dial-up | |||
network authority to relay mail on its behalf. The DKIM test passed | network authority to relay mail on its behalf. The DKIM test passed | |||
because the sending user had a private key matching one of | because the sending user had a private key matching one of | |||
example.com's published public keys and mail-router.example.com used | example.com's published public keys and mail-router.example.com used | |||
it to sign the message. | it to sign the message. | |||
B.6. Service Provided, Multi-tiered Authentication Done | B.6. Service Provided, Multi-tiered Authentication Done | |||
A message that had authentication done at various stages, one of | A message that had authentication done at various stages, one of | |||
which was outside the receiving ADMD: | which was outside the receiving ADMD: | |||
skipping to change at page 48, line 45 ¶ | skipping to change at page 50, line 45 ¶ | |||
t=1188964191; c=simple/simple; | t=1188964191; c=simple/simple; | |||
h=From:Date:To:Message-Id:Subject; | h=From:Date:To:Message-Id:Subject; | |||
bh=sEu28nfs9fuZGD/pSr7ANysbY3jtdaQ3Xv9xPQtS0m7=; | bh=sEu28nfs9fuZGD/pSr7ANysbY3jtdaQ3Xv9xPQtS0m7=; | |||
b=EToRSuvUfQVP3Bkz ... rTB0t0gYnBVCM= | b=EToRSuvUfQVP3Bkz ... rTB0t0gYnBVCM= | |||
From: sender@newyork.example.com | From: sender@newyork.example.com | |||
Date: Fri, Feb 15 2002 16:54:30 -0800 | Date: Fri, Feb 15 2002 16:54:30 -0800 | |||
To: meetings@example.net | To: meetings@example.net | |||
Message-Id: <12345.abc@newyork.example.com> | Message-Id: <12345.abc@newyork.example.com> | |||
Subject: here's a sample | Subject: here's a sample | |||
Example 6: Headers Reporting Results from Multiple MTAs in Different | Example 6: Headers Reporting Results from Multiple MTAs in | |||
ADMDs | Different ADMDs | |||
In this example, we see multi-tiered authentication with an extended | In this example, we see multi-tiered authentication with an extended | |||
trust boundary. | trust boundary. | |||
The message was sent from someone at example.com's New York office | The message was sent from someone at example.com's New York office | |||
(newyork.example.com) to a mailing list managed at an intermediary. | (newyork.example.com) to a mailing list managed at an intermediary. | |||
The message was signed at the origin using DKIM. | The message was signed at the origin using DKIM. | |||
The message was sent to a mailing list service provider called | The message was sent to a mailing list service provider called | |||
example.net, which is used by example.com. There, | "example.net", which is used by example.com. There, | |||
meetings@example.net is expanded to a long list of recipients, one of | meetings@example.net is expanded to a long list of recipients, one of | |||
whom is at the Chicago office. In this example, we will assume that | whom is at the Chicago office. In this example, we will assume that | |||
the trust boundary for chicago.example.com includes the mailing list | the trust boundary for chicago.example.com includes the mailing list | |||
server at example.net. | server at example.net. | |||
The mailing list server there first authenticated the message and | The mailing list server there first authenticated the message and | |||
affixed an Authentication-Results header field indicating such using | affixed an Authentication-Results header field indicating such using | |||
its DNS domain name for the authserv-id. It then altered the message | its DNS domain name for the authserv-id. It then altered the message | |||
by affixing some footer text to the body, including some | by affixing some footer text to the body, including some | |||
administrivia such as unsubscription instructions. Finally, the | administrivia such as unsubscription instructions. Finally, the | |||
mailing list server affixes a second DKIM signature and begins | mailing list server affixes a second DKIM signature and begins | |||
distribution of the message. | distribution of the message. | |||
The border MTA for chicago.example.com explicitly trusts results from | The border MTA for chicago.example.com explicitly trusts results from | |||
mail-router.example.net, so that header field is not removed. It | mail-router.example.net, so that header field is not removed. It | |||
performs evaluation of both signatures and determines that the first | performs evaluation of both signatures and determines that the first | |||
(most recent) is a "pass" but, because of the aforementioned | (most recent) is a "pass" but, because of the aforementioned | |||
modifications, the second is a "fail". However, the first signature | modifications, the second is a "fail". However, the first signature | |||
included the Authentication-Results header added at mail- | included the Authentication-Results header added at | |||
router.example.net that validated the second signature. Thus, | mail-router.example.net that validated the second signature. Thus, | |||
indirectly, it can be determined that the authentications claimed by | indirectly, it can be determined that the authentications claimed by | |||
both signatures are indeed valid. | both signatures are indeed valid. | |||
Note that two styles of presenting metadata about the result are in | Note that two styles of presenting metadata about the result are in | |||
use here. In one case, the "reason=" clause is present, which is | use here. In one case, the "reason=" clause is present, which is | |||
intended for easy extraction by parsers; in the other case, the CFWS | intended for easy extraction by parsers; in the other case, the CFWS | |||
production of the ABNF is used to include such data as a header field | production of the ABNF is used to include such data as a header field | |||
comment. The latter can be harder for parsers to extract given the | comment. The latter can be harder for parsers to extract given the | |||
varied supported syntaxes of mail header fields. | varied supported syntaxes of mail header fields. | |||
skipping to change at page 50, line 7 ¶ | skipping to change at page 52, line 7 ¶ | |||
Authentication-Results: foo.example.net (foobar) 1 (baz); | Authentication-Results: foo.example.net (foobar) 1 (baz); | |||
dkim (Because I like it) / 1 (One yay) = (wait for it) fail | dkim (Because I like it) / 1 (One yay) = (wait for it) fail | |||
policy (A dot can go here) . (like that) expired | policy (A dot can go here) . (like that) expired | |||
(this surprised me) = (as I wasn't expecting it) 1362471462 | (this surprised me) = (as I wasn't expecting it) 1362471462 | |||
Example 7: A Very Comment-Heavy but Perfectly Legal Example | Example 7: A Very Comment-Heavy but Perfectly Legal Example | |||
Appendix C. Operational Considerations about Message Authentication | Appendix C. Operational Considerations about Message Authentication | |||
This protocol is predicated on the idea that authentication (and | Implementation of the Authentication-Results header field is | |||
presumably in the future, reputation) work is typically done by | predicated on the idea that authentication (and presumably in the | |||
border MTAs rather than MUAs or intermediate MTAs; the latter merely | future, reputation) work is typically done by border MTAs rather than | |||
make use of the results determined by the former. Certainly this is | MUAs or intermediate MTAs; the latter merely make use of the results | |||
not mandatory for participation in electronic mail or message | determined by the former. Certainly this is not mandatory for | |||
authentication, but this protocol and its deployment to date are | participation in electronic mail or message authentication, but this | |||
based on that model. The assumption satisfies several common ADMD | header field and its deployment to date are based on that model. The | |||
requirements: | assumption satisfies several common ADMD requirements: | |||
1. Service operators prefer to resolve the handling of problem | 1. Service operators prefer to resolve the handling of problem | |||
messages as close to the border of the ADMD as possible. This | messages as close to the border of the ADMD as possible. This | |||
enables, for example, rejection of messages at the SMTP level | enables, for example, rejection of messages at the SMTP level | |||
rather than generating a DSN internally. Thus, doing any of the | rather than generating a DSN internally. Thus, doing any of the | |||
authentication or reputation work exclusively at the MUA or | authentication or reputation work exclusively at the MUA or | |||
intermediate MTA renders this desire unattainable. | intermediate MTA renders this desire unattainable. | |||
2. Border MTAs are more likely to have direct access to external | 2. Border MTAs are more likely to have direct access to external | |||
sources of authentication or reputation information since modern | sources of authentication or reputation information, since modern | |||
MUAs inside of an ADMD are more likely to be heavily firewalled. | MUAs inside of an ADMD are more likely to be heavily firewalled. | |||
Thus, some MUAs might not even be able to complete the task of | Thus, some MUAs might not even be able to complete the task of | |||
performing authentication or reputation evaluations without | performing authentication or reputation evaluations without | |||
complex proxy configurations or similar burdens. | complex proxy configurations or similar burdens. | |||
3. MUAs rely upon the upstream MTAs within their trust boundaries to | 3. MUAs rely upon the upstream MTAs within their trust boundaries to | |||
make correct (as much as is possible) evaluations about the | make correct (as much as is possible) evaluations about the | |||
message's envelope, header, and content. Thus, MUAs don't need | message's envelope, header, and content. Thus, MUAs don't need | |||
to know how to do the work that upstream MTAs do; they only need | to know how to do the work that upstream MTAs do; they only need | |||
the results of that work. | the results of that work. | |||
skipping to change at page 51, line 23 ¶ | skipping to change at page 53, line 23 ¶ | |||
choosing to implement these functions in MTAs vs. MUAs, the | choosing to implement these functions in MTAs vs. MUAs, the | |||
issues of individual flexibility, infrastructure inertia, and | issues of individual flexibility, infrastructure inertia, and | |||
scale of effort must be considered. It is typically easier to | scale of effort must be considered. It is typically easier to | |||
change a single MUA than an MTA because the modification affects | change a single MUA than an MTA because the modification affects | |||
fewer users and can be pursued with less care. However, changing | fewer users and can be pursued with less care. However, changing | |||
many MUAs is more effort than changing a smaller number of MTAs. | many MUAs is more effort than changing a smaller number of MTAs. | |||
6. For decisions affecting message delivery and display, assessment | 6. For decisions affecting message delivery and display, assessment | |||
based on authentication and reputation is best performed close to | based on authentication and reputation is best performed close to | |||
the time of message transit, as a message makes its journey | the time of message transit, as a message makes its journey | |||
toward a user's inbox, not afterwards. DKIM keys and IP address | toward a user's inbox, not afterwards. DKIM keys, IP address | |||
reputations, etc., can change over time or even become invalid, | reputations, etc., can change over time or even become invalid, | |||
and users can take a long time to read a message once delivered. | and users can take a long time to read a message once delivered. | |||
The value of this work thus degrades, perhaps quickly, once the | The value of this work thus degrades, perhaps quickly, once the | |||
delivery process has completed. This seriously diminishes the | delivery process has completed. This seriously diminishes the | |||
value of this work when done elsewhere than at MTAs. | value of this work when done elsewhere than at MTAs. | |||
Many operational choices are possible within an ADMD, including the | Many operational choices are possible within an ADMD, including the | |||
venue for performing authentication and/or reputation assessment. | venue for performing authentication and/or reputation assessment. | |||
The current specification does not dictate any of those choices. | The current specification does not dictate any of those choices. | |||
Rather, it facilitates those cases in which information produced by | Rather, it facilitates those cases in which information produced by | |||
one stage of analysis needs to be transported with the message to the | one stage of analysis needs to be transported with the message to the | |||
next stage. | next stage. | |||
Appendix D. Changes since RFC7601 | Appendix D. Changes since RFC 7601 | |||
o Added IANA registration for DKIM "a" and "s" properties. | o Added IANA registration for DKIM "a" and "s" properties. | |||
o Include EAI guidance. | o Included EAI guidance. | |||
o Adjust some ABNF tokes and names for easier inclusion by other | o Adjusted some ABNF tokens and names for easier inclusion by other | |||
documents. | documents. | |||
o Made minor editorial adjustments. | o Made minor editorial adjustments. | |||
o Deprecate entries from RFCs that are now Historic. | o Deprecated entries from RFCs that are now Historic. | |||
Appendix E. Acknowledgments | o Erratum 4671 resolved. | |||
o Erratum 5435 resolved. | ||||
Acknowledgments | ||||
The author wishes to acknowledge the following individuals for their | The author wishes to acknowledge the following individuals for their | |||
review and constructive criticism of this document: Kurt Andersen, | review and constructive criticism of this document: Kurt Andersen, | |||
Seth Blank, Tim Draegen, Scott Kitterman, John Levine, and Alessandro | Seth Blank, Tim Draegen, Scott Kitterman, John Levine, and Alessandro | |||
Vesely. | Vesely. | |||
Author's Address | Author's Address | |||
Murray S. Kucherawy | Murray S. Kucherawy | |||
270 Upland Drive | 270 Upland Drive | |||
San Francisco, CA 94127 | San Francisco, CA 94127 | |||
United States | United States of America | |||
Email: superuser@gmail.com | Email: superuser@gmail.com | |||
End of changes. 188 change blocks. | ||||
451 lines changed or deleted | 454 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |