Hi,
I just finished my AD review of the document. As far as I am concerned, all "major" issues need to be addressed and other issues need to be discussed before I start IETF LC on this draft.

Major issues:

1) 3.2.  MTA-STS Policies

   The [RFC7231] "Content-Type" media type for this resource MUST be
   "text/plain".  When fetching a policy, senders SHOULD validate that
   the media type is "text/plain" to guard against cases where
   webservers allow untrusted users to host non-text content (typically,
   HTML or images) at a user-defined path.  Additional "Content-Type"
   parameters are ignored.

I find this requirement to be problematic, because if somebody decided to use a file in ShiftJIS charset or one of Unicode-16 variants, it would not be parseable at all.

My recommendations: update this requirement to say that all parameters other than charset are ignored. Additionally, require use of charset=utf-8 or charset=us-ascii.

2) In Section 3.2:

   sts-policy-record        = *WSP sts-policy-field *WSP
                              *(CRLF *WSP sts-policy-field *WSP)

I thought the intent of this syntax was to be able to use a generic RFC 5322 header field parser. Unfortunately what you have above is not going to work, as leading "*WSP" are 1) not valid according to RFC 5322 and 2) going to trigger "line continuation rule" (FWS) from RFC 5322.

I suggest you disallow leading "*WSP". If you agree, then the ABNF will become:

   sts-policy-record        = sts-policy-field *WSP
                              *(CRLF sts-policy-field *WSP)

(Note that trailing *WSP is fine).

If you really really want leading *WSP, then you need to add a sentence to the document stating that this format can't be parsed by RFC 5322 parser, without stripping leading WSP on each line first.



Other minor comments:


1) 1.1.  Terminology

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

You should consider switching to the new template and replace the above with:

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].  These
   words may also appear in this document in lowercase, absent their
   normative meanings.

2) In the same section:

   We also define the following terms for further use in this document:

   o  MTA-STS Policy: A commitment by the Policy Domain to support PKIX
      authenticated TLS for the specified MX hosts.

PKIX needs a Normative Reference to RFC 5280.

3) In Section 3.1

Just to double check - I assume the order of different fields is not significant, other than the sts-version field being first? If that is correct, you should add a statement about this in an ABNF comment.

The reason why I ask is I want to know, whether the following 2 examples are the same (assume "ex1" is an extension field):

v=STSv1; id=foo; ex1=bar

 and

v=STSv1; ex1=bar; id=foo;


4) 3.2.  MTA-STS Policies

   The [RFC7231] "Content-Type" media type for this resource MUST be
   "text/plain".

I think this requirement is a bit strong, because we should really register a new text/... media type for the policy format documented in the draft. I appreciate that this is not necessarily what you want to do in the document.

5) In the same section:

   This resource contains the following newline-separated key/value

I think "CRLF-separated" would be better here, as there are multiple ways of signalling new lines in different protocols.

   pairs:



   o  "mode": (plain-text).  One of "enforce", "testing", or "none",
      indicating the expected behavior of a sending MTA in the case of a
      policy validation failure.

Please add a forward pointer to Section 5, where the exact meaning of these 3 fields is explained.

6) In the same section:

   o  "mx": MX identity patterns (list of plain-text strings).  One or
      more patterns matching a Common Name ([RFC6125]) or Subject
      Alternative Name ([RFC5280]) DNS-ID present in the X.509
      certificate presented by any MX receiving mail for this domain.

The references above are confused. I think you want to say:

   o  "mx": MX identity patterns (list of plain-text strings).  One or
      more patterns matching a Common Name or Subject Alternative
      Name ([RFC5280]) DNS-ID ([RFC6125]) present in the X.509
      certificate presented by any MX receiving mail for this domain.

In particular, I think Common Name is defined (maybe by reference) in RFC 5280 and DNS-ID is defined in RFC 6125.


There is similar text elsewhere in the document, that also needs updating.

7) In the same section:

      For example: "mx: mail.example.com mx: .example.net" indicates

Maybe insert <CRLF> or \r\n between mx fields above, as the above example is not syntactically valid per your ABNF.

      that mail for this domain might be handled by any MX with a
      certificate valid for a host at "mail.example.com" or
      "example.net".

8) In the same section:

   sts-policy-max-age-value = 1*10(DIGIT)

Your ABNF allows for leading 0s. Are leading zeroes Ok? If not, you either need to make the ABNF more restrictive or you add an ABNF comment saying that. For example for the latter:

   sts-policy-max-age-value = 1*10(DIGIT)
                              ; leading 0s are disallowed

If leading 0s are allowed, you don't have to do anything (you can say that explicitly). I just wanted to double check.

8) In the same section:

   sts-policy-ext-value     = 1*(%x21-3A / %x3C / %x3E-7E)
                            ; chars, excluding "=", ";", SP, and
                            ; control chars

I just want to double check that you really want to be that restrictive in the policy format? If extensions want to add a field with human readable text, at least allowing for space might be useful. I don't see much reason to prohibit "=" and ";" here either.

9) In Section 3.3:

3.3.  HTTPS Policy Fetching

   When fetching a new policy or updating a policy, the HTTPS endpoint
   MUST present a X.509 certificate which is valid for the "mta-sts"
   host (e.g.  "mta-sts.example.com") as described below, chain to a
   root CA that is trusted by the sending MTA, and be non-expired.

I think here you are repeating what is already mandated by RFC 5280. I am wondering what else have you missed. Would it be better just to point to RFC 5280 here? Or at least add "See RFC 5280 for more details about certificate verification".

Also, what about various certificate key usage fields? Some libraries/applications verify that certificates used are allowed for intended purposes.

10) 3.4.  Policy Selection for Smart Hosts and Subdomains

   When sending mail via a "smart host"--an intermediate SMTP relay
   rather than the message recipient's server--compliant senders MUST
   treat the smart host domain as the policy domain for the purposes of
   policy discovery and application.

I don't think your definition of smart host is quite right. Email already uses intermediate SMTP relays which are specified by MX records. These don't have to correspond to "message recipient's server"s.

I suggest replacing the "smart host" definition with something like this:

   When sending mail via a "smart host"--an administratively
   configured intermediate SMTP relay, which is different from
   the message recipient's server as determined from DNS --compliant
   senders MUST
   treat the smart host domain as the policy domain for the purposes of
   policy discovery and application.

11) I am a bit uneasy about requiring to use SNI extension (as opposed to requiring to implement it). I think the text is not entirely consistent about MUSTs there. I suggest authors review the whole section for consistency.

12) RFC 3207 (SMTP STARTTLS extension) must be a Normative Reference, as it is required to implement (and understand) this document.

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

Reply via email to