
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.
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.
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-Labelscomme 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 :
| Plateforme | Binaire |
|---|---|
| Linux x86_64 | mboxshell-linux-x86_64 |
| Linux ARM64 | mboxshell-linux-aarch64 |
| Linux RISC-V 64 | mboxshell-linux-riscv64 |
| FreeBSD x86_64 | mboxshell-freebsd-x86_64 |
| macOS Intel | mboxshell-macos-x86_64 |
| macOS Apple Silicon | mboxshell-macos-aarch64 |
| Windows x86_64 | mboxshell-windows-x86_64.exe |
| Windows ARM64 | mboxshell-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
| Commande | Description |
|---|---|
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 manpage | Générer une page de manuel |
Options globales :
| Option | Description |
|---|---|
-f, --force | Forcer la reconstruction de l'index même s'il existe déjà |
-v, --verbose | Augmenter 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 :
| Option | Description |
|---|---|
--no-dedup | Ignorer 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-header | Injecter 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

Raccourcis clavier
| Touche | Action |
|---|---|
j / k | Message suivant / précédent |
g / G | Premier / dernier message |
PgDn / PgUp | Page suivante / précédente |
Enter | Ouvrir 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-Tab | Faire défiler le focus entre les panneaux |
Esc | Retour à la liste / fermer la fenêtre contextuelle |
/ | Ouvrir la barre de recherche |
f | Ouvrir la fenêtre de filtre de recherche |
n / N | Résultat de recherche suivant / précédent |
Space | Marquer / démarquer le message |
* | Marquer / démarquer tout |
s | Changer de colonne de tri (Date, Expéditeur, Objet, Taille) |
S | Inverser le sens du tri |
e | Exporter le message (EML, TXT, CSV, pièces jointes) |
a | Afficher les pièces jointes (j/k pour naviguer, Entrée pour enregistrer, A pour tout enregistrer) |
t | Activer/désactiver la vue en fils (conversations) |
l | Afficher / mettre le focus sur / masquer le panneau latéral des libellés |
h | Afficher/masquer les en-têtes complets |
r | Afficher/masquer la source brute du message |
1 / 2 / 3 | Disposition : liste seule / division horizontale / division verticale |
? | Aide |
q | Quitter |
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
| Format | Extension | Description |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Format standard. Google Takeout, Thunderbird, serveurs Unix |
Performances
Testé avec de véritables fichiers MBOX issus de Google Takeout :
| Taille du fichier | Messages | Indexation | Ré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
| Crate | Rôle |
|---|---|
ratatui + crossterm | Interface terminal |
mail-parser | Analyse MIME/RFC 5322 |
encoding_rs | Décodage des jeux de caractères |
chrono | Dates et fuseaux horaires |
clap | Analyse des arguments CLI |
serde + bincode | Sérialisation de l'index |
sha2 | Vérification de l'intégrité de l'index |
lru | Cache des messages décodés |
tracing | Journalisation structurée |
Sponsors
mboxshell est développé en open source et est soutenu par :
- 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 :
- docs/MANUAL.md — Manuel utilisateur (anglais)
- docs/MANUAL-ES.md — Manuel utilisateur (espagnol)
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