Retour aux mises à jour
New releaseAug 7, 2026

mboxshell v0.6.2

mboxShell. Visionneuse terminal rapide pour fichiers MBOX de toute taille. Ouvrez, recherchez et exportez des e-mails depuis des sauvegardes Gmail Takeout (50 Go+) sans les charger en mémoire. Développé en Rust.

Partager

mboxShell

Visionneuse terminal rapide pour fichiers MBOX de toute taille. Ouvrez, recherchez et exportez des e-mails depuis les sauvegardes Google Takeout (50 Go et plus) sans les charger en mémoire.

License: MIT Rust

Leer en Espanol / Spanish


Pourquoi ce projet existe-t-il ?

Lorsque vous exportez vos e-mails depuis Gmail à l'aide de Google Takeout, vous obtenez un ou plusieurs fichiers .mbox qui peuvent peser des dizaines de gigaoctets. Il n'existe aucun outil terminal multiplateforme qui permette d'ouvrir, de rechercher et de parcourir ces fichiers efficacement sans les charger entièrement en mémoire.

mboxShell a été conçu pour résoudre ce problème : ouvrez un MBOX de 50 Go en quelques secondes, parcourez des centaines de milliers de messages en toute fluidité, recherchez par expéditeur, date ou contenu, et exportez ce dont vous avez besoin. Le tout depuis le terminal, sans interface graphique, sans serveur et sans dépendances externes.

Cas d'utilisation

  • Parcourir les sauvegardes Gmail (Google Takeout) avec leurs libellés d'origine
  • Analyser les archives de courrier sur des serveurs, lors de migrations ou d'audits
  • Rechercher des messages dans des fichiers MBOX de toute provenance (Thunderbird, serveurs Unix, etc.)
  • Exporter des messages au format EML, CSV ou texte brut pour un traitement ultérieur
  • Extraire les pièces jointes individuellement ou en masse
  • Fusionner plusieurs fichiers MBOX en un seul, en supprimant les doublons

Également sur Mac : mboxViewer

Si vous préférez une expérience graphique native sur macOS, découvrez mboxViewer — une application Mac native développée par la même équipe. Elle offre une interface familière de type boîte aux lettres pour ouvrir, parcourir et rechercher des fichiers MBOX sans jamais les importer dans un client de messagerie. Glissez-déposez votre fichier .mbox et vous accédez instantanément à tous vos messages, pièces jointes et libellés dans une fenêtre native macOS épurée. Idéal pour les utilisateurs qui souhaitent la puissance du moteur d'analyse de mboxShell avec le confort d'une interface graphique de bureau.

Aussi dans votre navigateur : Online Mbox Viewer

Besoin de jeter un œil à un fichier MBOX sans rien installer ? Essayez Online Mbox Viewer — une application web gratuite sous licence MIT du même auteur. Elle ouvre et affiche les fichiers .mbox entièrement dans votre navigateur : rien n'est envoyé sur un serveur, vos e-mails restent donc sur votre machine. Parfait pour un aperçu rapide depuis n'importe quel appareil. Code source sur github.com/dcarrero/online-mbox-viewer.

Fonctionnalités

  • Ne charge jamais le fichier en mémoire. Utilise des E/S en flux avec un tampon de 1 Mo. Un MBOX de 100 Go utilise à peu près la même quantité de RAM (~500 Mo) qu'un fichier de 1 Go (seul l'index des métadonnées réside en mémoire).
  • Indexation persistante. La première ouverture crée un index binaire (.mboxshell.idx) afin que les ouvertures suivantes prennent moins d'une seconde.
  • Prise en charge complète de Gmail. Détecte et affiche les X-Gmail-Labels comme dossiers virtuels dans un panneau latéral, vous permettant de filtrer par Boîte de réception, Messages envoyés, Suivis, libellés personnalisés, etc.
  • Encodages corrects. Décode les mots encodés RFC 2047, prend en charge UTF-8, ISO-8859-1, Windows-1252, KOI8-R et tout jeu de caractères reconnu par encoding_rs.
  • Filage des conversations. Regroupe les messages en fils de discussion grâce à l'algorithme JWZ (le même que celui utilisé par Netscape/Mozilla).
  • Recherche avancée. Filtrage par champ (from:, subject:, date:, body:, has:attachment, label:, etc.), plages de dates, filtres de taille, opérateurs AND/OR et négation.
  • Export flexible. Export individuel ou en masse vers EML, CSV (compatible Excel), texte brut. Extraction des pièces jointes décodées.
  • Binaire unique. Aucun environnement d'exécution, aucune dépendance. Un exécutable d'environ 5 Mo qui fonctionne sous Linux, macOS et Windows.
  • Interface terminal complète. Navigation au clavier (style vi), trois modes de disposition, barre de recherche interactive, raccourcis configurables.
  • Bilingue. Interface disponible en anglais et en espagnol, détectée automatiquement selon la langue du système.

Installation

Binaires précompilés (recommandé)

Téléchargez la dernière version pour votre plateforme depuis la page Releases :

PlateformeBinaire
Linux x86_64mboxshell-linux-x86_64
Linux ARM64mboxshell-linux-aarch64
Linux RISC-V 64mboxshell-linux-riscv64
FreeBSD x86_64mboxshell-freebsd-x86_64
macOS Intelmboxshell-macos-x86_64
macOS Apple Siliconmboxshell-macos-aarch64
Windows x86_64mboxshell-windows-x86_64.exe
Windows ARM64mboxshell-windows-arm64.exe

Après le téléchargement, rendez-le exécutable et placez-le dans votre PATH :

# Linux / macOS
chmod +x mboxshell-*
sudo mv mboxshell-* /usr/local/bin/mboxshell

# Or place it in a user-local directory
mv mboxshell-* ~/.local/bin/mboxshell

Sous Windows, déplacez mboxshell-windows-x86_64.exe dans un dossier de votre PATH, ou exécutez-le directement.

Compiler à partir des sources

Prérequis : Rust 1.85 ou version ultérieure.

# Clone and build
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release

# The binary is at target/release/mboxshell
# Install it system-wide:
sudo cp target/release/mboxshell /usr/local/bin/

# Or for the current user only:
cp target/release/mboxshell ~/.local/bin/

Compilation croisée pour d'autres plateformes

# Add the target you need
rustup target add aarch64-apple-darwin      # macOS Apple Silicon
rustup target add x86_64-unknown-linux-gnu  # Linux x86_64
rustup target add aarch64-unknown-linux-gnu # Linux ARM64

# Build for a specific target
cargo build --release --target aarch64-apple-darwin

Installation via Cargo

cargo install --git https://github.com/dcarrero/mboxshell.git

Démarrage rapide

# Open an MBOX file in the terminal UI
mboxshell mail.mbox

# Index and show statistics
mboxshell index mail.mbox
mboxshell stats mail.mbox

# Search from the command line
mboxshell search mail.mbox "from:[email protected] date:2024"
mboxshell search mail.mbox "has:attachment subject:invoice" --json

# Export messages
mboxshell export mail.mbox --format eml --output ./emails/
mboxshell export mail.mbox --format csv --output summary.csv

# Extract attachments
mboxshell attachments mail.mbox --output ./attachments/

# Merge multiple MBOX files (duplicates are removed by default)
mboxshell merge file1.mbox file2.mbox -o merged.mbox

# Merge tagging every message with the mailbox it came from
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header

# Generate shell completions
mboxshell completions bash > /etc/bash_completion.d/mboxshell
mboxshell completions zsh > ~/.zfunc/_mboxshell
mboxshell completions fish > ~/.config/fish/completions/mboxshell.fish

Commandes CLI

CommandeDescription
mboxshell [FILE]Ouvrir un fichier dans la TUI (action par défaut)
mboxshell open <path>Ouvrir un fichier MBOX dans la TUI
mboxshell index <path> [-f/--force]Construire ou reconstruire l'index binaire
mboxshell stats <path> [--json]Afficher les statistiques d'un fichier MBOX
mboxshell search <path> <query> [--json]Rechercher des messages depuis la ligne de commande
mboxshell export <path> -f <format> -o <output> [--query <q>]Exporter des messages (formats : eml, csv, txt, html)
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header]Fusionner plusieurs fichiers MBOX en un seul
mboxshell attachments <path> -o <output>Extraire toutes les pièces jointes
mboxshell completions <shell>Générer les complétions shell (bash, zsh, fish, powershell, elvish)
mboxshell manpageGénérer une page de manuel

Options globales :

OptionDescription
-f, --forceForcer la reconstruction de l'index même s'il existe déjà
-v, --verboseAugmenter la verbosité des journaux (-v info, -vv debug, -vvv trace)
--lang <en|es>Forcer la langue de l'interface (détectée automatiquement par défaut)

Options de fusion :

OptionDescription
--no-dedupIgnorer la détection des Message-ID en double et concaténer les entrées octet par octet (la déduplication est activée par défaut)
--source-headerInjecter un en-tête X-Mbox-Source: <nom de la boîte aux lettres> dans chaque message, afin qu'une archive fusionnée reste traçable jusqu'à la boîte aux lettres d'origine de chaque e-mail

Le libellé source est le nom de la boîte aux lettres tel que vous le voyez : pour une exportation Apple Mail — un dossier Inbox.mbox contenant un fichier littéralement nommé mbox — il lit Inbox.mbox, et non mbox. Les boîtes aux lettres qui finiraient par partager un libellé sont différenciées les unes des autres (Work/Inbox.mbox vs Personal/Inbox.mbox).

Interface du terminal

Capture d'écran mboxShell

Raccourcis clavier

ToucheAction
j / kMessage suivant / précédent
g / GPremier / dernier message
PgDn / PgUpPage suivante / précédente
EnterOuvrir le message / passer à la vue message
Shift-↑ / Shift-↓Faire défiler le corps du message sélectionné (garde le focus sur la liste) ; un indicateur de position (Top / NN% / Bot) apparaît dans la bordure du message
Tab / Shift-TabFaire défiler le focus entre les panneaux
EscRetour à la liste / fermer la fenêtre contextuelle
/Ouvrir la barre de recherche
fOuvrir la fenêtre de filtre de recherche
n / NRésultat de recherche suivant / précédent
SpaceMarquer / démarquer le message
*Marquer / démarquer tout
sChanger de colonne de tri (Date, Expéditeur, Objet, Taille)
SInverser le sens du tri
eExporter le message (EML, TXT, CSV, pièces jointes)
aAfficher les pièces jointes (j/k pour naviguer, Entrée pour enregistrer, A pour tout enregistrer)
tActiver/désactiver la vue en fils (conversations)
lAfficher / mettre le focus sur / masquer le panneau latéral des libellés
hAfficher/masquer les en-têtes complets
rAfficher/masquer la source brute du message
1 / 2 / 3Disposition : liste seule / division horizontale / division verticale
?Aide
qQuitter

Syntaxe de recherche

from:[email protected]              Search by sender
to:[email protected]         Search by recipient
cc:[email protected]              Search by Cc recipient
subject:invoice                  Search in subject line
body:important text              Search in message body (full-text)
filename:report.pdf              Search by attachment file name
id:<message-id@domain>           Search by Message-ID
has:attachment                   Only messages with attachments
has:no-attachment                Only messages without attachments
label:Inbox                      Filter by Gmail label
date:2024-01                     Messages from January 2024
date:2024-01-01..2024-06-30      Date range
before:2024-06-01                Before a date
after:2024-01-01                 After a date
size:>1mb                        Messages larger than 1 MB
-subject:spam                    Exclude messages with "spam" in subject
"exact phrase"                   Search for an exact phrase
from:john subject:budget         Implicit AND (both must match)
term1 OR term2                   Explicit OR

Formats d'entrée pris en charge

FormatExtensionDescription
MBOX (mboxrd/mboxo).mboxFormat standard. Google Takeout, Thunderbird, serveurs Unix

Performances

Testé avec de véritables fichiers MBOX issus de Google Takeout :

Taille du fichierMessagesIndexationRéouverture
500 MB~5,000~3 s< 1 s
5 GB~50,000~30 s< 1 s
50 GB~500,000~5 min< 1 s

La navigation dans la liste des messages est instantanée grâce au défilement virtuel (seules les lignes visibles sont rendues).

Configuration

Le fichier de configuration se trouve à ~/.config/mboxshell/config.toml :

[general]
default_sort = "date"
sort_order = "desc"
date_format = "%Y-%m-%d %H:%M"
log_level = "warn"

[display]
theme = "dark"
layout = "horizontal"
show_sidebar = false
max_cached_messages = 50

[export]
default_format = "eml"
csv_separator = ","

Architecture

src/
+-- main.rs              # CLI with clap
+-- lib.rs               # Module re-exports
+-- error.rs             # Error types with thiserror
+-- config.rs            # TOML configuration
+-- mailbox_naming.rs    # Human-facing mailbox names (Apple Mail packages)
+-- i18n/                # Internationalization (EN/ES)
+-- parser/
|   +-- mbox.rs          # Streaming parser (never loads the file into memory)
|   +-- eml.rs           # Individual EML file parser
|   +-- mime.rs          # MIME decoding, multipart, charsets
|   +-- header.rs        # RFC 5322 headers, RFC 2047 encoded-words
+-- index/
|   +-- builder.rs       # Binary index construction
|   +-- reader.rs        # Index queries
|   +-- format.rs        # Binary format with SHA-256 integrity check
+-- model/
|   +-- mail.rs          # MailEntry, MailBody
|   +-- attachment.rs    # Attachment metadata
|   +-- address.rs       # RFC 5322 address parsing
+-- store/
|   +-- reader.rs        # Offset-based reading with LRU cache
+-- search/
|   +-- query.rs         # Search query parser
|   +-- metadata.rs      # Fast index search (O(n), < 200ms for 1M messages)
|   +-- fulltext.rs      # Streaming full-text search
+-- export/
|   +-- eml.rs           # Export to .eml
|   +-- csv.rs           # Export summary to CSV (UTF-8 BOM)
|   +-- text.rs          # Export to plain text
|   +-- attachment.rs    # Attachment extraction
|   +-- mbox.rs          # MBOX merge with deduplication and source header
+-- tui/
    +-- app.rs           # Global state (Elm Architecture)
    +-- event.rs         # Keyboard event handling
    +-- ui.rs            # Layout and render dispatch
    +-- threading.rs     # JWZ algorithm for conversation threads
    +-- theme.rs         # Color theme
    +-- widgets/         # Visual components
        +-- mail_list.rs       # List with virtual scrolling
        +-- mail_view.rs       # Message viewer with scroll
        +-- sidebar.rs         # Labels/folders panel
        +-- header_bar.rs      # Top bar
        +-- status_bar.rs      # Status bar
        +-- search_bar.rs      # Search bar
        +-- search_popup.rs    # Search filter popup
        +-- help_popup.rs      # Help popup
        +-- attachment_popup.rs # Attachment popup
        +-- export_popup.rs     # Export popup

Dépendances clés

CrateRôle
ratatui + crosstermInterface terminal
mail-parserAnalyse MIME/RFC 5322
encoding_rsDécodage des jeux de caractères
chronoDates et fuseaux horaires
clapAnalyse des arguments CLI
serde + bincodeSérialisation de l'index
sha2Vérification de l'intégrité de l'index
lruCache des messages décodés
tracingJournalisation structurée

Sponsors

mboxshell est développé en open source et est soutenu par :

Colorvivo      Stackscale

  • Colorvivo — experts en WordPress, IA et médias numériques.
  • Stackscale — experts en infrastructure de cloud privé.

Si votre entreprise trouve mboxshell utile et souhaite soutenir son développement continu, consultez .github/FUNDING.yml ou contactez-nous via carrero.es.

Documentation

Le manuel utilisateur complet couvre chaque commande, raccourci clavier, opérateur de recherche, option d'exportation et clé de configuration :

Journal des modifications

Consultez CHANGELOG.md pour l'historique complet des versions.

Licence

MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es

Code source : https://github.com/dcarrero/mboxshell

Catégories