First strawman for UTF-8 headers proposal

Paul Hoffman / IMC <[email protected]> Wed, 26 Nov 2003 10:57:57 -0800
Newsgroups gmane.ietf.imaa
Message-ID <p06010231bbeaa5bf1398@[63.202.92.152]>
Greetings again. At the Minneapolis meeting, I proposed that if 
people were interested in John's proposal to encode the addresses in 
a message as UTF-8, they might be interested in making all the 
headers UTF-8. (The proposal was initially sparked by Pete Resnick.) 
Following the thread from the past few weeks, I have come up with the 
following strawman. If no one finds any huge problems with this, I'll 
turn it into an Internet Draft in a few weeks.

All comments welcome!

--Paul Hoffman



- The dual motivations are to allow UTF-8 everywhere in the headers and
to not bounce any messages just because they originated with UTF-8
headers.

- Allows current users who have all-ASCII mailbox names to step up
to UTF-8 headers easily.

- Updated sending MUAs will create all headers in UTF-8.

- Transmission is protected by a new ESMTP command, UTF-8-HEADERS.

- Everyone who has a UTF-8 mailbox name MUST also have an all-ASCII
mailbox name that is equivalent.

- The terminal SMTP server is responsible for knowing whether or not the
message store can handle UTF-8 headers.

- If a receiving SMTP server does not support UTF-8-HEADERS, the sending
SMTP client downgrades all headers and continues to send the message.

- Free text fields are downgraded using quoted-printable encoding;
SHOULD be into UTF-8 charset. Downgrading MUST only be done if
necessary.

- Downgrading email addresses that only contain UTF-8 in the domain name
is done with IDNA.

- For every address in a message with a UTF-8 mailbox name, the mail
initiator tries to create a mapping in a new header, Address-maps:. A
message only has one Address-map: header; the header has a string of
maps. The header is only for addresses that have an UTF-8 mailbox name;
it SHOULD NOT be used for addresses that have all-ASCII mailbox names,
even if those addresses have UTF-8 domain names.

- If the initiator has a UTF-8 mailbox name, the initiator MUST also
have an all-ASCII mailbox, and the all-ASCII address MUST appear in the
map header.

- If the initiator knows the mapping for any recipient (through caching
or an address book), they SHOULD put it in the map header. If they
don't include a mapping and the message hits a non-UTF-8-HEADERS
SMTP server, the message will bounce.

- The Address-map: header is downgraded using Base64 for mailbox
names, IDNA for domain names.

- Example:
   Address-map: José@example.com,[email protected];
       törbjørn@fältström.se,tb@fältström.se
If passed to a non-UTF-8-HEADERS system, this header gets downgraded
to:
   Address-map: [email protected],[email protected];
       [email protected],[email protected]

- Intermediate SMTP servers MAY change the values in the Address-map:
header (such as to add one that is missing or to correct a mapping), but
SHOULD only do so for local domains. This might be a bad idea and might
be removed.

- Terminal SMTP servers should write messages addressed to either the
UTF-8 address or the all-ASCII address into the same mailbox, but this
is not mandatory.

- POP and IMAP might be updated to allow one request to bring in two or
more mailboxes; otherwise, users will have to do two separate requests.

- Digital certificates for addresses that have UTF-8 LHSs should contain
both addresses; this is already supported in PKIX and OpenPGP.

- Other headers that include mailbox names and domain names will need
further definition for downgrading.

- MUAs are encouraged to cache address mappings they see, probably with
a user-settable time-to-live.

- Terminal SMTP servers MAY look into the headers of a message to
determine whether they should upgrade a downgraded set of headers to
UTF-8. This is easy to determine: if the Address-map: header contains
only ASCII, it was downgraded. Upgrading is particularly useful on
bounce messages caused by bad mappings.

- It might be good to have a protocol for determining mappings, but it
is not defined here.

- It might be better to have just one mapping per Address-map: header
and have multiple Address-map: headers per message.


--Paul Hoffman, Director
--Internet Mail Consortium