UUCP, etc., and SMTP/822/MIME mail (was: Re: I-D ACTION:draft-hoffman-utf8headers-00.txt)
John C Klensin <[email protected]> Thu, 01 Jan 2004 13:05:02 -0500
| Newsgroups | gmane.ietf.imaa |
|---|---|
| Message-ID | <[email protected]> |
--On Thursday, 01 January, 2004 09:04 -0500 Keith Moore <[email protected]> wrote: > On Jan 1, 2004, at 6:17 AM, Charles Lindsey wrote: > >> I don't think you would need to downgrade for UUCP, because >> it is already 8-bit clean. But my point was that a message >> might happily wander around within one protocol (UUCP or >> NNTP) without anybody needing to care about the encoding or >> to check for "UTF-8-HEADERS". Then suddenly it arrives at a >> gateway into something else (e.g. SMTP or an IMAP store) >> where the distinction really matters. > > the possibility exists that the gateway isn't aware of the > utf-8 extension, so it injects messages with utf-8 headers and > addresses into the legacy mail system without doing a > conversion. Or, worse, that it "downgrades" the UTF-8 by zeroing out all of the high bits. For anyone who doesn't know (I know Keith does), we have seen both behaviors many times. And what this really says is that, if UUCP-based mail is now defined as "8-bit clean", it is a requirement of a gateway that conforms to RFC 2821 that it detect the presence of 8bit characters and do something intelligent. Now that requirement exists today, and existed long before this particular discussion and mailing list got started. If a UUCP-based mail message that contains 8bit information in the body gets to a gateway into an [E]SMTP environment, it must (sorry, MUST) tag that information appropriately with MIME headers and must either generate an 8BITMIME negotiation or convert the relevant body parts with some appropriate content-transfer-encoding. Similarly, if there are eight bit fields in the headers, they had better be fields that can be tagged and converted according to RFC 2047, and the gateway must perform those actions. If elements of the headers, such as address fields or elements that are not known to the gateway and defined as "text" or "word", cannot be converted, then the gateway must decide between some form of encapsulation and dropping the field -- as RFC 2047 puts it (end of section 1): It specifically DOES NOT define any translation between "8-bit headers" and pure ASCII headers, nor is any such translation assumed to be possible. >> Yes, Email carrries more weight within IETF, and if that >> means this can be brought straight to standards track, then >> I would be delighted. > > I think it's exactly the opposite. email is viewed as an > essential service; usenet isn't. also, many people feel that > usenet is already a hopeless mess and they haven't quite > gotten to feeling that way about email (though there is a > trend in this direction). so there is considerable reluctance > to making disruptive changes to email, whereas with usenet, > the attitude is more likely to be "who cares?" or "why are > you bothering to upgrade usenet anyway?" I would have said, instead,... The Internet's email standards have been designed to be as accommodating to the requirements of other environments that might generate mail that will be injected into the Internet as reasonably possible. However, the responsibility for ensuring that mail that is injected into the SMTP environment really conforms to that environment's rules rests, of necessity, with the gateways that do the conversion and injection. And that is true whether the "other" system is a "hopeless mess" or the most wonderfully-designed environment around. >> Yes, our standard will say that the code used in headers MUST >> be UTF-8, and other codes MUST NOT be used. That, sadly, is >> not sufficient to prevent it from happening. Which is why I >> suggest that our Foobar header should contain a possible >> handle to indicate other usages, though clearly that handle >> "MUST NOT be used". > > at the time we were working on what became RFC 1342 we > realized that a single header field to tag the charset used > throughout the header would not be sufficient, because > different parts of the header are generated by different > agents on different machines. one of the reasons for 1342 > was to be able to encode such things in ASCII, but another > reason was to be able to tag each bit of human-readable text > with a separate charset. what we might be finding out is that > it's not reasonable to expect everyone to use utf-8, and that > we're going to continue to need to deal with multiple charsets > (though perhaps fewer than are in use now) perhaps including > different charsets in different parts of the message header. Keith, while I agreed with (and strongly supported) that reasoning at the time, in the ensuing eleven or so years Unicode (and maybe UTF-8) have achieved sufficient adoption that it might now be reasonable to say "systems injecting non-ASCII characters into header fields or equivalent contexts are required to take responsibility for converting to UTF-8"... rather than tagging everything with what it started out being and then hoping that the receiving system can sort things out. As you are aware, MIME has gotten a bad reputation in some quarters as a mechanism for well-documented incompatibility rather than assuring interoperability. Or, as I and others keep saying in other contexts: fewer options, and fewer profiles, lead to better interoperability. More options tend in the other direction. If we are going to something new here, it may be an appropriate time to draw the line, at least to the extent of "all headers in the same character set for a given message" and, ideally, to "all headers in _one_ character set". john