
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 Gmail 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 — più una casella aggiuntiva per ogni gruppo Google che possiedi, facile da trascurare e che può essere più grande dell'esportazione Gmail stessa. Non esiste uno strumento terminale multipiattaforma che ti permetta di aprire, cercare e navigare 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. Tutto dal terminale, senza GUI, senza server, senza dipendenze esterne.
Casi d'uso
- Naviga i backup Gmail (Google Takeout) con le loro etichette originali
- Leggi i gruppi che possiedi, esportati da Takeout come caselle separate — spesso i file più grandi dell'archivio
- Analizza archivi di posta su server, durante migrazioni o audit
- Cerca messaggi in file MBOX di qualsiasi origine (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 casella di posta per aprire, navigare e cercare file MBOX senza mai importarli in un client di posta. Trascina e rilascia il tuo file .mbox e ottieni accesso immediato a tutti i tuoi messaggi, allegati ed etichette in una finestra pulita e nativa 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
Devi 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 file .mbox interamente nel tuo browser: nulla viene caricato su alcun server, quindi la tua email rimane sulla tua macchina. 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 usa 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 Posta in arrivo, Inviati, Speciali, etichette personalizzate, ecc. - Caselle Google Groups. Legge i file
topics.mboxche un archivio Takeout include per ogni gruppo che possiedi, li nomina in base al gruppo invece del nome file privo di significato, mostra il gruppo come etichetta virtuale e raggruppa le conversazioni tramite l'esatto IDX-GM-THRID. - Codifiche corrette. Decodifica le parole codificate RFC 2047, supporta UTF-8, ISO-8859-1, Windows-1252, KOI8-R e qualsiasi charset riconosciuto da
encoding_rs. - Raggruppamento conversazioni. Raggruppa i messaggi in thread usando l'algoritmo JWZ (lo stesso usato da Netscape/Mozilla), o l'ID conversazione della casella quando presente.
- Ricerca avanzata. Filtri 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 Excel), testo semplice. Estrazione allegati decodificati.
- Binario singolo. Nessun runtime, nessuna dipendenza. Un eseguibile di ~5 MB che gira 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/
Cross-compilazione per altre piattaforme
# Aggiungi il target 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 un target specifico
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 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
# Consegna solo una parte di un archivio: una nuova casella con solo le corrispondenze
mboxshell export mail.mbox --format mbox --query "from:[email protected]" -o handover.mbox
# 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 casella di provenienza
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header
# Genera completamenti 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 statistiche su 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, mbox) |
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 completamenti per la shell (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Genera una pagina man |
Flag globali:
| Flag | Descrizione |
|---|---|
-f, --force | Forza la ricostruzione dell'indice anche se esiste già (in export, -f è --format — scrivi per esteso --force lì) |
-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 di merge:
| Flag | Descrizione |
|---|---|
--no-dedup | Salta il rilevamento dei Message-ID duplicati e concatena gli input byte per byte (la deduplicazione è attiva per impostazione predefinita) |
--source-header | Inietta un'intestazione X-Mbox-Source: <nome casella> in ogni messaggio, così un archivio unito resta tracciabile alla casella da cui proviene ogni email |
L'etichetta di origine è il nome della casella che vedi: per un'esportazione Apple Mail — una directory Inbox.mbox contenente un file chiamato letteralmente mbox — legge Inbox.mbox, non mbox. Le caselle che finirebbero per condividere un'etichetta vengono disambiguate tra loro (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) appare nel bordo del messaggio |
Tab / Shift-Tab | Cicla il focus dei 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 | Segna / desegna messaggio |
* | Segna / desegna 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 allegati (j/k per navigare, Enter per salvare, A per salvare tutti) |
t | Attiva/disattiva vista a thread (conversazioni) |
l | Mostra / focalizza / nascondi barra laterale etichette |
h | Attiva/disattiva intestazioni complete |
r | Attiva/disattiva sorgente messaggio grezza |
1 / 2 / 3 | Layout: solo lista / divisione orizzontale / divisione 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 (testo completo)
filename:report.pdf Cerca per nome 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 (quel giorno escluso)
after:2024-01-01 Da una data in poi (quel giorno incluso)
after:2024-01-01 before:2025-01-01 Tutto il 2024
size:>1mb Messaggi più grandi di 1 MB
size:>1mb size:<5mb Tra 1 e 5 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
from:a OR from:b subject:budget OR lega più stretto: (a OR b) AND subject
Formati di input supportati
| Formato | Estensione | Descrizione |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Formato standard. Google Takeout, Thunderbird, server Unix |
| Esportazione Google Groups | topics.mbox | Dentro un archivio Takeout, in <gruppo>@googlegroups.com/. Il nome file è localizzato (temas.mbox, …), quindi la casella viene nominata in base al gruppo — vedi docs/GOOGLE-GROUPS.md |
| Pacchetto Apple Mail | Name.mbox/mbox | Viene letto il file interno; la casella viene nominata in base al pacchetto |
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-esportazioni dei moduli
+-- error.rs # Tipi di errore con thiserror
+-- config.rs # Configurazione TOML
+-- mailbox_naming.rs # Nomi caselle 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 # Intestazioni RFC 5322, parole codificate RFC 2047
+-- index/
| +-- builder.rs # Costruzione indice binario
| +-- reader.rs # Query sull'indice
| +-- format.rs # Formato binario con controllo di integrità SHA-256
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Metadati allegati
| +-- address.rs # Parsing indirizzi RFC 5322
+-- store/
| +-- reader.rs # Lettura basata su offset con cache LRU
+-- search/
| +-- query.rs # Parser query di ricerca
| +-- metadata.rs # Ricerca rapida su indice (O(n), < 200ms per 1M messaggi)
| +-- fulltext.rs # Ricerca full-text in streaming
+-- export/
| +-- eml.rs # Esportazione in .eml
| +-- csv.rs # Esportazione riepilogo in CSV (BOM UTF-8)
| +-- text.rs # Esportazione in testo semplice
| +-- attachment.rs # Estrazione allegati
| +-- mbox.rs # Merge MBOX con deduplicazione e intestazione di origine
+-- tui/
+-- app.rs # Stato globale (Architettura Elm)
+-- event.rs # Gestione eventi tastiera
+-- ui.rs # Layout e dispatch di rendering
+-- threading.rs # Algoritmo JWZ per thread di conversazione
+-- theme.rs # Tema 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 filtri di ricerca
+-- help_popup.rs # Popup aiuto
+-- attachment_popup.rs # Popup allegati
+-- export_popup.rs # Popup esportazione
Dipendenze principali
| Crate | Scopo |
|---|---|
ratatui + crossterm | Interfaccia terminale |
mail-parser | Parsing MIME/RFC 5322 |
encoding_rs | Decodifica charset |
chrono | Date e fusi orari |
clap | Parsing argomenti CLI |
serde + bincode | Serializzazione indice |
sha2 | Verifica integrità indice |
lru | Cache messaggi decodificati |
tracing | Logging strutturato |
Sponsor
mboxshell è sviluppato in modo aperto ed è supportato da:
- Colorvivo — esperti in WordPress, AI e media digitali.
- Stackscale — esperti in infrastruttura cloud privata.
Se la tua azienda trova utile mboxshell e vuole supportarne lo 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
Vedi 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