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 Google 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. 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-Labels come 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:

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/

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

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 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 manpageGenera una man page

Flag globali:

FlagDescrizione
-f, --forceForza la ricostruzione dell'indice anche se esiste già
-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 per merge:

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

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) viene mostrato nel bordo del messaggio
Tab / Shift-TabCicla il focus tra i pannelli
EscTorna alla lista / chiudi popup
/Apri la barra di ricerca
fApri il popup dei filtri di ricerca
n / NRisultato di ricerca successivo / precedente
SpaceContrassegna / rimuovi contrassegno dal messaggio
*Contrassegna / rimuovi contrassegno da tutti
sCicla la colonna di ordinamento (Data, Da, Oggetto, Dimensione)
SInverte la direzione di ordinamento
eEsporta messaggio (EML, TXT, CSV, Allegati)
aMostra gli allegati (j/k per navigare, Enter per salvare, A per salvare tutti)
tAttiva/disattiva la vista a thread (conversazioni)
lMostra / focalizza / nascondi la barra laterale delle etichette
hAttiva/disattiva gli header completi
rAttiva/disattiva il sorgente grezzo del messaggio
1 / 2 / 3Layout: solo lista / split orizzontale / split 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 (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

FormatoEstensioneDescrizione
MBOX (mboxrd/mboxo).mboxFormato standard. Google Takeout, Thunderbird, server Unix

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

CrateScopo
ratatui + crosstermInterfaccia terminale
mail-parserParsing MIME/RFC 5322
encoding_rsDecodifica dei charset
chronoDate e fusi orari
clapParsing degli argomenti CLI
serde + bincodeSerializzazione dell'indice
sha2Verifica dell'integrità dell'indice
lruCache dei messaggi decodificati
tracingLog strutturati

mboxshell è sviluppato in modo aperto ed è supportato da:

Colorvivo      Stackscale

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

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

Categorie