Exporter et convertir une boîte mail Stalwart en fichiers .eml

Exporter et convertir une boîte mail Stalwart en fichiers .eml
Photo by Garrett Goolsby / Unsplash

Lors de la maintenance ou du décommissionnement d'un serveur de messagerie auto-hébergé sous Stalwart Mail Server, il est fréquent de devoir archiver ou récupérer l'intégralité d'une boîte aux lettres (e-mails, arborescence des dossiers et pièces jointes) pour un utilisateur dont on ne possède pas le mot de passe.

Grâce à l'implémentation native du protocole JMAP dans Stalwart, le compte administrateur principal dispose des privilèges nécessaires pour interroger et extraire les données de n'importe quel compte hébergé sans avoir à réinitialiser les accès de l'utilisateur.

Ce tutoriel détaille pas à pas comment capturer une boîte mail à l'aide des outils officiels de Stalwart, puis comment convertir les données brutes en fichiers standards .eml directement exploitables dans un client lourd comme Mozilla Thunderbird.

Prérequis et variables d'exemple

Dans le cadre de cette procédure, nous utiliserons les valeurs génériques suivantes (à adapter selon votre infrastructure) :

  • URL du serveur Stalwart : [https://mail.exemple.fr](https://mail.exemple.fr)
  • Nom du conteneur Docker : stalwart-mail
  • Identifiant administrateur : admin
  • Compte cible à exporter : utilisateur@domaine-client.fr
  • Système hôte : Distribution Linux (Debian / Ubuntu) avec accès root ou sudo.

Étape 1 : Capturer la boîte mail depuis le serveur

Selon la version de Stalwart déployée sur votre infrastructure, deux outils officiels permettent d'effectuer cette extraction.

Avec l'utilitaire Vandelay (Stalwart v0.16 et supérieur — Recommandé)

Vandelay est l'outil officiel de migration et de sauvegarde par compte développé par Stalwart Labs. Il s'exécute directement depuis la machine hôte et stocke l'intégralité du compte dans une archive locale SQLite autonome.

Note sur la terminologie : Dans la logique de Vandelay, la commande import sert à aspirer les données d'un serveur distant vers le fichier archive local, tandis que export sert à pousser cette archive vers un nouveau serveur.

Vérifier le contenu de l'archive générée :Bash

vandelay inspect archive_utilisateur.sqlite

Lancer l'extraction du compte utilisateur : L'authentification s'effectue avec le compte admin (--auth-basic), tandis que l'option --account-name cible la boîte à extraire :

vandelay import jmap \
  --url https://mail.exemple.fr \
  --auth-basic admin \
  --account-name utilisateur@domaine-client.fr \
  --objects mailbox,email \
  archive_utilisateur.sqlite

Déclarer le mot de passe administrateur en variable d'environnement : Cela évite d'exposer le secret en clair dans l'historique des commandes (~/.bash_history).

export VANDELAY_PASSWORD='VOTRE_MOT_DE_PASSE_ADMIN'

Installer le binaire Vandelay sur l'hôte Linux :

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/stalwartlabs/vandelay/releases/latest/download/vandelay-installer.sh | sh

Étape 2 : Convertir les données en fichiers .eml (avec pièces jointes)

Dans le standard de messagerie RFC 5322 (MIME), un fichier .eml contient à la fois le texte du message, les en-têtes de routage et toutes les pièces jointes (encodées en Base64 à l'intérieur du fichier). Stalwart stockant nativement chaque e-mail sous forme de blob brut RFC 5322, il suffit d'extraire ces blobs et de les renommer en .eml.

Extraction depuis le fichier SQLite (Vandelay)

L'outil en ligne de commande sqlite3 intègre la fonction writefile(), qui permet d'écrire chaque blob binaire directement sur le disque sans nécessiter de script tiers.

Extraire tous les e-mails en fichiers .eml :

mkdir -p ./eml_extraits
sqlite3 archive_utilisateur.sqlite "SELECT writefile('./eml_extraits/' || hex(hash) || '.eml', data) FROM blobs;"

Vérifier le nom des colonnes de la table des blobs :

sqlite3 archive_utilisateur.sqlite ".schema"

(Repérez la table blobs ainsi que la colonne d'identifiant — souvent hash ou id — et la colonne contenant les données binaires — souvent data ou bytes).

Installer sqlite3 sur l'hôte (si absent) :

sudo apt update && sudo apt install -y sqlite3

Préparer l'archive pour le téléchargement

Compressez le dossier obtenu afin de le rapatrier facilement sur votre poste de travail (via SCP ou SFTP) :

tar -czf export_eml_utilisateur.tar.gz ./eml_extraits

Étape 3 : Importer les messages dans Mozilla Thunderbird

Une fois l'archive .tar.gz décompressée sur votre poste de travail :

  1. Pour un faible volume d'e-mails : Ouvrez Thunderbird, créez un nouveau répertoire dans vos Dossiers locaux, puis effectuez un simple glisser-déposer des fichiers .eml depuis votre explorateur de fichiers vers la liste des messages de Thunderbird.
  2. Pour un volume important (plusieurs centaines ou milliers d'e-mails) :
    • Ouvrez le gestionnaire de modules complémentaires de Thunderbird (Outils > Modules complémentaires et thèmes).
    • Recherchez et installez l'extension ImportExportTools NG.
    • Faites un clic droit sur Dossiers locaux (ou sur un sous-dossier dédié) > ImportExportTools NG > Importer des messages EML > Tous les fichiers EML d'un répertoire et de ses sous-répertoires.
    • Sélectionnez votre dossier eml_extraits.

Conclusion

En combinant les privilèges d'administration JMAP de Stalwart et le format de stockage standardisé de ses blobs, vous disposez d'une méthode fiable et non destructive pour sauvegarder une boîte aux lettres avant l'arrêt définitif d'un serveur.

Cette approche garantit une indépendance totale vis-à-vis de l'infrastructure d'origine : les fichiers .eml obtenus constituent une archive pérenne, lisible hors-ligne et réimportable à tout moment sur n'importe quel client ou serveur de messagerie.