← Retour aux Projets

Outil de sauvegarde sécurisée de boîtes mail IMAP

Catégorie : Outils IT
Date : février 2026

À propos de ce projet

Lors d'une migration de serveur de messagerie, la perte d'emails est un risque majeur pour les entreprises. Mail Backup répond à ce besoin en offrant aux consultants IT un outil fiable pour exporter, vérifier et archiver l'intégralité d'une boîte mail avant la bascule. L'outil se connecte directement au serveur IMAP du client via une interface web sécurisée. Le consultant peut naviguer dans l'arborescence des dossiers, consulter les emails et leurs pièces jointes, puis lancer un export complet en un clic. Le backup est généré en arrière-plan avec un suivi de progression en temps réel, évitant tout problème de timeout même sur des boîtes volumineuses. Le point fort de l'outil est son système de vérification à trois niveaux. Chaque email exporté est contrôlé : vérification de la taille, parsing du format .eml, et validation des pièces jointes. Un test d'import automatique simule la réimportation des emails sur un serveur de test pour garantir que le backup est exploitable. Un rapport de vérification complet est généré au format HTML, consultable hors-ligne, accompagnant le ZIP de sauvegarde. L'architecture a été pensée pour la sécurité : aucun mot de passe n'est stocké (ni en base, ni sur disque), les credentials IMAP existent uniquement en mémoire le temps de la session, et toutes les communications transitent en TLS. L'application ne nécessite aucune base de données, tout l'état vit en RAM avec un TTL de 30 minutes.

Fonctionnalités Clés

  • Connexion IMAP universelle: Support de tous les hébergeurs (OVH, Gmail, Outlook, Gandi, o2switch, IONOS, Infomaniak) avec presets préconfigurés et connexion SSL/TLS.
  • Navigation des emails: Exploration complète de l'arborescence des dossiers, lecture des emails et téléchargement individuel des pièces jointes directement depuis le navigateur.
  • Export ZIP vérifié: Sauvegarde complète avec structure organisée par dossier et date, index CSV, et vérification automatique à trois niveaux (taille, parsing, pièces jointes).
  • Test d'import automatique: Simulation de réimportation sur un serveur IMAP de test pour garantir que le backup est exploitable avant la migration.
  • Rapport de conformité: Génération d'un rapport HTML autonome détaillant le résultat de chaque vérification, consultable hors-ligne et livrable au client.
  • Zéro stockage de données: Aucun mot de passe ni email n'est sauvegardé. Architecture sans base de données, sessions volatiles en RAM avec expiration automatique.

Défis Rencontrés

Le principal défi technique a été de contourner la contrainte de timeout HTTP de 30 secondes imposée par l'hébergeur Scalingo. La génération d'un backup complet peut prendre plusieurs minutes selon la taille de la boîte mail, rendant impossible un téléchargement synchrone classique. La solution a été d'implémenter une architecture asynchrone avec un thread de génération en arrière-plan, un système de polling AJAX pour le suivi en temps réel, et l'écriture du ZIP sur le système de fichiers temporaire plutôt qu'en mémoire pour éviter les dépassements de RAM. Un second défi a été de garantir l'intégrité des données sans base de données. Le choix d'une architecture « zero-storage » impose de gérer les sessions IMAP en mémoire tout en protégeant contre les accès concurrents, puisque la bibliothèque imaplib de Python n'est pas thread-safe. Un mécanisme de verrouillage empêche toute interaction IMAP pendant la génération du backup.

Leçons Apprises

Ce projet m'a permis d'approfondir ma maîtrise des contraintes de déploiement en PaaS, notamment la gestion des timeouts HTTP, la limitation mémoire des containers, et le fonctionnement des systèmes de fichiers éphémères. J'ai également renforcé mes compétences en sécurité applicative web, en implémentant un hardening complet (headers CSP, Permissions-Policy, cookie sécurisé, protection CSRF) qui a obtenu un score A sur SecurityHeaders.com. La principale leçon est qu'une architecture simple et bien pensée, sans base de données, sans file de messages, sans Redis peut être parfaitement adaptée à un outil métier ciblé, à condition d'en comprendre et d'en assumer les limites (single container, sessions volatiles).