Skip to content
Mbox Viewer Pro
mboxformatsarchives

Où vont les pièces jointes dans un fichier MBOX ?

Les pièces jointes sont dans le message lui-même, encodées en texte base64 à l'intérieur d'une partie MIME. C'est ce qui explique la taille du fichier, pourquoi chercher les mots d'un PDF ne donne rien, et pourquoi un vieux format a perdu les siennes.

David Carrero ·

Dans le message. Une pièce jointe est une partie MIME à l’intérieur du message lui-même, son contenu binaire encodé en texte base64 pour pouvoir traverser une infrastructure de messagerie qui ne sait manipuler que du texte. Il n’existe pas de dossier de pièces jointes : un fichier MBOX se suffit à lui-même, et chaque photo, chaque PDF qu’on vous a jamais envoyés y sont, sous forme de caractères.

À quoi cela ressemble

Un message avec un PDF joint a un conteneur extérieur multipart/mixed qui contient deux choses : le corps (souvent lui-même un multipart/alternative avec une version en texte brut et une version HTML) et la partie de la pièce jointe. Chaque partie déclare son propre type, et le tout est séparé par une chaîne de délimitation.

La partie de la pièce jointe porte un en-tête Content-Disposition: attachment avec le nom du fichier, un Content-Type qui dit de quoi il s’agit (application/pdf, image/png), puis quelques milliers de lignes de base64.

Trois choses en découlent, et chacune explique quelque chose que les gens remarquent :

Votre fichier est plus gros que le courrier que vous avez reçu. Le base64 coûte environ un tiers de plus. Une photo de 6 Mo occupe à peu près 8 Mo dans la boîte aux lettres. Multipliez par vingt ans et vous tenez l’essentiel de l’explication d’une archive de 40 Go.

Chercher du texte à l’intérieur d’un PDF ne donne rien. Le document est là-dedans en base64, pas en mots. body: cherche dans le corps du message ; il ne peut pas voir à l’intérieur d’un fichier encodé. Cherchez ce que le message disait — ou servez-vous de has:attachment avec l’expéditeur et une période, ce qui est la façon dont on retrouve vraiment les choses.

Rien ne s’exécute tant que cela dort là. Du texte encodé est inerte ; le risque commence quand vous en décodez une, l’enregistrez et l’ouvrez, ce qui est la question de sécurité ordinaire et non une question propre au MBOX.

Les pièces jointes et les images du message

Ce n’est pas la même chose, même si les deux sont des parties MIME.

Une image en ligne — le logo d’une lettre d’information — utilise multipart/related et est appelée depuis le HTML par un cid:quelquechose, si bien qu’elle s’affiche dans la mise en page au lieu d’apparaître comme un fichier à enregistrer. Elle voyage à l’intérieur du message comme le fait une pièce jointe, et elle prend la même place.

Une image distante n’est ni l’un ni l’autre : c’est un simple lien https://, chargé depuis un serveur à l’ouverture du message. Rien n’en est dans votre archive, ce qui explique que les vieilles lettres d’information s’affichent pleines de trous — et qu’un lecteur qui va les chercher signale à l’expéditeur que vous venez d’ouvrir un message de 2015. Mbox Viewer résout les références cid: pour que le courrier mis en forme s’affiche correctement hors ligne, et bloque les images distantes.

Les faire sortir

Ce qui est en général le vrai objectif : non pas lire le courrier, mais récupérer la facture qui y était jointe.

Ouvrez le message et enregistrez la pièce jointe, ou prévisualisez-la d’abord — Quick Look, avec la barre d’espace, sur un Mac. Au-delà de quelques-unes, l’export par lots écrit toutes les pièces jointes d’une sélection dans un même dossier en une seule passe ; resserrez d’abord l’archive avec from: et has:attachment, et la sélection est le résultat de votre recherche. Vous pouvez aussi faire glisser une pièce jointe directement vers le Finder ou l’Explorer.

Deux choses à savoir avant de le faire en masse :

  • Les noms de fichiers se télescopent. En dix ans, douze expéditeurs ont appelé le leur facture.pdf. Exportez dans un dossier par expéditeur ou par recherche, pas tout dans un seul.
  • Le message, c’est le contexte. Un dossier de 400 PDF en vrac, sans dates ni expéditeurs, est pire que l’archive dont vous êtes parti. Si ce dont vous avez besoin doit pouvoir être prouvé, exportez aussi les messages en EML ou en PDF, pour que chaque fichier ait avec lui le courrier avec lequel il est arrivé.

Le format où elles manquent

Une exception historique, et elle piège ceux qui restaurent de vieilles sauvegardes : Eudora. Il stockait les boîtes aux lettres en mbox ordinaire sous une extension .mbx, mais il détachait les pièces jointes — écrivant chacune dans un dossier de pièces jointes à part et laissant dans le corps une ligne Attachment Converted: suivie d’un chemin.

Un .mbx récupéré affiche donc des pièces jointes sous forme de renvois vers des fichiers qui n’y sont pas. S’ils existent encore, ils sont dans le répertoire Eudora d’à côté. Copiez l’ensemble, pas seulement les boîtes aux lettres — et si on ne vous remet que les fichiers .mbx, les pièces jointes sont déjà perdues.

Le bon côté de tout cela

Que tout soit à l’intérieur du fichier, c’est précisément ce qui fait qu’une archive MBOX s’ouvre encore des décennies plus tard. Pas de répertoire de pièces jointes à égarer, pas de base de données à migrer, pas de serveur qui doive encore tourner. Le courrier et les fichiers qui l’accompagnaient forment un seul objet, en texte, lisible par n’importe quoi.

C’est aussi pour cela que le fichier est énorme. Ce compromis — encombrant mais autonome — a maintenu en vie beaucoup de courrier qui aurait sinon disparu.

Ouvrez votre archive avec Mbox Viewer

Application native pour Mac et Windows. Lit en streaming des fichiers MBOX et EML de toute taille, entièrement hors ligne.