113 votes

Pourquoi la taille de mon courriel est-elle environ un tiers plus grande que celle des fichiers joints ?

Lorsque je joins des données à mes courriels, j'ai remarqué que Thunderbird calcule la taille totale du courriel résultant comme étant beaucoup plus grande que les fichiers que j'ai joints.

Voici un exemple récent : deux images, l'une de 13 Mo et l'autre de 3,6 Mo, devraient au total peser environ 17 Mo. Il y avait quatre lignes de texte. Thunderbird m'a alors demandé si je voulais vraiment envoyer un courriel d'une taille totale de 22 Mo.

D'où vient cette différence ? 5MB de texte, ça semble un peu beaucoup.

214voto

David Schwartz Points 60868

Vos données étaient de 17 MiB. Il y a 1024 KiB dans un MiB. Il y a 1024 B dans un KiB. Il y a 8 bits dans un octet. Donc ça fait 142 606 336 bits.

Le codage en base 64 encode tous les six bits comme un octet distinct. Nous avons donc besoin d'environ 23 767 722 octets. En divisant deux fois par 1024, on obtient 22,67 MiB. C'est donc de là que viennent les 22 MiB.

Le courrier électronique est une technologie assez ancienne et ne suppose pas un tuyau propre de 8 bits.

51voto

plugwash Points 5642

Pourquoi l'e-mail est-il plus grand ?

Parce que les données sont codées en base64 qui code des groupes de trois octets maximum sous forme de groupes de quatre caractères ASCII imprimables. Généralement, ces groupes de caractères imprimables sont ensuite divisés en lignes.

Le résultat est que les données codées sont un peu plus d'une fois plus grandes que les données originales.

Pourquoi utiliser la base64 ?

Le courrier électronique a une longue histoire et a été conçu à l'origine pour transporter du texte. Seules les valeurs d'octets représentant des caractères imprimables ASCII pouvaient passer de manière fiable dans la grande variété de systèmes de courrier électronique existant sur la planète et certains d'entre eux pouvaient poser problème.

MIME a donc conçu deux systèmes pour coder d'autres données sous forme de texte ASCII : "quoted-printable", conçu pour un texte essentiellement ASCII avec quelques autres bits, et "BASE64", pour des données binaires arbitraires.

Des extensions ont été apportées au protocole SMTP pour tenter de supprimer ces restrictions. Tout d'abord, 8BITMIME en 1994, qui autorisait des valeurs d'octets plus élevées mais ne supprimait malheureusement pas les limites liées à la longueur et à la fin des lignes, et ne convenait donc pas aux données binaires arbitraires ; puis BINARYMIME en 1995, qui permettait le transfert de messages contenant des données binaires arbitraires.

Toutefois, ces normes n'ont pas été largement adoptées. Un problème se pose : que se passe-t-il si un maillon de la chaîne de courrier les prend en charge, mais pas le suivant ? Le serveur de courrier ne peut alors pas envoyer le courrier tel quel, il doit soit le rejeter comme non distribuable et le renvoyer (ce qui a peu de chances d'être acceptable pour les utilisateurs), soit le convertir (ce qui nécessite un code supplémentaire important dans le serveur de courrier). La conversion est rendue particulièrement pénible par les règles MIME concernant la non-utilisation des codages de transfert de contenu sur les types multipart.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X