
mboxshell v0.6.2
mboxShell. Visualizzatore da terminale veloce per file MBOX di qualsiasi dimensione. Apri, cerca ed esporta email dai backup di Gmail Takeout (50GB+) senza caricarli in memoria. Realizzato in Rust.
mboxShell
Visualizzatore terminale veloce per file MBOX di qualsiasi dimensione. Apri, cerca ed esporta email da backup di Google Takeout (50 GB+) senza caricarli in memoria.
Perché esiste questo progetto
Quando esporti la tua email da Gmail usando Google Takeout, ottieni uno o più file .mbox che possono pesare decine di gigabyte. Non esiste uno strumento terminale multipiattaforma che ti permetta di aprire, cercare e sfogliare questi file in modo efficiente senza caricarli interamente in memoria.
mboxShell è stato creato per risolvere questo problema: apri un MBOX da 50 GB in pochi secondi, naviga centinaia di migliaia di messaggi senza intoppi, cerca per mittente, data o contenuto, ed esporta tutto ciò che ti serve. Il tutto dal terminale, senza GUI, senza server, senza dipendenze esterne.
Casi d'uso
- Sfoglia i backup di Gmail (Google Takeout) con le loro etichette originali
- Analizza archivi di posta su server, durante migrazioni o audit
- Cerca messaggi in file MBOX provenienti da qualsiasi fonte (Thunderbird, server Unix, ecc.)
- Esporta messaggi in EML, CSV o testo semplice per ulteriori elaborazioni
- Estrai allegati singolarmente o in blocco
- Unisci più file MBOX in uno solo, rimuovendo i duplicati
Anche su Mac: mboxViewer
Se preferisci un'esperienza grafica nativa su macOS, dai un'occhiata a mboxViewer — un'app Mac nativa creata dallo stesso team. Offre un'interfaccia familiare in stile mailbox per aprire, sfogliare e cercare file MBOX senza doverli mai importare in un client di posta. Trascina e rilascia il tuo file .mbox e avrai accesso immediato a tutti i tuoi messaggi, allegati ed etichette in una finestra pulita e nativa per macOS. Ideale per chi vuole la potenza del motore di parsing di mboxShell con il comfort di una GUI desktop.
Anche nel tuo browser: Online Mbox Viewer
Hai bisogno di dare un'occhiata a un file MBOX senza installare nulla? Prova Online Mbox Viewer — un'app web gratuita con licenza MIT dello stesso autore. Apre e renderizza i file .mbox interamente nel tuo browser: nulla viene caricato su alcun server, quindi la tua email rimane sul tuo computer. Perfetto per una rapida occhiata da qualsiasi dispositivo. Codice sorgente su github.com/dcarrero/online-mbox-viewer.
Caratteristiche
- Non carica mai il file in memoria. Usa I/O in streaming con un buffer da 1 MB. Un MBOX da 100 GB utilizza all'incirca gli stessi ~500 MB di RAM di uno da 1 GB (solo l'indice dei metadati vive in memoria).
- Indicizzazione persistente. La prima apertura crea un indice binario (
.mboxshell.idx) così le aperture successive richiedono meno di un secondo. - Supporto Gmail completo. Rileva e mostra
X-Gmail-Labelscome cartelle virtuali in un pannello laterale, permettendoti di filtrare per Inbox, Inviati, Speciali, etichette personalizzate, ecc. - Codifiche corrette. Decodifica le encoded-word RFC 2047, supporta UTF-8, ISO-8859-1, Windows-1252, KOI8-R e qualsiasi charset riconosciuto da
encoding_rs. - Raggruppamento in conversazioni. Raggruppa i messaggi in thread usando l'algoritmo JWZ (lo stesso usato da Netscape/Mozilla).
- Ricerca avanzata. Filtri specifici per campo (
from:,subject:,date:,body:,has:attachment,label:, ecc.), intervalli di date, filtri per dimensione, operatori AND/OR e negazione. - Esportazione flessibile. Esportazione singola o in blocco in EML, CSV (compatibile con Excel), testo semplice. Estrazione degli allegati decodificati.
- Singolo binario. Nessun runtime, nessuna dipendenza. Un eseguibile di ~5 MB che funziona su Linux, macOS e Windows.
- Interfaccia terminale completa. Navigazione da tastiera (stile vi), tre modalità di layout, barra di ricerca interattiva, scorciatoie configurabili.
- Bilingue. Interfaccia disponibile in inglese e spagnolo, rilevata automaticamente dalla lingua di sistema.
Installazione
Binari precompilati (consigliato)
Scarica l'ultima release per la tua piattaforma dalla pagina Releases:
| Piattaforma | Binario |
|---|---|
| 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 |
Dopo il download, rendilo eseguibile e spostalo nel tuo PATH:
# Linux / macOS
chmod +x mboxshell-*
sudo mv mboxshell-* /usr/local/bin/mboxshell
# Oppure posizionalo in una directory locale dell'utente
mv mboxshell-* ~/.local/bin/mboxshell
Su Windows, sposta mboxshell-windows-x86_64.exe in una cartella nel tuo PATH, oppure eseguilo direttamente.
Compilazione dal sorgente
Requisiti: Rust 1.85 o successivo.
# Clona e compila
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release
# Il binario si trova in target/release/mboxshell
# Installalo a livello di sistema:
sudo cp target/release/mboxshell /usr/local/bin/
# Oppure solo per l'utente corrente:
cp target/release/mboxshell ~/.local/bin/
Compilazione incrociata per altre piattaforme
# Aggiungi la piattaforma che ti serve
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
# Compila per una piattaforma specifica
cargo build --release --target aarch64-apple-darwin
Installazione tramite Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Avvio rapido
# Apri un file MBOX nell'interfaccia terminale
mboxshell mail.mbox
# Indicizza e mostra le statistiche
mboxshell index mail.mbox
mboxshell stats mail.mbox
# Cerca dalla riga di comando
mboxshell search mail.mbox "from:[email protected] date:2024"
mboxshell search mail.mbox "has:attachment subject:invoice" --json
# Esporta messaggi
mboxshell export mail.mbox --format eml --output ./emails/
mboxshell export mail.mbox --format csv --output summary.csv
# Estrai allegati
mboxshell attachments mail.mbox --output ./attachments/
# Unisci più file MBOX (i duplicati vengono rimossi per impostazione predefinita)
mboxshell merge file1.mbox file2.mbox -o merged.mbox
# Unisci etichettando ogni messaggio con la mailbox di provenienza
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header
# Genera le completions per la shell
mboxshell completions bash > /etc/bash_completion.d/mboxshell
mboxshell completions zsh > ~/.zfunc/_mboxshell
mboxshell completions fish > ~/.config/fish/completions/mboxshell.fish
Comandi CLI
| Comando | Descrizione |
|---|---|
mboxshell [FILE] | Apre un file nella TUI (azione predefinita) |
mboxshell open <path> | Apre un file MBOX nella TUI |
mboxshell index <path> [-f/--force] | Costruisce o ricostruisce l'indice binario |
mboxshell stats <path> [--json] | Mostra le statistiche di un file MBOX |
mboxshell search <path> <query> [--json] | Cerca messaggi dalla riga di comando |
mboxshell export <path> -f <format> -o <output> [--query <q>] | Esporta messaggi (formati: eml, csv, txt, html) |
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header] | Unisce più file MBOX in uno solo |
mboxshell attachments <path> -o <output> | Estrae tutti gli allegati |
mboxshell completions <shell> | Genera le completions per shell (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Genera una man page |
Flag globali:
| Flag | Descrizione |
|---|---|
-f, --force | Forza la ricostruzione dell'indice anche se esiste già |
-v, --verbose | Aumenta la verbosità dei log (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Forza la lingua dell'interfaccia (rilevata automaticamente per impostazione predefinita) |
Flag per merge:
| Flag | Descrizione |
|---|---|
--no-dedup | Salta il rilevamento dei Message-ID duplicati e concatena gli input byte per byte (il dedup è attivo per impostazione predefinita) |
--source-header | Inietta un header X-Mbox-Source: <nome mailbox> in ogni messaggio, così un archivio unito resta tracciabile fino alla mailbox da cui proviene ogni email |
L'etichetta sorgente è il nome della mailbox che vedi: per un export di Apple Mail — una directory Inbox.mbox contenente un file letteralmente chiamato mbox — legge Inbox.mbox, non mbox. Le mailbox che finirebbero per condividere un'etichetta vengono disambiguate l'una rispetto all'altra (Work/Inbox.mbox vs Personal/Inbox.mbox).
Interfaccia terminale

Scorciatoie da tastiera
| Tasto | Azione |
|---|---|
j / k | Messaggio successivo / precedente |
g / G | Primo / ultimo messaggio |
PgDn / PgUp | Pagina giù / su |
Enter | Apri messaggio / passa alla vista messaggio |
Shift-↑ / Shift-↓ | Scorri il corpo del messaggio selezionato (mantiene il focus sulla lista); un indicatore di posizione (Top / NN% / Bot) viene mostrato nel bordo del messaggio |
Tab / Shift-Tab | Cicla il focus tra i pannelli |
Esc | Torna alla lista / chiudi popup |
/ | Apri la barra di ricerca |
f | Apri il popup dei filtri di ricerca |
n / N | Risultato di ricerca successivo / precedente |
Space | Contrassegna / rimuovi contrassegno dal messaggio |
* | Contrassegna / rimuovi contrassegno da tutti |
s | Cicla la colonna di ordinamento (Data, Da, Oggetto, Dimensione) |
S | Inverte la direzione di ordinamento |
e | Esporta messaggio (EML, TXT, CSV, Allegati) |
a | Mostra gli allegati (j/k per navigare, Enter per salvare, A per salvare tutti) |
t | Attiva/disattiva la vista a thread (conversazioni) |
l | Mostra / focalizza / nascondi la barra laterale delle etichette |
h | Attiva/disattiva gli header completi |
r | Attiva/disattiva il sorgente grezzo del messaggio |
1 / 2 / 3 | Layout: solo lista / split orizzontale / split verticale |
? | Aiuto |
q | Esci |
Sintassi di ricerca
from:[email protected] Cerca per mittente
to:[email protected] Cerca per destinatario
cc:[email protected] Cerca per destinatario in Cc
subject:invoice Cerca nella riga dell'oggetto
body:important text Cerca nel corpo del messaggio (full-text)
filename:report.pdf Cerca per nome del file allegato
id:<message-id@domain> Cerca per Message-ID
has:attachment Solo messaggi con allegati
has:no-attachment Solo messaggi senza allegati
label:Inbox Filtra per etichetta Gmail
date:2024-01 Messaggi di gennaio 2024
date:2024-01-01..2024-06-30 Intervallo di date
before:2024-06-01 Prima di una data
after:2024-01-01 Dopo una data
size:>1mb Messaggi più grandi di 1 MB
-subject:spam Escludi messaggi con "spam" nell'oggetto
"exact phrase" Cerca una frase esatta
from:john subject:budget AND implicito (entrambi devono corrispondere)
term1 OR term2 OR esplicito
Formati di input supportati
| Formato | Estensione | Descrizione |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Formato standard. Google Takeout, Thunderbird, server Unix |
Prestazioni
Testato con file MBOX reali di Google Takeout:
| Dimensione file | Messaggi | Indicizzazione | Riapertura |
|---|---|---|---|
| 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 navigazione nell'elenco dei messaggi è istantanea grazie allo scorrimento virtuale (vengono renderizzate solo le righe visibili).
Configurazione
Il file di configurazione si trova in ~/.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 = ","
Architettura
src/
+-- main.rs # CLI con clap
+-- lib.rs # Re-export dei moduli
+-- error.rs # Tipi di errore con thiserror
+-- config.rs # Configurazione TOML
+-- mailbox_naming.rs # Nomi mailbox leggibili (pacchetti Apple Mail)
+-- i18n/ # Internazionalizzazione (EN/ES)
+-- parser/
| +-- mbox.rs # Parser in streaming (non carica mai il file in memoria)
| +-- eml.rs # Parser per singoli file EML
| +-- mime.rs # Decodifica MIME, multipart, charset
| +-- header.rs # Header RFC 5322, encoded-word RFC 2047
+-- index/
| +-- builder.rs # Costruzione dell'indice binario
| +-- reader.rs # Query sull'indice
| +-- format.rs # Formato binario con verifica di integrità SHA-256
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Metadati degli allegati
| +-- address.rs # Parsing degli indirizzi RFC 5322
+-- store/
| +-- reader.rs # Lettura basata su offset con cache LRU
+-- search/
| +-- query.rs # Parser delle query di ricerca
| +-- metadata.rs # Ricerca veloce sull'indice (O(n), < 200ms per 1M messaggi)
| +-- fulltext.rs # Ricerca full-text in streaming
+-- export/
| +-- eml.rs # Esportazione in .eml
| +-- csv.rs # Esportazione del riepilogo in CSV (BOM UTF-8)
| +-- text.rs # Esportazione in testo semplice
| +-- attachment.rs # Estrazione degli allegati
| +-- mbox.rs # Merge MBOX con deduplicazione e header di origine
+-- tui/
+-- app.rs # Stato globale (Elm Architecture)
+-- event.rs # Gestione degli eventi da tastiera
+-- ui.rs # Layout e dispatch del rendering
+-- threading.rs # Algoritmo JWZ per i thread di conversazione
+-- theme.rs # Tema dei colori
+-- widgets/ # Componenti visivi
+-- mail_list.rs # Lista con scorrimento virtuale
+-- mail_view.rs # Visualizzatore messaggi con scorrimento
+-- sidebar.rs # Pannello etichette/cartelle
+-- header_bar.rs # Barra superiore
+-- status_bar.rs # Barra di stato
+-- search_bar.rs # Barra di ricerca
+-- search_popup.rs # Popup dei filtri di ricerca
+-- help_popup.rs # Popup di aiuto
+-- attachment_popup.rs # Popup degli allegati
+-- export_popup.rs # Popup di esportazione
Dipendenze principali
| Crate | Scopo |
|---|---|
ratatui + crossterm | Interfaccia terminale |
mail-parser | Parsing MIME/RFC 5322 |
encoding_rs | Decodifica dei charset |
chrono | Date e fusi orari |
clap | Parsing degli argomenti CLI |
serde + bincode | Serializzazione dell'indice |
sha2 | Verifica dell'integrità dell'indice |
lru | Cache dei messaggi decodificati |
tracing | Log strutturati |
Sponsor
mboxshell è sviluppato in modo aperto ed è supportato da:
- Colorvivo — esperti in WordPress, AI e media digitali.
- Stackscale — esperti in infrastrutture cloud private.
Se la tua azienda trova utile mboxshell e vuole sostenere il suo sviluppo continuo, consulta .github/FUNDING.yml o contattaci tramite carrero.es.
Documentazione
Il manuale utente completo copre ogni comando, scorciatoia da tastiera, operatore di ricerca, opzione di esportazione e chiave di configurazione:
- docs/MANUAL.md — Manuale utente (inglese)
- docs/MANUAL-ES.md — Manual de usuario (Español)
Changelog
Consulta CHANGELOG.md per la cronologia completa delle release.
Licenza
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Codice sorgente: https://github.com/dcarrero/mboxshell