Torna agli aggiornamenti
New releaseAug 7, 2026

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.

Condividi

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.

License: MIT Rust

Leer en Espanol / Spanish


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-Labels come 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.mbox che 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 ID X-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:

PiattaformaBinario
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

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

ComandoDescrizione
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 manpageGenera una pagina man

Flag globali:

FlagDescrizione
-f, --forceForza la ricostruzione dell'indice anche se esiste già (in export, -f è --format — scrivi per esteso --force lì)
-v, --verboseAumenta 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:

FlagDescrizione
--no-dedupSalta il rilevamento dei Message-ID duplicati e concatena gli input byte per byte (la deduplicazione è attiva per impostazione predefinita)
--source-headerInietta 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

mboxShell screenshot

Scorciatoie da tastiera

TastoAzione
j / kMessaggio successivo / precedente
g / GPrimo / ultimo messaggio
PgDn / PgUpPagina giù / su
EnterApri 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-TabCicla il focus dei pannelli
EscTorna alla lista / chiudi popup
/Apri la barra di ricerca
fApri il popup dei filtri di ricerca
n / NRisultato di ricerca successivo / precedente
SpaceSegna / desegna messaggio
*Segna / desegna tutti
sCicla la colonna di ordinamento (Data, Da, Oggetto, Dimensione)
SInverte la direzione di ordinamento
eEsporta messaggio (EML, TXT, CSV, Allegati)
aMostra allegati (j/k per navigare, Enter per salvare, A per salvare tutti)
tAttiva/disattiva vista a thread (conversazioni)
lMostra / focalizza / nascondi barra laterale etichette
hAttiva/disattiva intestazioni complete
rAttiva/disattiva sorgente messaggio grezza
1 / 2 / 3Layout: solo lista / divisione orizzontale / divisione verticale
?Aiuto
qEsci

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

FormatoEstensioneDescrizione
MBOX (mboxrd/mboxo).mboxFormato standard. Google Takeout, Thunderbird, server Unix
Esportazione Google Groupstopics.mboxDentro 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 MailName.mbox/mboxViene letto il file interno; la casella viene nominata in base al pacchetto

Prestazioni

Testato con file MBOX reali di Google Takeout:

Dimensione fileMessaggiIndicizzazioneRiapertura
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

CrateScopo
ratatui + crosstermInterfaccia terminale
mail-parserParsing MIME/RFC 5322
encoding_rsDecodifica charset
chronoDate e fusi orari
clapParsing argomenti CLI
serde + bincodeSerializzazione indice
sha2Verifica integrità indice
lruCache messaggi decodificati
tracingLogging strutturato

mboxshell è sviluppato in modo aperto ed è supportato da:

Colorvivo      Stackscale

  • 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:

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

Categorie