draft-ietf-uta-smtp-tlsrpt-11.txt | draft-ietf-uta-smtp-tlsrpt-12.txt | |||
---|---|---|---|---|
Using TLS in Applications D. Margolis | Using TLS in Applications D. Margolis | |||
Internet-Draft Google, Inc | Internet-Draft Google, Inc | |||
Intended status: Standards Track A. Brotman | Intended status: Standards Track A. Brotman | |||
Expires: May 12, 2018 Comcast, Inc | Expires: June 7, 2018 Comcast, Inc | |||
B. Ramakrishnan | B. Ramakrishnan | |||
Yahoo!, Inc | Yahoo!, Inc | |||
J. Jones | J. Jones | |||
Microsoft, Inc | Microsoft, Inc | |||
M. Risher | M. Risher | |||
Google, Inc | Google, Inc | |||
November 8, 2017 | December 4, 2017 | |||
SMTP TLS Reporting | SMTP TLS Reporting | |||
draft-ietf-uta-smtp-tlsrpt-11 | draft-ietf-uta-smtp-tlsrpt-12 | |||
Abstract | Abstract | |||
A number of protocols exist for establishing encrypted channels | A number of protocols exist for establishing encrypted channels | |||
between SMTP Mail Transfer Agents, including STARTTLS, DANE TLSA, and | between SMTP Mail Transfer Agents, including STARTTLS, DANE TLSA, and | |||
MTA-STS. These protocols can fail due to misconfiguration or active | MTA-STS. These protocols can fail due to misconfiguration or active | |||
attack, leading to undelivered messages or delivery over unencrypted | attack, leading to undelivered messages or delivery over unencrypted | |||
or unauthenticated channels. This document describes a reporting | or unauthenticated channels. This document describes a reporting | |||
mechanism and format by which sending systems can share statistics | mechanism and format by which sending systems can share statistics | |||
and specific information about potential failures with recipient | and specific information about potential failures with recipient | |||
skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
misconfigurations. | misconfigurations. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on May 12, 2018. | This Internet-Draft will expire on June 7, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
skipping to change at page 3, line 6 ¶ | skipping to change at page 3, line 6 ¶ | |||
5.4. HTTPS Transport . . . . . . . . . . . . . . . . . . . . . 15 | 5.4. HTTPS Transport . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.5. Delivery Retry . . . . . . . . . . . . . . . . . . . . . 16 | 5.5. Delivery Retry . . . . . . . . . . . . . . . . . . . . . 16 | |||
5.6. Metadata Variances . . . . . . . . . . . . . . . . . . . 16 | 5.6. Metadata Variances . . . . . . . . . . . . . . . . . . . 16 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.1. Message headers . . . . . . . . . . . . . . . . . . . . . 16 | 6.1. Message headers . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.2. Report Type . . . . . . . . . . . . . . . . . . . . . . . 17 | 6.2. Report Type . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
6.3. application/tlsrpt+json Media Type . . . . . . . . . . . 17 | 6.3. application/tlsrpt+json Media Type . . . . . . . . . . . 17 | |||
6.4. application/tlsrpt+gzip Media Type . . . . . . . . . . . 18 | 6.4. application/tlsrpt+gzip Media Type . . . . . . . . . . . 18 | |||
6.5. STARTTLS Validation Result Types . . . . . . . . . . . . 19 | 6.5. STARTTLS Validation Result Types . . . . . . . . . . . . 19 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
8. Appendix 1: Example Reporting Policy . . . . . . . . . . . . 21 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
8.1. Report using MAILTO . . . . . . . . . . . . . . . . . . . 21 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 21 | |||
8.2. Report using HTTPS . . . . . . . . . . . . . . . . . . . 21 | 8.2. Informative References . . . . . . . . . . . . . . . . . 23 | |||
9. Appendix 2: Example JSON Report . . . . . . . . . . . . . . . 21 | Appendix A. Example Reporting Policy . . . . . . . . . . . . . . 23 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | A.1. Report using MAILTO . . . . . . . . . . . . . . . . . . . 23 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 23 | A.2. Report using HTTPS . . . . . . . . . . . . . . . . . . . 23 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 25 | Appendix B. Example JSON Report . . . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
1. Introduction | 1. Introduction | |||
The STARTTLS extension to SMTP [RFC3207] allows SMTP clients and | The STARTTLS extension to SMTP [RFC3207] allows SMTP clients and | |||
hosts to establish secure SMTP sessions over TLS. The protocol | hosts to establish secure SMTP sessions over TLS. The protocol | |||
design is based on "Opportunistic Security" (OS) [RFC7435], which | design is based on "Opportunistic Security" (OS) [RFC7435], which | |||
maintains interoperability with clients that do not support STARTTLS | maintains interoperability with clients that do not support STARTTLS | |||
but means that any attacker who can delete parts of the SMTP session | but means that any attacker who can delete parts of the SMTP session | |||
(such as the "250 STARTTLS" response) or redirect the entire SMTP | (such as the "250 STARTTLS" response) or redirect the entire SMTP | |||
session (perhaps by overwriting the resolved MX record of the | session (perhaps by overwriting the resolved MX record of the | |||
delivery domain) can perform a downgrade or interception attack. | delivery domain) can perform a downgrade or interception attack. | |||
Because such "downgrade attacks" are not necessarily apparent to the | Because such "downgrade attacks" are not necessarily apparent to the | |||
receiving MTA, this document defines a mechanism for sending domains | receiving MTA, this document defines a mechanism for sending domains | |||
to report on failures at multiple stages of the MTA-to-MTA | to report on failures at multiple stages of the MTA-to-MTA | |||
conversation. | conversation. | |||
Recipient domains may also use the mechanisms defined by MTA-STS | Recipient domains may also use the mechanisms defined by MTA-STS | |||
(TODO: Add ref) or DANE [RFC6698] to publish additional encryption | [I-D.ietf-uta-mta-sts] or DANE [RFC6698] to publish additional | |||
and authentication requirements; this document defines a mechanism | encryption and authentication requirements; this document defines a | |||
for sending domains that are compatible with MTA-STS or DANE to share | mechanism for sending domains that are compatible with MTA-STS or | |||
success and failure statistics with recipient domains. | DANE to share success and failure statistics with recipient domains. | |||
Specifically, this document defines a reporting schema that covers | Specifically, this document defines a reporting schema that covers | |||
failures in routing, STARTTLS negotiation, and both DANE [RFC6698] | failures in routing, STARTTLS negotiation, and both DANE [RFC6698] | |||
and MTA-STS (TODO: Add ref) policy validation errors, and a standard | and MTA-STS [I-D.ietf-uta-mta-sts] policy validation errors, and a | |||
TXT record that recipient domains can use to indicate where reports | standard TXT record that recipient domains can use to indicate where | |||
in this format should be sent. | reports in this format should be sent. | |||
This document is intended as a companion to the specification for | This document is intended as a companion to the specification for | |||
SMTP MTA Strict Transport Security (MTA-STS, TODO: Add ref). | SMTP MTA Strict Transport Security [I-D.ietf-uta-mta-sts]. | |||
1.1. Terminology | 1.1. Terminology | |||
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", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
We also define the following terms for further use in this document: | We also define the following terms for further use in this document: | |||
o MTA-STS Policy: A definition of the expected TLS availability, | o MTA-STS Policy: A definition of the expected TLS availability, | |||
behavior, and desired actions for a given domain when a sending | behavior, and desired actions for a given domain when a sending | |||
MTA encounters problems in negotiating a secure channel. MTA-STS | MTA encounters problems in negotiating a secure channel. MTA-STS | |||
is defined in [TODO] | is defined in [I-D.ietf-uta-mta-sts]. | |||
o DANE Policy: A mechanism by which administrators can supply a | o DANE Policy: A mechanism by which administrators can supply a | |||
record that can be used to validate the certificate presented by | record that can be used to validate the certificate presented by | |||
an MTA. DANE is defined in [RFC6698]. | an MTA. DANE is defined in [RFC6698]. | |||
o TLSRPT Policy: A policy specifying the endpoint to which sending | o TLSRPT Policy: A policy specifying the endpoint to which sending | |||
MTAs should deliver reports. | MTAs should deliver reports. | |||
o Policy Domain: The domain against which an MTA-STS or DANE Policy | o Policy Domain: The domain against which an MTA-STS or DANE Policy | |||
is defined. | is defined. | |||
o Sending MTA: The MTA initiating the delivery of an email message. | o Sending MTA: The MTA initiating the delivery of an email message. | |||
2. Related Technologies | 2. Related Technologies | |||
o This document is intended as a companion to the specification for | o This document is intended as a companion to the specification for | |||
SMTP MTA Strict Transport Security (MTA-STS, TODO: Add RFC ref). | SMTP MTA Strict Transport Security [I-D.ietf-uta-mta-sts]. | |||
o SMTP-TLSRPT defines a mechanism for sending domains that are | o SMTP-TLSRPT defines a mechanism for sending domains that are | |||
compatible with MTA-STS or DANE to share success and failure | compatible with MTA-STS or DANE to share success and failure | |||
statistics with recipient domains. DANE is defined in [RFC6698] | statistics with recipient domains. DANE is defined in [RFC6698] | |||
and MTA-STS is defined in [TODO : Add RFC ref] | and MTA-STS is defined in [I-D.ietf-uta-mta-sts]. | |||
3. Reporting Policy | 3. Reporting Policy | |||
A domain publishes a record to its DNS indicating that it wishes to | A domain publishes a record to its DNS indicating that it wishes to | |||
receive reports. These SMTP TLSRPT policies are distributed via DNS | receive reports. These SMTP TLSRPT policies are distributed via DNS | |||
from the Policy Domain's zone, as TXT records (similar to DMARC | from the Policy Domain's zone, as TXT records (similar to DMARC | |||
policies) under the name "_smtp-tlsrpt". For example, for the Policy | policies) under the name "_smtp-tlsrpt". For example, for the Policy | |||
Domain "example.com", the recipient's TLSRPT policy can be retrieved | Domain "example.com", the recipient's TLSRPT policy can be retrieved | |||
from "_smtp-tlsrpt.example.com". | from "_smtp-tlsrpt.example.com". | |||
skipping to change at page 5, line 12 ¶ | skipping to change at page 5, line 12 ¶ | |||
[RFC7489], the policy domain can specify a comma-separated list of | [RFC7489], the policy domain can specify a comma-separated list of | |||
URIs. | URIs. | |||
o In the case of "https", reports should be submitted via POST | o In the case of "https", reports should be submitted via POST | |||
([RFC7231]) to the specified URI. Report submitters MAY ignore | ([RFC7231]) to the specified URI. Report submitters MAY ignore | |||
certificate validation errors when submitting reports via https. | certificate validation errors when submitting reports via https. | |||
o In the case of "mailto", reports should be submitted to the | o In the case of "mailto", reports should be submitted to the | |||
specified email address ([RFC6068]). When sending failure reports | specified email address ([RFC6068]). When sending failure reports | |||
via SMTP, sending MTAs MUST deliver reports despite any TLS- | via SMTP, sending MTAs MUST deliver reports despite any TLS- | |||
related failuresand SHOULD NOT include this SMTP session in the | related failures and SHOULD NOT include this SMTP session in the | |||
next report. This may mean that the reports are delivered in the | next report. This may mean that the reports are delivered in the | |||
clear. Additionally, reports sent via SMTP MUST contain a valid | clear. Additionally, reports sent via SMTP MUST contain a valid | |||
DKIM [RFC6376] signature by the reporting domain. Reports lacking | DKIM [RFC6376] signature by the reporting domain. Reports lacking | |||
such a signature MUST be ignored by the recipient. DKIM | such a signature MUST be ignored by the recipient. DKIM | |||
signatures must not use the "l=" attribute to limit the body | signatures must not use the "l=" attribute to limit the body | |||
length used in the signature. | length used in the signature. | |||
The formal definition of the "_smtp-tlsrpt" TXT record, defined using | The formal definition of the "_smtp-tlsrpt" TXT record, defined using | |||
[RFC5234] & [RFC7405], is as follows: | [RFC5234] & [RFC7405], is as follows: | |||
tlsrpt-record = tlsrpt-version 1*(field-delim tlsrpt-field) | tlsrpt-record = tlsrpt-version 1*(field-delim tlsrpt-field) | |||
[field-delim] | [field-delim] | |||
field-delim = *WSP ";" *WSP | field-delim = *WSP ";" *WSP | |||
tlsrpt-field = tlsrpt-rua / ; Note that the tlsrpt-rua | tlsrpt-field = tlsrpt-rua / ; Note that the | |||
tlsrpt-extension ; record is required. | tlsrpt-extension ; tlsrpt-rua record is | |||
; required. | ||||
tlsrpt-version = %s"v=TLSRPTv1" | tlsrpt-version = %s"v=TLSRPTv1" | |||
tlsrpt-rua = %s"rua=" | tlsrpt-rua = %s"rua=" | |||
tlsrpt-uri *(*WSP "," *WSP tlsrpt-uri) | tlsrpt-uri *(*WSP "," *WSP tlsrpt-uri) | |||
tlsrpt-uri = URI | tlsrpt-uri = URI | |||
; "URI" is imported from [@!RFC3986]; commas (ASCII | ; "URI" is imported from [@!RFC3986]; | |||
; 0x2C) and exclamation points (ASCII 0x21) | ; commas (ASCII 0x2C) and exclamation | |||
; MUST be encoded | ; points (ASCII 0x21) MUST be encoded | |||
tlsrpt-extension = tlsrpt-ext-name "=" tlsrpt-ext-value | tlsrpt-extension = tlsrpt-ext-name "=" tlsrpt-ext-value | |||
tlsrpt-ext-name = (ALPHA / DIGIT) *31(ALPHA / DIGIT / "_" / "-" / ".") | tlsrpt-ext-name = (ALPHA / DIGIT) *31(ALPHA / | |||
DIGIT / "_" / "-" / ".") | ||||
tlsrpt-ext-value = 1*(%x21-3A / %x3C / %x3E-7E) ; chars excluding | tlsrpt-ext-value = 1*(%x21-3A / %x3C / %x3E-7E) | |||
; "=", ";", SP, and | ; chars excluding "=", ";", SP, and control | |||
; control chars | ; chars | |||
If multiple TXT records for "_smtp-tlsrpt" are returned by the | If multiple TXT records for "_smtp-tlsrpt" are returned by the | |||
resolver, records which do not begin with "v=TLSRPTv1;" are | resolver, records which do not begin with "v=TLSRPTv1;" are | |||
discarded. If the number of resulting records is not one, senders | discarded. If the number of resulting records is not one, senders | |||
MUST assume the recipient domain does not implement TLSRPT. If the | MUST assume the recipient domain does not implement TLSRPT. If the | |||
resulting TXT record contains multiple strings, then the record MUST | resulting TXT record contains multiple strings, then the record MUST | |||
be treated as if those strings are concatenated together without | be treated as if those strings are concatenated together without | |||
adding spaces. | adding spaces. | |||
Parsers MUST accept TXT records which are syntactically valid (i.e. | Parsers MUST accept TXT records which are syntactically valid (i.e. | |||
valid key-value pairs separated by semi-colons) and implementing a | valid key-value pairs separated by semi-colons) and implementing a | |||
superset of this specification, in which case unknown fields SHALL be | superset of this specification, in which case unknown fields SHALL be | |||
ignored. | ignored. | |||
3.1. Example Reporting Policy | 3.1. Example Reporting Policy | |||
3.1.1. Report using MAILTO | 3.1.1. Report using MAILTO | |||
_smtp-tlsrpt.example.com. IN TXT \ | _smtp-tlsrpt.example.com. IN TXT \ | |||
"v=TLSRPTv1;rua=mailto:reports@example.com" | "v=TLSRPTv1;rua=mailto:reports@example.com" | |||
3.1.2. Report using HTTPS | 3.1.2. Report using HTTPS | |||
_smtp-tlsrpt.example.com. IN TXT \ | _smtp-tlsrpt.example.com. IN TXT \ | |||
"v=TLSRPTv1; \ | "v=TLSRPTv1; \ | |||
rua=https://reporting.example.com/v1/tlsrpt" | rua=https://reporting.example.com/v1/tlsrpt" | |||
4. Reporting Schema | 4. Reporting Schema | |||
The report is composed as a plain text file encoded in the I-JSON | The report is composed as a plain text file encoded in the I-JSON | |||
format ([RFC7493]). | format ([RFC7493]). | |||
Aggregate reports contain the following fields: | Aggregate reports contain the following fields: | |||
o Report metadata: | o Report metadata: | |||
skipping to change at page 13, line 37 ¶ | skipping to change at page 13, line 37 ¶ | |||
The extension MUST be "json" for a plain JSON file, or "json.gz" for | The extension MUST be "json" for a plain JSON file, or "json.gz" for | |||
a JSON file compressed using GZIP. | a JSON file compressed using GZIP. | |||
"unique-id" allows an optional unique ID generated by the Sending MTA | "unique-id" allows an optional unique ID generated by the Sending MTA | |||
to distinguish among multiple reports generated simultaneously by | to distinguish among multiple reports generated simultaneously by | |||
different sources within the same Policy Domain. For example, this | different sources within the same Policy Domain. For example, this | |||
is a possible filename for the gzip file of a report to the Policy | is a possible filename for the gzip file of a report to the Policy | |||
Domain "example.net" from the Sending MTA "mail.sender.example.com": | Domain "example.net" from the Sending MTA "mail.sender.example.com": | |||
`mail.sender.example.com!example.net!1470013207!1470186007!001.json.gz` | "mail.sender.example.com!example.net!1470013207!1470186007!001.json.g | |||
z" | ||||
5.2. Compression | 5.2. Compression | |||
The report SHOULD be subjected to GZIP compression for both email and | The report SHOULD be subjected to GZIP compression for both email and | |||
HTTPS transport. Declining to apply compression can cause the report | HTTPS transport. Declining to apply compression can cause the report | |||
to be too large for a receiver to process (a commonly observed | to be too large for a receiver to process (a commonly observed | |||
receiver limit is ten megabytes); compressing the file increases the | receiver limit is ten megabytes); compressing the file increases the | |||
chances of acceptance of the report at some compute cost. | chances of acceptance of the report at some compute cost. | |||
5.3. Email Transport | 5.3. Email Transport | |||
skipping to change at page 13, line 52 ¶ | skipping to change at page 14, line 4 ¶ | |||
HTTPS transport. Declining to apply compression can cause the report | HTTPS transport. Declining to apply compression can cause the report | |||
to be too large for a receiver to process (a commonly observed | to be too large for a receiver to process (a commonly observed | |||
receiver limit is ten megabytes); compressing the file increases the | receiver limit is ten megabytes); compressing the file increases the | |||
chances of acceptance of the report at some compute cost. | chances of acceptance of the report at some compute cost. | |||
5.3. Email Transport | 5.3. Email Transport | |||
The report MAY be delivered by email. To make the reports machine- | The report MAY be delivered by email. To make the reports machine- | |||
parsable for the receivers, we define a top-level media type | parsable for the receivers, we define a top-level media type | |||
"multipart/report" with a new parameter "report-type="tlsrpt"". | "multipart/report" with a new parameter "report-type="tlsrpt"". | |||
Inside it, there are two parts: The first part is human readable, | Inside it, there are two parts: The first part is human readable, | |||
typically "text/plain", and the second part is machine readable with | typically "text/plain", and the second part is machine readable with | |||
a new media type defined called "application/tlsrpt+json". If | a new media type defined called "application/tlsrpt+json". If | |||
compressed, the report should use the media type "application/ | compressed, the report should use the media type "application/ | |||
tlsrpt+gzip". | tlsrpt+gzip". | |||
In addition, the following two new top level message header fields | In addition, the following two new top level message header fields | |||
are defined: | are defined: | |||
TLS-Report-Domain: Receiver-Domain | "TLS-Report-Domain: Receiver-Domain TLS-Report-Submitter: Sender- | |||
TLS-Report-Submitter: Sender-Domain | Domain" The "TLS-Report-Submitter" value MUST match the value found | |||
in the filename and the [RFC5321] domain from the "contact-info" from | ||||
The "TLS-Report-Submitter" value MUST match the value found in the | the report body. These message headers MUST be included and should | |||
filename and the [RFC5321] domain from the "contact-info" from the | allow for easy searching for all reports submitted by a report domain | |||
report body. These message headers MUST be included and should allow | or a particular submitter, for example in IMAP [RFC3501]: | |||
for easy searching for all reports submitted by a report domain or a | ||||
particular submitter, for example in IMAP [RFC3501]: | ||||
"s SEARCH HEADER "TLS-Report-Domain" "example.com"" | "s SEARCH HEADER "TLS-Report-Domain" "example.com"" | |||
It is presumed that the aggregate reporting address will be equipped | It is presumed that the aggregate reporting address will be equipped | |||
to process new message header fields and extract MIME parts with the | to process new message header fields and extract MIME parts with the | |||
prescribed media type and filename, and ignore the rest. These | prescribed media type and filename, and ignore the rest. These | |||
additional headers SHOULD be included in the DKIM [RFC6376] signature | additional headers SHOULD be included in the DKIM [RFC6376] signature | |||
for the message. | for the message. | |||
The [RFC5322].Subject field for report submissions SHOULD conform to | The [RFC5322].Subject field for report submissions SHOULD conform to | |||
the following ABNF: | the following ABNF: | |||
tlsrpt-subject = %s"Report" FWS ; "Report" | tlsrpt-subject = %s"Report" FWS ; "Report" | |||
%s"Domain:" FWS ; "Domain:" | %s"Domain:" FWS ; "Domain:" | |||
domain-name FWS ; per RFC6376 | domain-name FWS ; per RFC6376 | |||
%s"Submitter:" FWS ; "Submitter:" | %s"Submitter:" FWS ; "Submitter:" | |||
domain-name FWS ; per RFC6376 | domain-name FWS ; per RFC6376 | |||
%s"Report-ID:" FWS ; "Report-ID: | %s"Report-ID:" FWS ; "Report-ID: | |||
"<" id-left "@" id-right ">" ; per RFC5322 | "<" id-left "@" id-right ">" ; per RFC5322 | |||
[CFWS] ; per RFC5322 (as with FWS) | [CFWS] ; per RFC5322 | |||
; (as with FWS) | ||||
The first domain-name indicates the DNS domain name about which the | The first domain-name indicates the DNS domain name about which the | |||
report was generated. The second domain-name indicates the DNS | report was generated. The second domain-name indicates the DNS | |||
domain name representing the Sending MTA generating the report. The | domain name representing the Sending MTA generating the report. The | |||
purpose of the Report-ID: portion of the field is to enable the | purpose of the Report-ID: portion of the field is to enable the | |||
Policy Domain to identify and ignore duplicate reports that might be | Policy Domain to identify and ignore duplicate reports that might be | |||
sent by a Sending MTA. | sent by a Sending MTA. | |||
For instance, this is a possible Subject field for a report to the | For instance, this is a possible Subject field for a report to the | |||
Policy Domain "example.net" from the Sending MTA | Policy Domain "example.net" from the Sending MTA | |||
"mail.sender.example.com". It is line-wrapped as allowed by | "mail.sender.example.com". It is line-wrapped as allowed by | |||
[RFC5322]: | Subject: Report Domain: example.net | |||
Submitter: mail.sender.example.com | ||||
Subject: Report Domain: example.net | Report-ID: <735ff.e317+bf22029@mailexample.net> | |||
Submitter: mail.sender.example.com | ||||
Report-ID: <735ff.e317+bf22029@mailexample.net> | ||||
5.3.1. Example Report | 5.3.1. Example Report | |||
From: tlsrpt@mail.sender.example.com | From: tlsrpt@mail.sender.example.com | |||
Date: Fri, May 09 2017 16:54:30 -0800 | Date: Fri, May 09 2017 16:54:30 -0800 | |||
To: mts-sts-tlsrpt@example.net | To: mts-sts-tlsrpt@example.net | |||
Subject: Report Domain: example.net | Subject: Report Domain: example.net | |||
Submitter: mail.sender.example.com | Submitter: mail.sender.example.com | |||
Report-ID: <735ff.e317+bf22029@example.net> | Report-ID: <735ff.e317+bf22029@example.net> | |||
TLS-Report-Domain: example.net | TLS-Report-Domain: example.net | |||
skipping to change at page 21, line 5 ¶ | skipping to change at page 21, line 5 ¶ | |||
including attacks designed to thwart negotiation of encrypted | including attacks designed to thwart negotiation of encrypted | |||
connections (by downgrading opportunistic encryption or, in the case | connections (by downgrading opportunistic encryption or, in the case | |||
of MTA-STS, preventing discovery of a new MTA-STS policy), we must | of MTA-STS, preventing discovery of a new MTA-STS policy), we must | |||
also consider the risk that an adversary who can induce such a | also consider the risk that an adversary who can induce such a | |||
downgrade attack can also prevent discovery of the TLSRPT TXT record | downgrade attack can also prevent discovery of the TLSRPT TXT record | |||
(and thus prevent discovery of the successful downgrade attack). | (and thus prevent discovery of the successful downgrade attack). | |||
Administrators are thus encouraged to deploy TLSRPT TXT records with | Administrators are thus encouraged to deploy TLSRPT TXT records with | |||
a large TTL (reducing the window for successful attacks against DNS | a large TTL (reducing the window for successful attacks against DNS | |||
resolution of the record) or to deploy DNSSEC on the deploying zone. | resolution of the record) or to deploy DNSSEC on the deploying zone. | |||
8. Appendix 1: Example Reporting Policy | 8. References | |||
8.1. Report using MAILTO | ||||
_smtp-tlsrpt.mail.example.com. IN TXT \ | ||||
"v=TLSRPTv1;rua=mailto:reports@example.com" | ||||
8.2. Report using HTTPS | ||||
_smtp-tlsrpt.mail.example.com. IN TXT \ | ||||
"v=TLSRPTv1; \ | ||||
rua=https://reporting.example.com/v1/tlsrpt" | ||||
9. Appendix 2: Example JSON Report | ||||
{ | ||||
"organization-name": "Company-X", | ||||
"date-range": { | ||||
"start-datetime": "2016-04-01T00:00:00Z", | ||||
"end-datetime": "2016-04-01T23:59:59Z" | ||||
}, | ||||
"contact-info": "sts-reporting@company-x.com", | ||||
"report-id": "5065427c-23d3-47ca-b6e0-946ea0e8c4be", | ||||
"policies": [{ | ||||
"policy": { | ||||
"policy-type": "sts", | ||||
"policy-string": "version: STSv1\r\nmode: report\r\nmx: .mail.company-y.com\r\nmax_age: 86400", | ||||
"policy-domain": "company-y.com", | ||||
"mx-host": ".mail.company-y.com" | ||||
}, | ||||
"summary": { | ||||
"total-successful-session-count": 5326, | ||||
"total-failure-session-count": 303 | ||||
}, | ||||
"failure-details": [{ | ||||
"result-type": "certificate-expired", | ||||
"sending-mta-ip": "98.136.216.25", | ||||
"receiving-mx-hostname": "mx1.mail.company-y.com", | ||||
"failed-session-count": 100 | ||||
}, { | ||||
"result-type": "starttls-not-supported", | ||||
"sending-mta-ip": "98.22.33.99", | ||||
"receiving-mx-hostname": "mx2.mail.company-y.com", | ||||
"failed-session-count": 200, | ||||
"additional-information": "https://reports.company-x.com/ | ||||
report_info ? id = 5065427 c - 23 d3# StarttlsNotSupported " | ||||
}, { | ||||
"result-type": "validation-failure", | ||||
"sending-mta-ip": "47.97.15.2", | ||||
"receiving-mx-hostname": "mx-backup.mail.company-y.com", | ||||
"failed-session-count": 3, | ||||
"failure-error-code": "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED" | ||||
}] | ||||
}] | ||||
} | ||||
Figure: Example JSON report for a messages from Company-X to | ||||
Company-Y, where 100 sessions were attempted to Company Y servers | ||||
with an expired certificate and 200 sessions were attempted to | ||||
Company Y servers that did not successfully respond to the "STARTTLS" | ||||
command. Additionally 3 sessions failed due to | ||||
"X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED". | ||||
10. References | 8.1. Normative References | |||
10.1. Normative References | [I-D.ietf-uta-mta-sts] | |||
Margolis, D., Risher, M., Ramakrishnan, B., Brotman, A., | ||||
and J. Jones, "SMTP MTA Strict Transport Security (MTA- | ||||
STS)", draft-ietf-uta-mta-sts-11 (work in progress), | ||||
November 2017. | ||||
[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, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: | |||
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, | |||
<http://www.rfc-editor.org/info/rfc3339>. | <https://www.rfc-editor.org/info/rfc3339>. | |||
[RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode | [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode | |||
for Internationalized Domain Names in Applications | for Internationalized Domain Names in Applications | |||
(IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, | (IDNA)", RFC 3492, DOI 10.17487/RFC3492, March 2003, | |||
<http://www.rfc-editor.org/info/rfc3492>. | <https://www.rfc-editor.org/info/rfc3492>. | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, RFC | Resource Identifier (URI): Generic Syntax", STD 66, | |||
3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<http://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] 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>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
<http://www.rfc-editor.org/info/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | [RFC5321] 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>. | |||
[RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, DOI | [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, | |||
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>. | |||
[RFC5891] Klensin, J., "Internationalized Domain Names in | [RFC5891] Klensin, J., "Internationalized Domain Names in | |||
Applications (IDNA): Protocol", RFC 5891, DOI 10.17487/ | Applications (IDNA): Protocol", RFC 5891, | |||
RFC5891, August 2010, | DOI 10.17487/RFC5891, August 2010, | |||
<http://www.rfc-editor.org/info/rfc5891>. | <https://www.rfc-editor.org/info/rfc5891>. | |||
[RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 | [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 | |||
Address Text Representation", RFC 5952, DOI 10.17487/ | Address Text Representation", RFC 5952, | |||
RFC5952, August 2010, | DOI 10.17487/RFC5952, August 2010, | |||
<http://www.rfc-editor.org/info/rfc5952>. | <https://www.rfc-editor.org/info/rfc5952>. | |||
[RFC6068] Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' | [RFC6068] Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' | |||
URI Scheme", RFC 6068, DOI 10.17487/RFC6068, October 2010, | URI Scheme", RFC 6068, DOI 10.17487/RFC6068, October 2010, | |||
<http://www.rfc-editor.org/info/rfc6068>. | <https://www.rfc-editor.org/info/rfc6068>. | |||
[RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and | |||
Verification of Domain-Based Application Service Identity | Verification of Domain-Based Application Service Identity | |||
within Internet Public Key Infrastructure Using X.509 | within Internet Public Key Infrastructure Using X.509 | |||
(PKIX) Certificates in the Context of Transport Layer | (PKIX) Certificates in the Context of Transport Layer | |||
Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March | Security (TLS)", RFC 6125, DOI 10.17487/RFC6125, March | |||
2011, <http://www.rfc-editor.org/info/rfc6125>. | 2011, <https://www.rfc-editor.org/info/rfc6125>. | |||
[RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed., | [RFC6376] 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>. | |||
[RFC6522] Kucherawy, M., Ed., "The Multipart/Report Media Type for | [RFC6522] Kucherawy, M., Ed., "The Multipart/Report Media Type for | |||
the Reporting of Mail System Administrative Messages", STD | the Reporting of Mail System Administrative Messages", | |||
73, RFC 6522, DOI 10.17487/RFC6522, January 2012, | STD 73, RFC 6522, DOI 10.17487/RFC6522, January 2012, | |||
<http://www.rfc-editor.org/info/rfc6522>. | <https://www.rfc-editor.org/info/rfc6522>. | |||
[RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | [RFC6698] Hoffman, P. and J. Schlyter, "The DNS-Based Authentication | |||
of Named Entities (DANE) Transport Layer Security (TLS) | of Named Entities (DANE) Transport Layer Security (TLS) | |||
Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August | Protocol: TLSA", RFC 6698, DOI 10.17487/RFC6698, August | |||
2012, <http://www.rfc-editor.org/info/rfc6698>. | 2012, <https://www.rfc-editor.org/info/rfc6698>. | |||
[RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
Protocol (HTTP/1.1): Semantics and Content", RFC 7231, DOI | Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | |||
10.17487/RFC7231, June 2014, <https://www.rfc-editor.org/ | DOI 10.17487/RFC7231, June 2014, | |||
info/rfc7231>. | <https://www.rfc-editor.org/info/rfc7231>. | |||
[RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", RFC | [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", | |||
7405, DOI 10.17487/RFC7405, December 2014, | RFC 7405, DOI 10.17487/RFC7405, December 2014, | |||
<http://www.rfc-editor.org/info/rfc7405>. | <https://www.rfc-editor.org/info/rfc7405>. | |||
[RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493, DOI | [RFC7493] Bray, T., Ed., "The I-JSON Message Format", RFC 7493, | |||
10.17487/RFC7493, March 2015, | DOI 10.17487/RFC7493, March 2015, | |||
<http://www.rfc-editor.org/info/rfc7493>. | <https://www.rfc-editor.org/info/rfc7493>. | |||
10.2. Informative References | 8.2. Informative References | |||
[RFC3207] Hoffman, P., "SMTP Service Extension for Secure SMTP over | [RFC3207] Hoffman, P., "SMTP Service Extension for Secure SMTP over | |||
Transport Layer Security", RFC 3207, DOI 10.17487/RFC3207, | Transport Layer Security", RFC 3207, DOI 10.17487/RFC3207, | |||
February 2002, <http://www.rfc-editor.org/info/rfc3207>. | February 2002, <https://www.rfc-editor.org/info/rfc3207>. | |||
[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | [RFC3501] 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>. | |||
[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | [RFC3864] 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>. | |||
[RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | |||
Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | |||
December 2014, <http://www.rfc-editor.org/info/rfc7435>. | December 2014, <https://www.rfc-editor.org/info/rfc7435>. | |||
[RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | |||
Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | |||
2015, <http://www.rfc-editor.org/info/rfc7469>. | 2015, <https://www.rfc-editor.org/info/rfc7469>. | |||
[RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based | [RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based | |||
Message Authentication, Reporting, and Conformance | Message Authentication, Reporting, and Conformance | |||
(DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, | (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015, | |||
<http://www.rfc-editor.org/info/rfc7489>. | <https://www.rfc-editor.org/info/rfc7489>. | |||
Appendix A. Example Reporting Policy | ||||
A.1. Report using MAILTO | ||||
_smtp-tlsrpt.mail.example.com. IN TXT \ | ||||
"v=TLSRPTv1;rua=mailto:reports@example.com" | ||||
A.2. Report using HTTPS | ||||
_smtp-tlsrpt.mail.example.com. IN TXT \ | ||||
"v=TLSRPTv1; \ | ||||
rua=https://reporting.example.com/v1/tlsrpt" | ||||
Appendix B. Example JSON Report | ||||
{ | ||||
"organization-name": "Company-X", | ||||
"date-range": { | ||||
"start-datetime": "2016-04-01T00:00:00Z", | ||||
"end-datetime": "2016-04-01T23:59:59Z" | ||||
}, | ||||
"contact-info": "sts-reporting@company-x.example", | ||||
"report-id": "5065427c-23d3-47ca-b6e0-946ea0e8c4be", | ||||
"policies": [{ | ||||
"policy": { | ||||
"policy-type": "sts", | ||||
"policy-string": "version: STSv1\r\nmode: report\r\n | ||||
mx: .mail.company-y.example\r\nmax_age: 86400", | ||||
"policy-domain": "company-y.example", | ||||
"mx-host": ".mail.company-y.example" | ||||
}, | ||||
"summary": { | ||||
"total-successful-session-count": 5326, | ||||
"total-failure-session-count": 303 | ||||
}, | ||||
"failure-details": [{ | ||||
"result-type": "certificate-expired", | ||||
"sending-mta-ip": "98.136.216.25", | ||||
"receiving-mx-hostname": "mx1.mail.company-y.example", | ||||
"failed-session-count": 100 | ||||
}, { | ||||
"result-type": "starttls-not-supported", | ||||
"sending-mta-ip": "98.22.33.99", | ||||
"receiving-mx-hostname": "mx2.mail.company-y.example", | ||||
"failed-session-count": 200, | ||||
"additional-information": "https://reports.company-x.example/ | ||||
report_info ? id = 5065427 c - 23 d3# StarttlsNotSupported " | ||||
}, { | ||||
"result-type": "validation-failure", | ||||
"sending-mta-ip": "47.97.15.2", | ||||
"receiving-mx-hostname": "mx-backup.mail.company-y.example", | ||||
"failed-session-count": 3, | ||||
"failure-error-code": "X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED" | ||||
}] | ||||
}] | ||||
} | ||||
Figure: Example JSON report for a messages from Company-X to Company- | ||||
Y, where 100 sessions were attempted to Company Y servers with an | ||||
expired certificate and 200 sessions were attempted to Company Y | ||||
servers that did not successfully respond to the "STARTTLS" command. | ||||
Additionally 3 sessions failed due to | ||||
"X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED". | ||||
Authors' Addresses | Authors' Addresses | |||
Daniel Margolis | Daniel Margolis | |||
Google, Inc | Google, Inc | |||
Email: dmargolis (at) google.com | Email: dmargolis (at) google (dot com) | |||
Alexander Brotman | Alexander Brotman | |||
Comcast, Inc | Comcast, Inc | |||
Email: alex_brotman (at) comcast.com | Email: alex_brotman (at) comcast (dot com) | |||
Binu Ramakrishnan | Binu Ramakrishnan | |||
Yahoo!, Inc | Yahoo!, Inc | |||
Email: rbinu (at) yahoo-inc (dot com) | Email: rbinu (at) yahoo-inc (dot com) | |||
Janet Jones | Janet Jones | |||
Microsoft, Inc | Microsoft, Inc | |||
Email: janet.jones (at) microsoft (dot com) | Email: janet.jones (at) microsoft (dot com) | |||
Mark Risher | Mark Risher | |||
Google, Inc | Google, Inc | |||
Email: risher (at) google (dot com) | Email: risher (at) google (dot com) | |||
End of changes. 61 change blocks. | ||||
179 lines changed or deleted | 189 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |