Date de publication du RFC : Février 2012
Auteur(s) du RFC : C. Newman (Sun Microsystems), A. Melnikov (Isode)
Chemin des normes
Réalisé dans le cadre du groupe de travail IETF eai
Première rédaction de cet article le 18 février 2012
Dans l'ensemble des RFC sur l'internationalisation des adresses de courrier électronique, ce document traite le cas des accusés de réception (MDN, pour Message Disposition Notification) et avis de non-remise (DSN pour Delivery Status Notification).
Puisque les RFC 6531 et RFC 6532 permettent désormais d'utiliser des adresses de courrier électroniques internationalisées, c'est-à-dire utilisant tout le jeu de caractères Unicode, il faut prévoir le cas où les courriers provoquent l'envoi d'avis de remise ou de non-remise (DSN pour Delivery Status Notification, RFC 3461 et RFC 3464) et d'accusés de réception (MDN, pour Message Disposition Notification, RFC 8098). C'est l'objet de ce RFC, qui met à jour les anciens documents qui limitaient ces accusés et avis au jeu ASCII. Il fait suite au RFC 5337, qui n'était qu'expérimental. Désormais, les adresses de courrier en Unicode font partie des normes de l'Internet.
Le format des DSN dans le RFC 3464 parle de « types
d'adresse ». Les adresses en UTF-8 du RFC 6532 sont un nouveau type d'adresses. Si le
serveur SMTP accepte l'extension SMTPUTF8 du RFC 6531 et l'extension DSN du RFC 3461, il doit
permettre d'utiliser ce type dans le paramètre ORCPT
(Original Recipient, section 4.2 du RFC 3461). Si le
serveur n'accepte pas SMTPUTF8, l'adresse à utiliser dans les DSN doit
être encodée en 7bits, selon les règles exposées dans cette section 3. Par
exemple, stéphane@bortzmeyer.org
peut s'écrire
st\x{E9}phane@bortzmeyer.org
. (La
section 3 détaille plus complètement le traitement des adresses UTF-8,
et notamment les différentes formes qu'elles peuvent prendre, et les
encodages de certains caractères, comme l'espace ou la barre oblique
inverse, normalisé par le RFC 3461.)
Une fois réglé le problème de la représentation des adresses, la
section 4 traite les DSN en UTF-8. Les DSN traditionnels étaient
composés d'un objet MIME de type
multipart/report
(RFC 6522) comportant trois objets
décrivant le problème (un objet conçu pour être lu par un humain, un
message/delivery-status
et le message originel,
message/rfc822
). Pour le courrier
internationalisé, de nouveaux types ont été créés :
message/global-delivery-status
qui,
contrairement à son prédécesseur
message/delivery-status
, accepte l'UTF-8 et
permet donc de placer directement les adresses UTF-8, sans encodage en
ASCII. En
outre, il dispose d'un nouveau champ,
Localized-Diagnostic, qui permet de stocker des
messages lisibles par un humain. La langue de ces messages est
indiquée par une étiquette de langue (RFC 5646). (Le champ Diagnostic-Code est
désormais en UTF-8, mais dans la langue par défaut du système,
cf. i-default
dans le RFC 2277.)message/global
qui remplace
message/rfc822
(dont le nom, hommage au vieux
RFC 822, était de toute façon dépassé). À noter que le terme global
(mondial) utilisé pour noter ce type avait fait l'objet de vives
discussions et même d'un vote. Cet objet permet de
transporter le message original (si on ne transporte que les en-têtes,
on utilise message/global-headers
).
On peut noter que la norme MIME (RFC 2046) interdisait l'usage de l'option
Content-Transfer-Encoding
pour les objets de type
message/*
mais cette règle a été assouplie par le
RFC 5335.
La section 5 traite des MDN (Message Disposition
Notification, RFC 3798). Ils ne sont pas très
différents des DSN et ont un format très proche, avec un type MIME message/global-disposition-notification
.
La section 6 traite des registres
IANA. Le type « UTF-8 » est ajouté au registre des types d'adresses
(section 6.1), et les nouveaux types MIME qui avaient été créés par
les premiers RFC expérimentaux, comme
message/global
sont ajoutés au registre des types MIME (sections 6.3
à 6.5).
Enfin, la section 7 est dédiée aux questions de sécurité. Il y a les problèmes de sécurité classiques des DSN et des MDN : non authentifiés, ils permettent de faire croire qu'un message a échoué, alors qu'il a bien été délivré, ou le contraire. Et les DSN et MDN reçus sont souvent émis en réponse à des messages faux, qui n'avaient pas été émis par l'utilisateur. D'autre part, le RFC nous prévient que des DSN ou des MDN délibérement incorrects peuvent être envoyés par un attaquant dans l'espoir de profiter d'erreur dans la programmation des analyseurs, par exemple pour déclencher un débordement de tampon. Le risque est plus important s'il y a beaucoup d'encodage, le décodage pouvant faire varier la taille des données.
Quels sont les changements depuis le RFC expérimental, le RFC 5337 ? L'annexe A les résume, les principaux étant la suppression de tout ce qui concernait le mécanisme de repli (downgrade), mécanisme complexe qui avait été normalisé pour gérer les cas où un serveur sur le chemin ne pouvait pas transmettre les adresses en UTF-8. Trop délicat, ce mécanisme a été retiré de la version normalisée de ces adresses.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)