Exporter et convertir une boîte mail Stalwart en fichiers .eml
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
rootousudo.
É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 commandeimportsert à aspirer les données d'un serveur distant vers le fichier archive local, tandis queexportsert à 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 :
- 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
.emldepuis votre explorateur de fichiers vers la liste des messages de Thunderbird. - 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.