Next: Lecture déportée
Up: MIME
Previous: Codage
  Contents
  Index
Intégration de MIME
Dans un monde parfait, envoyer un message MIME (contenant des accents
par exemple) est simple : l'accent reste tel qu'il est, l'UA place
dans le paramètre charset= le jeu de caractères normalisé (iso-8859-1 par exemple), le
champ Content-Transfer-Encoding précise qu'il est codé en 8bit, et... « roulez jeunesse ! » : l'accent est transmis via ESMTP
avec l'extension 8BITMIME et il arrive dans la boîte aux lettres
du destinataire inchangé.
Malheureusement, le monde n'est pas parfait et des implémentations de
SMTP peuvent barrer le chemin au huitième bit, faisant ainsi perdre
au message toute sa signification.
Concrètement, comment intégrer MIME dans la configuration actuelle de
la messagerie électronique sur l'Internet ? Pour répondre à cette
question, il faut tenir compte de deux facteurs :
- l'implémentation par le MTA du protocole ESMTP et de
l'extension 8BITMIME (que nous appellerons dorénavant
ESMTP8) ou non ;
- le fait que MIME repose à la fois sur l'UA et sur le
MTA. Par exemple, l'UA est responsable du typage des messages,
mais également du codage initial. De plus, il est préférable
(mais pas indispensable) que l'UA connaisse les capacités du MTA
utilisé (c'est-à-dire s'il sait recoder des messages au vol ou
non) ;
Figure 1.2:
Migration vers MIME
|
La RFC 1428 précise les conditions de la migration. Celles-ci sont
simplifiées et résumées dans le schéma de la figure 1.2,
dans laquelle apparaissent quatre scénarios.
- Premier scénario :
l'utilisateur envoie un message contenant un accent (é).
L'UA, sachant que le MTA est ESMTP8, lui fait confiance et
ajoute seulement le champ Content-Transfer-Encoding avec
le codage 8bit (représenté sur la figure par
«
C:8bit
»). Le MTA (client ESMTP8) dialogue avec le MTA
distant (serveur ESMTP8), s'aperçoit qu'il comprend
ESMTP8, et lui envoie donc le message sans modification. Le
MTA distant dépose alors le message dans la boîte aux lettres du
destinataire, sans modification.
- Deuxième scénario :
cette fois-ci, le MTA distant ne comprend pas ESMTP8 (soit
parce qu'il ne comprend que SMTP, soit parce qu'il comprend
ESMTP, mais pas son extension 8BITMIME). Notre MTA local
(toujours client ESMTP8 sur la figure) ne peut donc pas
lui faire confiance, ne sachant pas s'il va tronquer le huitième
bit (SMTP) ou sachant justement qu'il va tronquer le huitième
bit (ESMTP sans 8BITMIME). Le MTA recode donc le
message en quoted-printable (représenté par C:QP sur
la figure) et l'accent est donc transformé en =E9. Le MTA
distant véhicule ensuite cette information inchangée jusque dans
la boîte aux lettres du destinataire.
- Troisième et quatrième scénarios :
maintenant, l'UA sait que le MTA local (client SMTP sur la
figure) n'implémente pas ESMTP8 et ne sait pas recoder les
messages au vol. Il ne peut donc pas lui faire confiance (car
il ne sait pas si ce MTA ou un autre sur le chemin va tronquer
le huitième bit) et doit directement coder l'accent en quoted-printable pour donner =E9. Le MTA transporte
ensuite naïvement le message sans le changer, que le MTA distant
soit ESMTP8 ou non.
À l'heure actuelle, la situation est la suivante :
- les versions de sendmailà partir de la version 8.7
gèrent correctement l'extension 8BITMIME de ESMTP et savent
recoder les messages au vol ;
- les versions de sendmailà partir de la version 8.8
peuvent éventuellement transformer des corps codés en quoted-printable ou base64 en corps 8bit, ce qui
est intéressant pour les vieux UA qui n'ont pas été adaptés à
MIME ;
- bon nombre d'UA récents intègrent le support de MIME (même
si leur qualité n'est pas toujours au rendez-vous), mais il
reste encore des UA non actualisés, comme le bon vieil
utilitaire mail par exemple).
Dans ce contexte, quelle démarche adopter ?
Il est clair que la solution « légale » consiste à envoyer les
messages en 8bits et laisser sendmailtransformer
éventuellement en Quoted-Printable ou en Base64 (c'est
l'option retenue par défaut dans le kit). Pour ne pas pénaliser
les utilisateurs disposant de vieux UA, la remise en forme des
accents par sendmailversion 8.8 est un plus appréciable (c'est
là encore l'option par défaut dans le kit).
Next: Lecture déportée
Up: MIME
Previous: Codage
  Contents
  Index
Pierre DAVID
2001-11-26