[Top] [All Lists]

Objection to Last Call - draft-ietf-eai-utf8headers-09.txt

2008-03-18 17:01:44
This is a formal objection to the Last Call of
     draft-ietf-eai-utf8headers-09.txt [EAI-utf8header].
Insofar as fixing the problem I shall describe would have repercussions in
     draft-ietf-eai-smtpext-11.txt [EAI-SMTP-extension] and in
     draft-ietf-eai-dsn-06.txt [EAI-dsn]
(especially the latter), it should be construed as a formal objection to
those as well.

Essentially, my concern is that a new MIME subtype message/global is
defined, and that this new message subtype is in breach of RFC2045, which
currently has the status of Draft Standard.

Introduction and Terminology

[EAI-utf8header] describes, for Experimental use, a new class of Internet
Email Messages, which we may term "Global Messages" which it is hoped will,
in the long term, become a replacement for the messages defined in RFC2822
(plus the MIME standards RFC 204[56]), and which we may term "Current

Global Messages are a superset of Current Messages, defined by adding extra
features (notably the use of UTF-8 within headers) by way of extensions to
RFC 2822 and RFC204[56], plus associated extensions to RFC2821 in
[EAI-SMTP-extension]. They are intended to be created, transported and read
by suitably augmented MTAs and MUAs which will advertise the capability
"UTF8SMTP". Whenever a Global Message is offered to an agent which does not
support UTF8SMTP, it MUST either be rejected, or alternatively "downgraded"
to become a valid Current Message capable of being transported over the
"Curent Network" of installed MTAs (possibly being upgraded after final

I have no problem with defining extensions to RFC 2822 and even to
RFC204[56] (e.g. to permit UTF-8 in places where those current documents do
not allow it). However, this proposal goes beyond that by introducing
objects that are intended to be transported over the Current Network in a
manner at variance with RFC2045.


[EAI-utf8header] states, in Section 1.2:

   This document updates section 6.4 of RFC 2045.  It removes the
   blanket ban on applying a content-transfer-encoding to all subtypes
   of message/, and instead specifies that a composite subtype MAY
   specify whether or not a content-transfer-encoding can be used for
   that subtype, with "cannot be used" as the default.
   This document also updates [RFC2822] and MIME, and the fact that an
   experimental specification updates a standards-track spec means that
   people who participate in the experiment have to consider those
   standards updated.

   Allowing of use a content-transfer-encoding on subtypes of messages
   is not limited to transmissions, which are authorized by the SMTP
   extension specified in [EAI-SMTP-extension].  Message/global permits
   use of a content-transfer-encoding.

The third paragraph of that explicitly seeks to permit the extension
specified in the first paragraph to be used in messages handled by agents
which do not support UTF8SMTP as defined in [EAI-SMTP-extension].

More specifically, Section 4.6 describes the new MIME subtype message/global
which is intended to encapsulate Global Messages in the same way that
message/rfc822 is intended to encapsulate Current Messages. The Template for
this new MIME subtype includes the words:

   Encoding considerations:  Any content-transfer-encoding is permitted.
      The 8-bit or binary content-transfer-encodings are recommended
      where permitted.

And furthermore it is claimed that, even without downgrading, this new MIME
subtype will interoperate with the installed base:

   Interoperability considerations:  The media type provides
      functionality similar to the message/rfc822 content type for email
      messages with international email headers.  When there is a need
      to embed or return such content in another message, there is
      generally an option to use this media type and leave the content
      unchanged or downconvert the content to message/rfc822.  Both of
      these choices will interoperate with the installed base, but with
      different properties.  Systems unaware of international headers
      will typically treat a message/global body part as an unknown
      attachment, while they will understand the structure of a message/
      rfc822.  However, systems which understand message/global will
      provide functionality superior to the result of a down-conversion
      to message/rfc822.  The most interoperable choice depends on the
      deployed software.

Now message/global needs to be able to pass unscathed through a chain of
agents such as the following:

        A                   B                   C                   D
   Global MTA    ----> Current MTA ---->   Current MTA  ---->  Current MUA
    supporting          supporting         not supporting 
   both UTF8SMTP         8BITMIME            8BITMIME
   and 8BITMIME

and [EAI-utf8header] proposes to allow A to pass a message/global to B
as-is, in the expectation that B will then apply a Content-Transfer-Encoding
such as Quoted-Printable or Base64 before passing it to C, which would then
be decoded by D.

The problem

However, RFC2045, with which B and C as part of the "installed base" are
supposed to comply, contains the following (Section 6.4):

   Certain Content-Transfer-Encoding values may only be used on certain
   media types.  In particular, it is EXPRESSLY FORBIDDEN to use any
   encodings other than "7bit", "8bit", or "binary" with any composite
   media type, i.e. one that recursively includes other Content-Type
   fields.  Currently the only composite media types are "multipart" and
   "message".  All encodings that are desired for bodies of type
   multipart or message must be done at the innermost level, by encoding
   the actual body that needs to be encoded.

The Encoding Consideration quoted above, which allows B to apply that
Encoding, is therefore in direct violation of that "EXPRESSLY FORBIDDEN".

Now I might well agree that that restriction is unfortunate and misguided,
and even that it ought to be changed. But RFC2045 is a Draft Standard, and
it is entirely outside the remit of the EAI WG to attempt to change what is
in a Draft Standard.

Section 5.2.4 of RFC2046 (which is also a Draft Standard) contains the

   MIME implementations must in general treat unrecognized subtypes of
   "message" as being equivalent to "application/octet-stream".

   Future subtypes of "message" intended for use with email should be
   restricted to "7bit" encoding. A type other than "message" should be
   used if restriction to "7bit" is not possible.

and on that basis it is argued in [EAI-utf8header] (4.6) that existing
software such as B or C would therefore treat the unrecognized message
global as an "application/octet-stream" and therefore generate (C) or accept
(D) Quoted-Printable or Base64 accordingly. However, the second paragraph
quoted above makes it clear that the encoding of any future message subtype
should be "7bit", thus supporting that "EXPRESSLY FORBIDDEN". Moreover,
RFC2046 Section 4.5.1 discourages any further processing of an

   The recommended action for an implementation that receives an
   "application/octet-stream" entity is to simply offer to put the data
   in a file, with any Content-Transfer-Encoding undone, or perhaps to
   use it as input to a user-specified process.

Furthermore, if the interpretation of RFC2046 Section 5.2.4 suggested in
[EAI-utf8header] is correct, it follows that RFC2046 is inconsistent with
RFC2045. Inconsistency between two Draft Standards is a serious matter, but
one which is to be resolved by the IESG rather than by an individual WG
such as EAI.

Consequences for the Installed Base

Now I might have been persuaded that this violation of existing standards
should be allowed to pass if it were the case that the "installed base" had
already taken that particular interpretation and was already setup, when
asked to pass an unknown message subtype to an agent which did not advertise
8BITMIME, to encode it in the manner that would have been appropriate for an
application/octet-stream. But such is patently not the case.

It has been established, for example, that none of Sendmail, Exim or Qmail
take that approach, and between them these three account for a very
substantial part of the installed base. Sendmail, in particular, takes great
pains to follow the current standards as written. I asked repeatedly on the
WG for examples of current implementations that would behave in the manner
expected, but was told of only one (M-Switch, by Isode, which is used by
only a fraction of current sites), and it was not even certain whether even
that one would do so.

It can only be concluded, therefore, that the current installed base is
unsuited to handle the new message/global in the manner envisaged.

What to do about it?

My proposed solution to the problem would be to declare an extension
allowing Global Messages to be encapsulated within the present
message/rfc822 subtype , but only when passed between agents supporting these
extensions, and for it to be downgraded to an unextended message/rfc822
before passing into the Current Network. This would require a recursive
downgrading of all the Global objects within it, but current agents already
do something similar (or are supposed to do so) when passing messages to
non-8BITMIME systems, and so they already contain the necessary basic
framework for that purpose.

It should be noted that [EAI-dsn] requires this problem to be adequately
solved, since DSNs regularly include the full message which is the subject
of the Notification, and even when this is a Global Message the DSN may
still need to pass through (perhaps several) Current MTAs. [EAI-dsn]
currently proposes to use the new message/global for this purpose, but this
simply will not work for the reasons given.

Charles H. Lindsey ---------At Home, doing my own thing------------------------
Tel: +44 161 436 6131 Fax: +44 161 436 6133   Web:
Email: chl(_at_)clerew(_dot_)man(_dot_)ac(_dot_)uk      Snail: 5 Clerewood Ave, 
PGP: 2C15F1A9      Fingerprint: 73 6D C2 51 93 A0 01 E7 65 E8 64 7E 14 A4 AB A5
IETF mailing list