3. Protocole au niveau du transport du courrier
3.1. Cadre de l'extension d'internationalisation
L'extension de service suivante est définie :
-
Le nom de l'extension de service SMTP est "Internationalized Email".
-
La valeur du mot-clé EHLO associée à cette extension est "SMTPUTF8".
-
Aucune valeur de paramètre n'est définie pour cette valeur de mot-clé EHLO. Afin de permettre des extensions futures (bien que non anticipées), la réponse EHLO NE DOIT PAS contenir de paramètres pour ce mot-clé. Le client SMTP compatible SMTPUTF8 DOIT ignorer tous les paramètres s'ils apparaissent pour ce mot-clé ; c'est-à-dire que le client SMTP compatible SMTPUTF8 DOIT se comporter comme si les paramètres n'apparaissaient pas. Si un serveur SMTP inclut SMTPUTF8 dans sa réponse EHLO, il DOIT être entièrement conforme à cette version de cette spécification.
-
Un paramètre OPTIONNEL, SMTPUTF8, est ajouté à la commande MAIL. Le paramètre n'accepte pas de valeur. Si ce paramètre est défini dans la commande MAIL, il indique que le client SMTP est compatible SMTPUTF8. Sa présence affirme également que l'enveloppe comprend l'adresse non ASCII, que le message envoyé est un message internationalisé ou que le message envoyé nécessite la prise en charge de SMTPUTF8.
-
La longueur maximale d'une ligne de commande MAIL est augmentée de 10 caractères pour tenir compte de l'ajout éventuel du paramètre SMTPUTF8.
-
Un paramètre OPTIONNEL, SMTPUTF8, est ajouté aux commandes VERIFY (VRFY) et EXPAND (EXPN). Le paramètre SMTPUTF8 n'accepte pas de valeur. Le paramètre indique que le client SMTP peut accepter des caractères Unicode encodés en UTF-8 dans les réponses aux commandes VRFY et EXPN.
-
Aucun verbe SMTP supplémentaire n'est défini par cette extension.
-
Les serveurs proposant cette extension DOIVENT fournir une prise en charge de l'extension 8BITMIME [RFC6152] et l'annoncer.
-
Le chemin inverse et le chemin direct des commandes SMTP MAIL et RCPT sont étendus pour permettre aux caractères Unicode encodés en UTF-8 de figurer dans les noms de boîtes aux lettres (adresses).
-
Le corps du message électronique est étendu comme spécifié dans le RFC 6532 [RFC6532].
-
L'extension SMTPUTF8 est valide sur le port de soumission [RFC6409]. Elle peut également être utilisée avec le protocole de transfert de courrier local (LMTP) [RFC2033]. Lorsque ces protocoles sont utilisés, leur utilisation doit être reflétée dans les mots-clés WITH du champ de trace, le cas échéant [RFC3848].
3.2. L'extension SMTPUTF8
Un serveur SMTP qui annonce l'extension SMTPUTF8 DOIT être prêt à accepter une chaîne UTF-8 [RFC3629] dans n'importe quelle position dans laquelle le RFC 5321 spécifie qu'une <mailbox> peut apparaître. Bien que les caractères de la <local-part> puissent contenir des caractères non ASCII, l'analyse réelle de la <local-part> et les délimiteurs utilisés restent inchangés par rapport à la spécification de base du courrier électronique [RFC5321]. Tout nom de domaine devant être recherché dans le DNS DOIT être conforme et traité comme spécifié pour l'internationalisation des noms de domaine dans les applications (IDNA) [RFC5890]. Lors des recherches, le client ou le serveur SMTP compatible SMTPUTF8 DOIT soit utiliser une bibliothèque DNS compatible Unicode, soit transformer le nom de domaine internationalisé en forme A-label (c'est-à-dire un nom de domaine complet contenant un ou plusieurs A-labels mais aucun U-label) comme spécifié dans le RFC 5890 [RFC5890].
Un client SMTP qui reçoit le mot-clé d'extension SMTPUTF8 en réponse à la commande EHLO PEUT transmettre des noms de boîtes aux lettres dans les commandes SMTP sous forme de chaînes internationalisées en UTF-8. Il PEUT envoyer un en-tête UTF-8 [RFC6532] (qui peut également inclure des noms de boîtes aux lettres en UTF-8). Il PEUT transmettre les parties domaine des noms de boîtes aux lettres dans les commandes SMTP ou l'en-tête du message sous forme de A-labels ou U-labels [RFC5890]. La présence de l'extension SMTPUTF8 ne modifie pas les comportements de relais de serveur décrits dans le RFC 5321.
Si l'extension SMTP SMTPUTF8 n'est pas proposée par le serveur SMTP, le client SMTP compatible SMTPUTF8 NE DOIT PAS transmettre une adresse électronique internationalisée et NE DOIT PAS transmettre un message électronique contenant des en-têtes de courrier internationalisés tels que décrits dans le RFC 6532 [RFC6532] à quelque niveau que ce soit de sa structure MIME [RFC2045]. (Pour ce paragraphe, le nom de domaine internationalisé sous forme de A-label tel que spécifié dans les définitions IDNA [RFC5890] n'est pas considéré comme "internationalisé".) Au lieu de cela, si un client SMTP compatible SMTPUTF8 (expéditeur) tente de transférer un message internationalisé et rencontre un serveur SMTP qui ne prend pas en charge l'extension, la meilleure action à entreprendre dépend d'autres conditions. En particulier :
-
S'il s'agit d'un agent de soumission de messages (MSA) [RFC6409] [RFC5598], il PEUT choisir sa propre façon de traiter ce scénario en utilisant la large discrétion pour modifier les adresses ou autrement corriger et transformer les messages autorisée par le RFC 6409. Tant que le message résultant est conforme aux exigences du RFC 5321 (c'est-à-dire sans l'extension SMTPUTF8), les détails de cette transformation sortent du cadre de ce document.
-
S'il ne s'agit pas d'un MSA ou s'il s'agit d'un MSA et qu'il ne choisit pas de transformer le message en un message ne nécessitant pas l'extension SMTPUTF8, il DEVRAIT rejeter le message. Comme d'habitude, cela peut être fait soit en générant une réponse appropriée pendant la transaction SMTP, soit en acceptant le message puis en générant et transmettant une notification de non-livraison. Si ce dernier choix est fait, le processus de notification DOIT être conforme aux exigences des RFC 5321, RFC 3464 [RFC3464] et RFC 6533 [RFC6533].
-
Comme spécifié dans la section 2.2.3 du RFC 5321, un client SMTP disposant d'informations supplémentaires et/ou connaissant des circonstances particulières PEUT choisir de remettre le message en file d'attente et de réessayer plus tard et/ou d'essayer un autre hôte MX comme spécifié dans cette section.
Ce document s'applique lorsqu'un client ou un serveur SMTP compatible SMTPUTF8 prend en charge l'extension SMTPUTF8. Pour tous les autres cas, et pour les adresses et messages qui ne nécessitent pas d'extension SMTPUTF8, les clients et serveurs SMTP compatibles SMTPUTF8 ne modifient pas le comportement spécifié dans le RFC 5321 [RFC5321].
Si un serveur SMTP compatible SMTPUTF8 annonce l'extension de notification d'état de livraison (DSN) [RFC3461], il DOIT implémenter le RFC 6533 [RFC6533].
3.3. Syntaxe étendue des adresses de boîtes aux lettres
Le RFC 5321, section 4.1.2, définit la syntaxe d'une <Mailbox> entièrement en termes de caractères ASCII. Ce document étend <Mailbox> pour ajouter la prise en charge des caractères non ASCII.
Les principaux changements apportés par cette spécification comprennent :
-
La règle ABNF
<Mailbox>est importée du RFC 5321 et mise à jour afin de prendre en charge l'adresse électronique internationalisée. D'autres règles connexes sont importées des RFC 5321, RFC 5234, RFC 5890 et RFC 6532, ou sont étendues dans ce document. -
La définition de
<sub-domain>est étendue pour permettre à la fois la définition du RFC 5321 et une chaîne UTF-8 dans une étiquette DNS conforme aux définitions IDNA [RFC5890]. -
La définition de
<atext>est étendue pour permettre à la fois la définition du RFC 5321 et une chaîne UTF-8. Cette chaîne NE DOIT contenir aucun des caractères graphiques ou de contrôle ASCII.
Les règles ABNF suivantes importées du RFC 5321, section 4.1.2, sont mises à jour directement ou indirectement par ce document :
<Mailbox><Local-part><Dot-string><Quoted-string><QcontentSMTP><Domain><Atom>
La règle ABNF suivante sera importée directement du RFC 6532, section 3.1 :
<UTF8-non-ascii>
La règle ABNF suivante sera importée directement du RFC 5234, annexe B.1 :
<DQUOTE>
La règle ABNF suivante sera importée directement du RFC 5890, section 2.3.2.1 :
<U-label>
Les règles suivantes sont étendues en ABNF [RFC5234] comme suit.
sub-domain =/ U-label
; extend the definition of sub-domain in RFC 5321, Section 4.1.2
atext =/ UTF8-non-ascii
; extend the implicit definition of atext in
; RFC 5321, Section 4.1.2, which ultimately points to
; the actual definition in RFC 5322, Section 3.2.3
qtextSMTP =/ UTF8-non-ascii
; extend the definition of qtextSMTP in RFC 5321, Section 4.1.2
esmtp-value =/ UTF8-non-ascii
; extend the definition of esmtp-value in RFC 5321, Section 4.1.2
3.4. Utilisation des paramètres de la commande MAIL
Si l'enveloppe ou le message envoyé nécessite les capacités de l'extension SMTPUTF8, le client SMTP compatible SMTPUTF8 DOIT fournir le paramètre SMTPUTF8 avec la commande MAIL. Si ce paramètre est fourni, il NE DOIT PAS accepter de valeur. Si le client SMTP compatible SMTPUTF8 sait que ni l'enveloppe ni le message envoyé ne nécessitent les capacités de l'extension SMTPUTF8, il NE DEVRAIT PAS fournir le paramètre SMTPUTF8 avec la commande MAIL.
Comme il n'y a aucune garantie qu'un serveur SMTP de saut suivant prendra en charge l'extension SMTPUTF8, l'utilisation de l'extension SMTPUTF8 comporte toujours un risque d'échec de transmission. En fait, au cours des premières étapes du déploiement de l'extension SMTPUTF8, le risque sera assez élevé. Par conséquent, il y a un avantage distinct à court terme pour que les messages uniquement ASCII soient envoyés sans utiliser cette extension. L'avantage à long terme de la conversion des caractères ASCII [ASCII] (0x7f et moins) en format UTF-8 est qu'elle permet des environnements purement Unicode.
3.5. Adresses non ASCII et codes de réponse
Un client SMTP compatible SMTPUTF8 NE DOIT PAS envoyer de message internationalisé à un serveur SMTP qui ne prend pas en charge SMTPUTF8. Si le serveur SMTP ne prend pas en charge cette option, le client SMTP compatible SMTPUTF8 a trois choix conformément à la section 3.2 de cette spécification.
Les codes de réponse à trois chiffres utilisés dans cette section sont basés sur leurs significations telles que définies dans le RFC 5321.
Lorsque les messages sont rejetés parce que la commande RCPT nécessite une adresse ASCII, le code de réponse 553 est renvoyé avec la signification "nom de boîte aux lettres non autorisé". Lorsque les messages sont rejetés parce que la commande MAIL nécessite une adresse ASCII, le code de réponse 550 est renvoyé avec la signification "boîte aux lettres indisponible". Lorsque le serveur SMTP compatible SMTPUTF8 prend en charge les codes d'état améliorés du système de messagerie [RFC3463], le code de réponse "X.6.7" [RFC5248] (voir section 4) est utilisé, signifiant "Adresses non ASCII non autorisées pour cet expéditeur/destinataire".
Lorsque les messages sont rejetés pour d'autres raisons, le serveur suit le modèle de la spécification de base du courrier électronique dans le RFC 5321 ; cette extension ne modifie pas ces circonstances ni les messages de réponse.
Si un message est rejeté après le "." final de la commande DATA parce qu'un ou plusieurs destinataires ne peuvent pas accepter et traiter un message avec des en-têtes de courrier électronique internationalisés, le code de réponse "554" est utilisé avec la signification "Transaction échouée". Si le serveur SMTP compatible SMTPUTF8 prend en charge les codes d'état améliorés du système de messagerie [RFC3463], le code de réponse "X.6.9" [RFC5248] (voir section 4) est utilisé pour indiquer cette condition, signifiant "Le message d'en-tête UTF-8 ne peut pas être transmis à un ou plusieurs destinataires, le message doit donc être rejeté".
Les serveurs SMTP compatibles SMTPUTF8 sont encouragés à détecter que les destinataires ne peuvent pas accepter les messages internationalisés et à générer une erreur après la commande RCPT plutôt que d'attendre après la commande DATA pour émettre une erreur.
3.6. Parties de corps et extensions SMTP
Le paramètre de commande MAIL SMTPUTF8 affirme qu'un message est un message internationalisé ou que le message envoyé nécessite la prise en charge de SMTPUTF8. Il est toujours possible qu'un message envoyé via la commande MAIL avec le paramètre SMTPUTF8 ne soit pas un message internationalisé. Un client ou serveur SMTP compatible SMTPUTF8 qui a besoin de savoir avec précision si un message est internationalisé doit analyser tous les champs d'en-tête de message et les champs d'en-tête MIME [RFC2045] dans le corps du message. Cependant, cette spécification n'exige pas que le client ou le serveur SMTP compatible SMTPUTF8 inspecte le message.
Bien que cette spécification exige que les serveurs SMTP compatibles SMTPUTF8 prennent en charge l'extension 8BITMIME [RFC6152] pour garantir que les serveurs disposent d'une capacité de traitement adéquate pour les données 8 bits, elle n'exige pas de parties de corps non ASCII dans le message MIME comme spécifié dans le RFC 2045. L'extension SMTPUTF8 PEUT être utilisée comme suit (en supposant que cela soit approprié compte tenu du contenu du corps) :
-
avec le paramètre BODY=8BITMIME [RFC6152], ou
-
avec le paramètre BODY=BINARYMIME, si le serveur SMTP annonce BINARYMIME [RFC3030].
3.7. Modifications et clarifications ESMTP supplémentaires
Les informations transportées dans le processus de transport de courrier impliquent des adresses ("boîtes aux lettres") et des noms de domaine dans divers contextes en plus des commandes MAIL et RCPT et de leurs alternatives étendues. En général, la règle est que, lorsque le RFC 5321 spécifie une boîte aux lettres, cette extension SMTP exige que le format UTF-8 soit utilisé pour la chaîne entière. Lorsque le RFC 5321 spécifie un nom de domaine, le nom de domaine internationalisé DEVRAIT être sous forme de U-label si l'extension SMTPUTF8 est prise en charge ; sinon, il DEVRAIT être sous forme de A-label.
Les sous-sections suivantes énumèrent et discutent tous les cas pertinents.
3.7.1. L'échange SMTP initial
Lorsqu'une connexion SMTP est ouverte, le serveur SMTP envoie une réponse de "salutation" composée du code de réponse 220 et de certaines informations. Le client SMTP envoie ensuite la commande EHLO. Étant donné que le client SMTP ne peut pas savoir si le serveur SMTP prend en charge SMTPUTF8 avant d'avoir reçu la réponse à la commande EHLO, le client SMTP compatible SMTPUTF8 NE DOIT envoyer que des domaines ASCII (étiquette LDH ou A-label [RFC5890]) dans la commande EHLO. Si le serveur SMTP compatible SMTPUTF8 fournit des noms de domaine dans la réponse EHLO, ils DOIVENT être sous la forme d'étiquettes LDH ou de A-labels.
3.7.2. Mail eXchangers (MX)
Si plusieurs enregistrements DNS MX sont utilisés pour spécifier plusieurs serveurs pour un domaine (comme décrit dans la section 5 du RFC 5321 [RFC5321]), il est fortement conseillé que tous ou aucun d'entre eux ne prenne en charge l'extension SMTPUTF8. Sinon, des rejets inattendus peuvent se produire lors de pannes temporaires ou permanentes, ce que les utilisateurs pourraient percevoir comme de graves problèmes de fiabilité.
3.7.3. Informations de trace
Les informations de trace <Return-path-line>, <Time-stamp-line> et leurs règles associées sont définies dans la section 4.4 du RFC 5321 [RFC5321]. Ce document met à jour <Mailbox> et <Domain> pour prendre en charge les caractères non ASCII. Lorsque l'extension SMTPUTF8 est utilisée, la clause 'Reverse-path' de la ligne Return-path-line peut inclure un nom de domaine internationalisé qui utilise la forme U-label. De plus, la clause 'Stamp' de la ligne Time-stamp-line peut inclure un nom de domaine internationalisé qui utilise la forme U-label.
Si les messages qui incluent des champs de trace sont envoyés par un client ou un serveur relais SMTP compatible SMTPUTF8 sans que le paramètre SMTPUTF8 soit inclus dans les commandes MAIL, les valeurs des champs de trace doivent être conformes au RFC 5321, quelle que soit la capacité du serveur SMTP.
Lorsqu'un serveur SMTP compatible SMTPUTF8 ajoute un champ de trace à un message qui a été ou sera transmis avec le paramètre SMTPUTF8 inclus dans les commandes MAIL, ce serveur DEVRAIT utiliser la forme U-label pour les noms de domaine internationalisés dans le nouveau champ de trace.
La valeur de protocole de la clause 'WITH' lorsque cette extension est utilisée est l'une des valeurs SMTPUTF8 spécifiées dans la section "Considérations IANA" de ce document.
3.7.4. Chaînes UTF-8 dans les réponses
3.7.4.1. Commande MAIL
Si un client SMTP suit cette spécification et envoie des commandes MAIL contenant le paramètre SMTPUTF8, le serveur SMTP compatible SMTPUTF8 est autorisé à utiliser des caractères UTF-8 dans l'adresse électronique associée aux codes de réponse 251 et 551, et le client SMTP DOIT être capable de les accepter et de les traiter. Si une commande MAIL donnée n'inclut pas le paramètre SMTPUTF8, le serveur SMTP compatible SMTPUTF8 NE DOIT PAS renvoyer une réponse 251 ou 551 contenant une boîte aux lettres non ASCII. Au lieu de cela, il DOIT transformer ces réponses en réponses 250 ou 550 qui ne contiennent pas d'adresses non ASCII.
3.7.4.2. Commandes VRFY et EXPN et paramètre SMTPUTF8
Si le paramètre SMTPUTF8 est transmis avec les commandes VRFY et EXPN, il indique que le client SMTP peut accepter des chaînes UTF-8 dans les réponses à ces commandes. Le paramètre avec les commandes VRFY et EXPN NE DEVRAIT être utilisé qu'après que le client SMTP a vu la réponse EHLO avec le mot-clé SMTPUTF8. Cela permet à un serveur SMTP compatible SMTPUTF8 d'utiliser des chaînes UTF-8 dans les noms de boîtes aux lettres et les noms complets qui apparaissent dans les réponses, sans craindre que le client SMTP ne soit confus. Un client SMTP conforme à cette spécification DOIT accepter et traiter correctement les réponses aux commandes VRFY et EXPN contenant des chaînes UTF-8. Cependant, un serveur SMTP compatible SMTPUTF8 NE DOIT PAS utiliser de chaînes UTF-8 dans les réponses si le client SMTP n'autorise pas spécifiquement de telles réponses en transmettant ce paramètre avec les commandes VRFY et EXPN.
La plupart des réponses ne nécessitent pas l'inclusion d'un nom de boîte aux lettres dans le texte renvoyé, et par conséquent une chaîne UTF-8 n'est pas nécessaire. Certaines réponses, notamment celles résultant de l'exécution réussie des commandes VRFY et EXPN, incluent la boîte aux lettres.
Les syntaxes des commandes VERIFY (VRFY) et EXPAND (EXPN) sont modifiées comme suit :
vrfy = "VRFY" SP String
[ SP "SMTPUTF8" ] CRLF
; String may include Non-ASCII characters
expn = "EXPN" SP String
[ SP "SMTPUTF8" ] CRLF
; String may include Non-ASCII characters
Le paramètre SMTPUTF8 n'accepte pas de valeur. Si la réponse à une commande VRFY ou EXPN nécessite une chaîne UTF-8, mais que le client SMTP n'a pas utilisé le paramètre SMTPUTF8, alors le serveur SMTP compatible SMTPUTF8 DOIT utiliser soit le code de réponse 252, soit 550. Le code de réponse 252, défini dans le RFC 5321 [RFC5321], signifie "Impossible de vérifier l'utilisateur, mais acceptera le message et tentera la livraison". Le code de réponse 550, également défini dans le RFC 5321 [RFC5321], signifie "Action demandée non effectuée : boîte aux lettres indisponible". Lorsque le serveur SMTP compatible SMTPUTF8 prend en charge les codes d'état améliorés du système de messagerie [RFC3463], le code de réponse amélioré tel que spécifié ci-dessous est utilisé. L'utilisation du paramètre SMTPUTF8 avec une commande VRFY ou EXPN active les réponses UTF-8 pour cette commande uniquement.
Si une réponse normale de succès (c'est-à-dire 250) est renvoyée, la réponse PEUT inclure le nom complet de l'utilisateur et DOIT inclure la boîte aux lettres de l'utilisateur. Elle DOIT être sous l'une des formes suivantes :
User Name <Mailbox>
; Mailbox is defined in Section 3.3 of this document.
; User Name can contain non-ASCII characters.
Mailbox
; Mailbox is defined in Section 3.3 of this document.
Si la réponse SMTP nécessite des chaînes UTF-8, mais qu'une chaîne UTF-8 n'est pas autorisée dans la réponse, et que le serveur SMTP compatible SMTPUTF8 prend en charge les codes d'état améliorés du système de messagerie [RFC3463], le code de réponse amélioré est "X.6.8" [RFC5248] (voir section 4), signifiant "Une réponse contenant une chaîne UTF-8 est requise pour afficher le nom de la boîte aux lettres, mais cette forme de réponse n'est pas autorisée par le client SMTP".
Si le client SMTP ne prend pas en charge l'extension SMTPUTF8, mais reçoit une chaîne UTF-8 dans une réponse, il peut ne pas être en mesure de signaler correctement la réponse à l'utilisateur, et certains clients pourraient mal gérer cette réponse. Les messages internationalisés dans les réponses ne sont autorisés dans les commandes que dans les situations décrites ci-dessus.
Bien que les chaînes UTF-8 soient nécessaires pour représenter les adresses électroniques dans les réponses selon les règles spécifiées dans cette section, cette extension ne permet pas l'utilisation de chaînes UTF-8 à d'autres fins. Les serveurs SMTP compatibles SMTPUTF8 NE DOIVENT PAS inclure de caractères non ASCII dans les réponses, sauf dans les cas limités spécifiquement autorisés dans cette section.