Re: [EAI] Comments on draft-ietf-eai-downgrade-04
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [EAI] Comments on draft-ietf-eai-downgrade-04
Thank you very much for your comments.
> From: "Charles Lindsey" <chl at clerew.man.ac.uk>
> Sorry, I should have got around to commenting on this much earlier, but it
> only just reached the top of my 'todo' list :-( .
>
> > 3. New header fields definition
> > fields =/ downgraded
> > downgraded = "Downgraded:" [FWS] field-name ":" unstructured CRLF
> > Encapsulating a header in a Downgraded: header is defined as:
> ^ ^
> field field
> > 1. Generate new Downgraded: header whose former value is the
> > original header field name and latter value is the original
> > header fleid value.
> > 2. Encode the generated header by [RFC2047] section 5(1) method with
> > charset='UTF-8'.
> > 3. Replace the original header field as the generated header field.
>
> That Step 3 does not always apply; for example when the original was a
> From:/To:/etc field, which then remains (in altered form) in addition to
> the
> new Downgraded:
I removed 3. The Header field downgrading section will be changed to
adopt the IETF69 discussion.
> > fields =/ edowngraded
> > edowngraded = "Envelope-Downgraded:" [FWS] edowngraded-field ":"
> > [FWS] "<" uPath ">" [FWS]
> > "<" Mailbox ">" [FWS] CRLF
> > edowngraded-field = "From" / "To"
>
> Why not
>
> > edowngraded-field = "Mail From" / "Rcpt To"
>
> to avoid any possible confusion with the From: and To: headers?
It's reasonable. And I changed them as "Downgraded-MAIL-FROM" and
"Downgraded-RCPT-TO".
> > Original non-ASCII address <uPath> is defined in
> > [I-D.ietf-eai-smtpext]. <Mailbox> is defined in [RFC2821], section
> > 4.1.2. The "Envelope-Downgraded:" header field is encoded by
> > [RFC2047] in the downgraded message.
>
> I think it is wrong to say (as you do frequently) that
>
> 'The "Some-Header:" is encoded by [RFC2047]'
>
> RFC2047 encodes carefully regulated _parts_ of header fields (such as
> <unstructured>s, <comments>s and <phrase>s), never the whole header field.
> In this case it is the <uPath> (treated as if it were <unstructured>) that
> gets encoded (or maybe even only a part of it - 2047 allows you to split it
> up in many ways). Your later examples indeed indicate that is what you
> intend to happen.
OK, I will check and rewrite all "encoded by [RFC2047]" carefully.
> > 4. SMTP Downgrading
> > MTA replaces non-ASCII mail address with specified alternative US-
> > ASCII address when downgrading. Before replacing, decode the ALT-
> > ADDRESS parameter value because it is encoded as xtest [RFC3461].
>
> Eh? That last sentence only applies to an ORCPT parameter, I think.
smtpext-07 section 2.4 says:
ALT-ADDRESS-parameter="ALT-ADDRESS=" ALT-ADDRESS-esmtp-value
ALT-ADDRESS-esmtp-value=xtext
> > Also MTA preserves original information using "Envelope-Downgraded"
> > header defined in Section 3 with From or To field name. The non-
> > ASCII mail addresses are encoded by [RFC2047] and put into "Envelope-
> > Downgraded" header.
>
> Yes, that wording is correct, as opposed to what you said about encoding
> the
> whole header earlier.
But this description is a duplication. I removed it.
> > 5. Email header fields downgrading
>
> I found the whole of this section very confusing. You have done an
> exhaustive analysis of lots of particular cases, resulting in much
> unnecessary repetition, instead of setting out the _principles_ on which
> the
> whole thing was based.
I'm considering how to write them clearly.
> For example, it is always correct to encode a <comment> whatever header it
> occurs in and whether or not that header contains further stuff (e.g.
> addresses) that have to be downgraded specially. So you might as well state
> that once up-front (even in a conceptual first pass over all the headers),
> rather than mention it as an extra thing to do when performing other more
> particular downgrade operations.
>
>
> > o Downgrading Address header fields
> > From:
> > Sender:
> > Reply-To:
> > To:
> > Cc:
> > Bcc:
> > Resent-From:
> > Resent-Sender:
> > Resent-To:
> > Resent-Cc:
>
> But that is only the present list. Surely the process you describe MAY also
> be used for any header defined in the future which contains an <angle-addr>
> etc.
It is true but currently supported header fields list is necessary.
> The upgrade/display mechanisms you describe in A1 and A2 would work
> just fine on such headers.
>
> > The header field value is composed of single or multiple <angle-
> > addr>/<utf8-addr-spec> fields defined in
> > [I-D.ietf-eai-utf8headers].
> > If the header has no <angle-addr> or <utf8-addr-spec> which
> > contains non-ASCII characters, only "display-name" part or
> > comments contain non-ASCII characters, the "display-name" or
> > comments are encoded by [RFC2047] with charset='UTF-8'.
> > Otherwise, preserve the header field in "Downgraded:" header,
> > generate US-ASCII only address header, and replace the original
> > header field with the generated US-ASCII only header field. New
> > header generation method are shown in below.
> > Extract every field and downgrade each <mailbox>/<angle-addr>/
> > <utf8-addr-spec>.
>
> Remove <mailbox> there. The other two are just particular cases of
> <mailbox>.
I changed it as <mailbox> only.
> > If the non-ASCII address is in <utf8-addr-spec> form, then rewrite
> ^
> (i.e. it contains no <alt-address>)
> > it as "Internationalized Address utf8-addr-spec-encoded
> > Removed:;". "utf8-addr-spec" is encoded to "utf8-addr-spec-
> > encoded" by [RFC2047].
>
> That is exceedingly confusing until you have worked out what it means. What
> you really mean to say is:
>
> rewrite it as a <group> [RFC2822] of the form
>
> Internationalized Address "<encoded-word>" Removed: ;
>
> where the <encoded-word> is the original <utf8-addr-spec> encoded
> according to [RFC2047] (and needs to be within a <quoted-string>).
>
> That <quoted-string> is essential because, for sure, the <utf8-addr-spec>
> will have at least an '@' somewhere inside it.
I changed as your lines. (without '"')
> No, that is not right, becuase if there is both a <display-name> and a
> <non-ASCII> you would then get:
>
> <encoded-display-name> Internationalized Address "<encoded-word>"
> Removed: ;
>
> which might not by a syntactically valid <group> according to RFC2822. Well
> I am not quite sure about that, but in any case it would look better if you
> cuold arrange it as:
>
> Internationalized Address <encoded-display-name> "<encoded-word>"
> Removed: ;
According to RFC2822,
word = atom / quoted-string
phrase = 1*word / obs-phrase
display-name = phrase
group = display-name ":" [mailbox-list / CFWS] ";" [CFWS]
RFC 2047 updates phrase
phrase = 1*( encoded-word / word )
"encoded-word word word encoded-word word:;" is allowed.
And more, according to RFC 2047 section 5,
+ An 'encoded-word' MUST NOT appear within a 'quoted-string'.
So, I removed double quotes which enclose an encoded-word.
> > o Trace header
> ^
> fields
> > Received:
> > If the FOR clause contains non-ASCII addresses, remove the FOR
> ^^^ ^^^
> any that
> > clause in the header. The other part does not contain non-ASCII
> > values.
> > o MIME Content header
> ^
> fields
Adopt them
> > Content-Type:
> > Content-Disposition:
>
> But again, this applies to ANY header that contains <parameter>s as defined
> in RFC2045. For example the Auto-Submitted header in [RFC3834] and the
> Injection-Info header in draft-ietf-usefor-usefor-11 (already approved as a
> proposed standard and now in the rfc-editor's queue). Both of those
> documents mention [RFC2231] explicitly, so downgrading those headers would
> indeed yield something already valid on the current network.
> > Encode the header by [RFC2231] with charset='UTF-8'.
>
> Again, RFC2231 does not encode headers; it encodes <parameter>s, which may
> be
> found in headers.
> > o Unstructured text headers and structured text headers
> > Subject:
> > Comments:
> > Keywords:
> > Content-Description:
> > Encode the header by [RFC2047] with charset='UTF-8'.
>
> And there is it the <unstructured> in the header that gets encoded (or a
> <phrase> in the case of Keywords).
I changed the title as 'Non-ASCII in <unstructured> or <phrase>'
> > o URI headers
> ^
> fields
>
>
> > o Other target headers
> > All other headers which contains non-ASCII characters are
> > preserved in Downgraded: header and removed.
>
> Again, what you really mean is:
>
> All other header fields which contains non-ASCII characters outside
> of <unstructured>s, <comment>s and <phrases>, and for which no rule
> is given above, are preserved in a Downgraded: header field and then
> removed.
adopt this and will change the Downgraded: header field as "Downgraded-*:".
> > o ASCII only headers
> ^
> fields
>
>
> > 6. MIME body part headers downgrading
> ^
> fields
>
>
> > Content-ID: .......
> > Content-Type: ......
> > Content-Disposition: .........
> > Content-Description: .........
>
> But again, the downgrading of these is exactly the same as downgrading the
> same headers at the top level, which you have already explained. Moreover,
> there might be further such headers allowed in future which would come to
> no harm if downgraded using 2047 or 2231. I agree that creating a
> Downgraded: header in a MIME body part header might not be such a good idea
> (though I doubt it wold break anything in practice) so you might forbid
> that. There is no current situation where that might be needed, though.
I agree.
I will consider how to write.
> Here, however, you need to specify how to downgrade a message/utf8smtp,
> since there is a promise in section 4.6 of
> draft-ietf-eai-utf8headers-06.txt
> that such a downgrading (to message/rfc822) would be defined here.
>
> Presumably this would involve the usual recursive descent through the
> message/utf8smtp, downgrading individual headers as described above, and
> applying Content-Transfer-Encodings to bodies, as needed.
>
> And, having done that, you could also say that downgraders MAY do the same
> thing to message/rfc822. Yes, I know we have forbidden these to contain any
> utf8smtp headers, but such "leaks" are surely going to happen, so being
> "liberal" here might undo some such blunders.
This comment is not agreed in WG.
In my opinion, a rfc822 message which contains message/utf8smtpMIMEtype
part confronts 7bit transport, it may be encoded to BASE64
and its MIME headers will be
Content-Type: message/utf8smtpMIMEtype; charset="UTF-8"
Content-Transfer-Encoding: base64
This rfc822 message is deliverable via 7bit transport.
> > 7. Security considerations
> > o It is likely that the techniques suggested here will invalidate
> > methods that depend on signatures over headers or the envelope.
> > "Issues" does talk about that, but, because this document strongly
> > implies that one can downgrade and then upgrade again with no risk
> > of loss of information, the topic should be explored further.
>
> But this document "implies" no such thing. Moreover, RFC2047 encoding will
> surely change the folding, and simply undoing every RFC2047 will not solve
> the problem because such encoding might have already been present in the
> original version, as signed before downgrading. The only way out of this
> dilemma is some pretty aggressive canonicalization in the signature
> algorithms. Tne recent DKIM standard goes some way towards such
> canonicalization, but it is nowhere near aggressive enough.
>
> Agreed it needs further exploration, so all we can do here is to identify
> the pitfalls.
I will add some text about DKIM in Security considerations.
> > Appendix A. Displaying downgraded message
> >
> I presume this appendix is intended to replace the former discussion of
> "upgrading". I have no problem with that.
>
> > A.1. Displaying technique 1
> > MUA can remove 'Downgraded:' from decoded 'Downgraded:' header
> > fields. With this technique, The address header fields may be
> > displayed twice, one is ASCII-only downgraded header field and the
> > other is from decoded Downgraded: header.
>
> Ugh! I think I prefer the next method for normal use.
> >A.2. Displaying technique 2
> > + Remove the header field which is the same with the generated
> > ASCII only header from the header fields. If the headers
> > contain [RFC2047] encoded part, decode it before comparison.
>
> But that last sentence will not always work because, sometimes, the
> [RFC2047] encoded part might have been present before downgrading. And, in
> any case, you have to unfold before doing the comparison.
It is a difficult problem. RFC 2047 encoding does not preserve a space
between words. it needs further consideration.
> >Appendix B. Examples
> >B.1. Downgrading example 1
> > Result of the header downgrading.
> > Return-Path: <ASCII-FROM>
>
> It is customary to insert the Return-Path: at the _end_ of the headers.
Some MTA insert the Return-Path: at the top of the headers.
> > Envelope-Downgraded: From: <RFC2047(NON-ASCII-FROM)> <ASCII-FROM>
> > Envelope-Downgraded: To: <RFC2047(NON-ASCII-TO)> <ASCII-TO>
> > Message-Id: MESSAGE_ID
> > Mime-Version: 1.0
> > Content-Type: text/plain; charset="UTF-8"
> > Content-Transfer-Encoding: 8bit
> > Subject: RFC2047(UTF-8_SUBJECT)
> > Downgraded: From: RFC2047(<NON-ASCII-FROM <ASCII-FROM>>)
> > From: <ASCII-FROM>
> > Downgraded: To: RFC2047(<NON-ASCII-TO <ASCII-TO>>)
> > To: <ASCII-TO>
> > Downgraded: CC: RFC2047(<NON-ASCII-CC>)
> > CC: Internationalized address RFC2047(NON-ASCII-CC) removed:;
>
> It would be nice to show an example with a <display-name> in it there.
Ok, I will try to add display-names for each addresses.
> > Date: DATE
> > MAIL_BODY
> > Figure 5: Header downgraded message
>
>
>
> > Figure 13: Header downgraded message 2
> >
> The previous draft had a useful paragraph here about a MIME encapsulated
> subject header. Why has it been removed?
Is the paragraph this?
| And more, the body part contains UTF-8 message. "ascii user" needs
| to accept UTF-8 mail body and UTF-8 subject which is MIME encoded.
--
Kazunori Fujiwara, JPRS
_______________________________________________
IMA mailing list
IMA at ietf.org
https://www1.ietf.org/mailman/listinfo/ima
Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.