Retour aux mises à jour
New releaseSep 5, 2026

mboxshell v0.7.3

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 de terminal rapide pour les fichiers MBOX de toute taille. Ouvrez, recherchez et exportez des e-mails à partir de sauvegardes Gmail Takeout (50 Go+) sans les charger en mémoire.

License: MIT Rust

Leer en Espanol / Spanish


Pourquoi ce projet existe

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 — plus une boîte aux lettres supplémentaire pour chaque Google Group que vous possédez, ce qui est facile à manquer et peut être plus volumineux que l'export Gmail lui-même. Il n'existe aucun outil de terminal multiplateforme qui vous permette d'ouvrir, rechercher et parcourir ces fichiers efficacement sans les charger entièrement en mémoire.

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

Cas d'utilisation

  • Parcourir les sauvegardes Gmail (Google Takeout) avec leurs libellés d'origine
  • Lire les groupes que vous possédez, exportés par Takeout comme leurs propres boîtes aux lettres — souvent les fichiers les plus volumineux de l'archive
  • Analyser des archives de courrier sur des serveurs, lors de migrations ou d'audits
  • Rechercher des messages dans des fichiers MBOX de toute source (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

Aussi 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 consulter 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 téléversé vers un serveur, vos e-mails restent donc sur votre machine. Parfait pour un coup d'œil 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 streaming avec un tampon de 1 Mo. Un MBOX de 100 Go utilise environ les mêmes ~500 Mo de RAM qu'un fichier de 1 Go (seul l'index de 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, Envoyés, Suivis, libellés personnalisés, etc.
  • Boîtes aux lettres Google Groups. Lit les fichiers topics.mbox qu'une archive Takeout fournit pour chaque groupe que vous possédez, les nomme d'après le groupe plutôt que d'après le nom de fichier insignifiant, affiche le groupe comme un libellé virtuel et regroupe les conversations par l'identifiant exact X-GM-THRID.
  • Encodages corrects. Décode les encoded-words RFC 2047, prend en charge UTF-8, ISO-8859-1, Windows-1252, KOI8-R et tout jeu de caractères reconnu par encoding_rs.
  • Regroupement en conversations. Regroupe les messages en fils de discussion à l'aide de l'algorithme JWZ (le même que celui utilisé par Netscape/Mozilla), ou de l'identifiant de conversation propre à la boîte aux lettres lorsqu'elle en possède un.
  • 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 runtime, aucune dépendance. Un exécutable d'environ 5 Mo qui fonctionne sous Linux, macOS et Windows.
  • Interface de 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 à partir de la locale 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 dé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 vers un dossier de votre PATH, ou exécutez-le directement.

Compiler depuis les 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

Installer 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

# Hand over only part of an archive: a new mailbox with just the matches
mboxshell export mail.mbox --format mbox --query "from:[email protected]" -o handover.mbox

# 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 l'interface TUI (action par défaut)
mboxshell open <path>Ouvrir un fichier MBOX dans l'interface 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, mbox)
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 de 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 en existe un (dans export, -f correspond à --format — écrivez --force en toutes lettres dans ce cas)
-v, --verboseAugmenter la verbosité des logs (-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 doublons de Message-ID 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: <mailbox name> 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 que vous voyez : pour un export Apple Mail — un répertoire Inbox.mbox contenant un fichier littéralement appelé mbox — il indique Inbox.mbox, et non mbox. Les boîtes aux lettres qui se retrouveraient avec un libellé identique sont désambiguïsées les unes par rapport aux autres (Work/Inbox.mbox vs Personal/Inbox.mbox).

Interface de terminal

mboxShell screenshot

Raccourcis clavier

ToucheAction
j / kMessage suivant / précédent
g / GPremier / dernier message
PgDn / PgUpPage suivante / précédente
EnterOuvrir le message / basculer vers la vue message
Shift-↑ / Shift-↓Faire défiler le corps du message sélectionné (conserve le focus sur la liste) ; un indicateur de position (Top / NN% / Bot) s'affiche dans la bordure du message
Tab / Shift-TabParcourir le focus entre les panneaux
EscRetour à la liste / fermer la fenêtre contextuelle
/Ouvrir la barre de recherche
fOuvrir la fenêtre contextuelle de filtre de recherche
n / NRésultat de recherche suivant / précédent
SpaceMarquer / démarquer le message
*Marquer / démarquer tout
sParcourir la colonne de tri (Date, From, Subject, Size)
SInverser le sens du tri
eExporter le message (EML, TXT, CSV, Attachments)
aAfficher les pièces jointes (j/k pour naviguer, Enter pour enregistrer, A pour tout enregistrer)
tBasculer la vue par conversation (threaded)
lAfficher / cibler / masquer la barre latérale des libellés
hBasculer l'affichage complet des en-têtes
rBasculer l'affichage de 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 (that day excluded)
after:2024-01-01                 From a date on (that day included)
after:2024-01-01 before:2025-01-01   All of 2024
size:>1mb                        Messages larger than 1 MB
size:>1mb size:<5mb              Between 1 and 5 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
from:a OR from:b subject:budget  OR binds tighter: (a OR b) AND subject

Formats d'entrée pris en charge

FormatExtensionDescription
MBOX (mboxrd/mboxo).mboxFormat standard. Google Takeout, Thunderbird, serveurs Unix
Export Google Groupstopics.mboxÀ l'intérieur d'une archive Takeout, dans <group>@googlegroups.com/. Le nom du fichier est localisé (temas.mbox, …), la boîte aux lettres est donc nommée d'après le groupe — voir docs/GOOGLE-GROUPS.md
Paquet Apple MailName.mbox/mboxC'est le fichier interne qui est lu ; la boîte aux lettres est nommée d'après le paquet

Performances

Testé avec de vrais fichiers MBOX 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 à l'emplacement ~/.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

CrateObjectif
ratatui + crosstermInterface de 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é ouvertement et 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'export et clé de configuration :

Journal des modifications

Voir 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