Re: if you really want utf-8 headers...
John C Klensin <[email protected]> Thu, 01 Jan 2004 12:40:59 -0500
| Newsgroups | gmane.ietf.imaa |
|---|---|
| Message-ID | <[email protected]> |
Keith (and many others),
I've been sitting out this discussion because I've been trying
to work through the long-term and transition cases and sort them
out in a coherent way. I've also been struck by the degree to
which much of these discussions reflects an apparent lack of
operational experience with the way email works in practice.
So let's take a few steps back:
Anything we do will cause some interoperability problems
--whether impact on transport or software systems or as
perceived by users -- somewhere. "8:" headers will mess
something up, somewhere, because of the issues you and others
have identified (including parsing issues, header consolidation
algorithms, special headers coming through but getting trashed
without warnings to the recipient, and so on), even if the
assumptions that cause the problems aren't justified in the
standards. And users will be furious if they see IMAA/ACE
local-parts, even if the mail goes through, and will also be
furious if mail that they consider to be well-formed bounces.
While RFC 1342 and its successors were a brilliant solution
given the constraints of the network at that time, you've
certainly got enough operational experience, and are a keen
enough observer, to know how much users hate actually seeing
them (and how much abuse Quoted-printable took). Any of these
changes will cause problems, and will make people unhappy --
probably, in the short term, more people will be unhappy than
happy about them.
That is, superficially, a really strong argument for "keep it
all in readable ASCII" and "don't try to see what else can be
squeezed into header formats" positions. With MIME, there was
clearly value-added because we had no specification for how to
handle multimedia or non-ASCII mail bodies. And, in that
context, 1342 was a really nice hack because it solved the
problems for a specific set of fields and subfields that we
could identify as specifically intended for humans, with few
protocol implications.
But the argument won't work for this case, not because it is
irrational or logically wrong, but because there is _immense_
user pressure out there for a fully multilingual Internet, one
in which, as I have said a few times, English is just another
language and ASCII is just another script. That pressure won't
accept, at least in local, homogeneous, environments, an
English/ASCII network with various kludges --which work if all
of the environments are perfectly aligned, but are unworkable or
at least ugly otherwise-- attached for other languages and
scripts.
That leaves us with a different problem, one I think we need to
get very serious about rather than distracting ourselves with
discussions about how we would behave in a better, more ideal,
world. We are going to have UTF-8 headers, and probably EUC and
BIG-8 and KOI and 8859-1 and 8859-5, headers, and many more.
We are also going to have those characters in local-part
addresses. And, in some parts of the world, we already do,
typically justified by "we need them", "they work in our
environment", and other variations of the old "just send 8"
story. They are not going away, if only because (a) the modal
interpersonal email message goes between people who share
languages and scripts and (b) because the obvious proprietary
alternatives to SMTP/822/MIME are Unicode-clean today or shortly
will be.
The question is not whether or not people will have and use
non-ASCII local parts and non-ASCII header fields, nor about
whether or not that is really necessary. The question is how we
will deal with that fact in a way that:
(i) Maximizes global interoperability of the mail
infrastructure, especially when it is actually important
in practice (not just in theory).
(ii) Minimizes damage when things leak out of Unicode or
local CCS environments.
(iii) Avoids driving users and mail systems toward
proprietary environments because they provide a better
experience.
I think those are our goals, or should be. If they are not,
then we should, IMO, be discussing that issue, not solutions.
Now, it seems to me that there are two main possible models for
getting there. And, much as I hate (and have been resisting)
putting alternatives out there, they are probably compatible
(although at some cost):
(1) We accept the conclusion that that the proprietary, local
CCS (which might be Unicode in UTF-8 or some other form),
local-header-definition, systems are out there and are going to
be with us forever. We then view this strictly as a gateway
problem. Given all of our other constraints, that gateway
problem is probably best dealt with by encapsulation, e.g.,
1.1 We insist that gateway systems work in terms of
Unicode and UTF-8, keeping local character sets out of
the public Internet. Note that this condition is _not_
necessary (see below), but it would avoid lots of problems.
1.2 We invent message/rfcNNNN, where "rfcNNNN" basically
says "just like RFC2822, but all header fields are
defined as being in UTF-8, not ASCII".
1.3 The gateway converts all envelope addresses to IMAA
form and encapsulates the original message using
message/rfcNNNN, so we have a MIME body of...
From: "1342/2047 PersonalName"
<IMAA-local-part@IDNA-domain>
To: "1342/2047 PersonalName2"
<IMAA-local-part2@IDNA-domain2>
Date: RFC2822-date
MIME-Version: 1.0
content-type: message/rfcNNNN
content-type-encoding: <as needed>
<original message, with original headers, in original
form>
I hope we can avoid it, but a charset parameter for
message/rfcNNNN would certainly not be rocket science to
define.
1.4 Clever receiving systems notice "message/rfcNNN" and
unwind the situation in some appropriate way, with no
information loss. And note that the model above is
pure, unextended, MIME and hence causes no Received or
Return-path issues at all. Non-clever receiving systems
are going to make users unhappy.
(2) We really work on a Unicode-clean environment, supported by
transport option negotiation. In that environment, the sender
accepts the notion that i18n communication is going to occur
only with fully internationalized environments (target systems,
intermediate relays, etc., and for addresses, mailbox names,
headers, and so on). If an environment is encountered that is
not fully internationalized, the transport at the boundary is
going to either take on a gateway role and adopt the conversion
above or will bounce the mail (as with 8BITMIME, etc.).
But the second option will permit all of the edge cases for
subaddresses with non-ASCII delimiters, bidi according to strict
Unicode rules, etc., to work in predictable and obvious ways.
And, within environments that would otherwise shift to
proprietary solutions, it would deliver full i18n functionality
while permitting staying with "real" Internet mail, albeit with
upgraded (but backward compatible with existing messages and
addressing) MTAs and MUAs, while the IMAA conversions may still
lose or distort some information (although the original
information would presumably be preserved in the encapsulated
message).
Are either of those two options wonderfully attractive from an
architectural standpoint? Nope. Will we end up with as much
interoperability as we would if everyone in the world could be
persuaded to stay with pure ASCII (or encoded-to-ASCII)
SMTP/MIME? Nope. But that second question isn't relevant in
practice --"they" can't be persuaded-- and we either face
reality or give up the game.
john
p.s. For those who may be surprised or confused, option (1)
above represents a significant change of position for me. I
think it identifies a role for IMAA encoding in transport that
is not long-term unacceptably harmful... and it specifies, as
draft-hoffman-imaa-03.txt does not, what really happens to the
message headers and body to preserve real operational
compatibility, not just squeeze in an addressing variation. I
hope it helps demonstrate that some of us are really trying to
learn from these list messages, not just dig in and repeat the
same arguments over and over again. I know I'm not the only
one, but the combination of repeated arguments and epicycle-like
models from a few people is getting tedious.
--On Thursday, 01 January, 2004 01:34 -0500 Keith Moore
<[email protected]> wrote:
>
> Okay, I still see zero justification for utf-8 headers. The
> improvement in transmission and storage efficiency is
> miniscule. They make both user agents and mail transports more
> complex and less reliable, because MTAs need to have
> conversion code (which will break messages and cause delivery
> failures) and UAs need to be able to handle old messages that
> use RFC 2047 (resulting in multiple code paths and additional
> failure modes).
>...