Torna agli aggiornamenti
New releaseSep 5, 2026

mboxshell v0.7.3

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 dai 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 di posta aggiuntiva per ogni Google Group che possiedi, che è facile da dimenticare e può essere più grande dell'esportazione di Gmail stessa. Non esiste uno strumento terminale multipiattaforma che ti permetta di aprire, cercare e sfogliare quei file in modo efficiente senza caricarli interamente in memoria.

mboxShell è stato creato per risolvere questo problema: aprire un MBOX da 50 GB in pochi secondi, navigare centinaia di migliaia di messaggi senza problemi, cercare per mittente, data o contenuto, ed esportare ciò di cui hai bisogno. 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
  • Leggi i gruppi che possiedi, esportati da Takeout come caselle di posta proprie — spesso i file più grandi dell'archivio
  • Analizza archivi di posta su server, durante migrazioni o audit
  • Cerca messaggi in file MBOX 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. Fornisce un'interfaccia familiare in stile casella di posta per aprire, sfogliare 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 nativa macOS pulita. Ideale per gli utenti che desiderano 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 visualizza i 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.

Funzionalità

  • Non carica mai il file in memoria. Utilizza 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 risiede in memoria).
  • Indicizzazione persistente. La prima apertura crea un indice binario (.mboxshell.idx) così le aperture successive richiedono meno di un secondo.
  • Supporto completo per Gmail. Rileva e visualizza X-Gmail-Labels come cartelle virtuali in un pannello laterale, permettendoti di filtrare per Inbox, Sent, Starred, etichette personalizzate, ecc.
  • Caselle di posta Google Groups. Legge i file topics.mbox che un archivio Takeout include per ogni gruppo che possiedi, li rinomina con il nome del gruppo invece del nome file senza significato, mostra il gruppo come etichetta virtuale e raggruppa le conversazioni tramite l'id esatto X-GM-THRID.
  • 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.
  • Threading delle conversazioni. Raggruppa i messaggi in thread usando l'algoritmo JWZ (lo stesso usato da Netscape/Mozilla), o l'id di conversazione proprio della casella di posta quando ne ha uno.
  • Ricerca avanzata. Filtro per campo specifico (from:, subject:, date:, body:, has:attachment, label:, ecc.), intervalli di date, filtri per dimensione, operatori AND/OR e negazione.
  • Esportazione flessibile. Esportazione individuale o in blocco in EML, CSV (compatibile con Excel), testo semplice. Estrazione di allegati decodificati.
  • Binario singolo. 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 locale 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

# Or place it in a user-local directory
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.

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

Cross-compilazione per altre piattaforme

# 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

Installazione tramite Cargo

cargo install --git https://github.com/dcarrero/mboxshell.git

Avvio rapido

# 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

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]Crea o ricrea 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
mboxshell attachments <path> -o <output>Estrae tutti gli allegati
mboxshell completions <shell>Genera i completamenti della shell (bash, zsh, fish, powershell, elvish)
mboxshell manpageGenera una pagina man

Flag globali:

FlagDescrizione
-f, --forceForza la ricostruzione dell'indice anche se ne esiste uno (in export, -f è --format — scrivi esplicitamente --force lì)
-v, --verboseAumenta la verbosità del 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 header X-Mbox-Source: <mailbox name> in ogni messaggio, così un archivio unito rimane tracciabile fino alla casella di posta da cui proviene ogni email

L'etichetta di origine è il nome della casella di posta che vedi: per un'esportazione di Apple Mail — una directory Inbox.mbox contenente un file letteralmente chiamato mbox — legge Inbox.mbox, non mbox. Le caselle di posta 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) 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 del filtro di ricerca
n / NRisultato di ricerca successivo / precedente
SpaceContrassegna / deseleziona messaggio
*Contrassegna / deseleziona tutti
sCicla la colonna di ordinamento (Date, From, Subject, Size)
SInverti la direzione di ordinamento
eEsporta messaggio (EML, TXT, CSV, Attachments)
aMostra allegati (j/k per navigare, Enter per salvare, A per salvare tutti)
tAttiva/disattiva la vista threaded (conversazione)
lMostra / metti a fuoco / 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]              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

Formati di input supportati

FormatoEstensioneDescrizione
MBOX (mboxrd/mboxo).mboxFormato standard. Google Takeout, Thunderbird, server Unix
Esportazione Google Groupstopics.mboxAll'interno di un archivio Takeout, in <group>@googlegroups.com/. Il nome del file è localizzato (temas.mbox, …), quindi la casella di posta viene nominata con il nome del gruppo — vedi docs/GOOGLE-GROUPS.md
Pacchetto Apple MailName.mbox/mboxIl file interno è quello che viene letto; la casella di posta viene nominata con il nome del 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 nella lista 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 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

Dipendenze principali

CrateScopo
ratatui + crosstermInterfaccia terminale
mail-parserParsing MIME/RFC 5322
encoding_rsDecodifica charset
chronoDate e fusi orari
clapParsing degli argomenti CLI
serde + bincodeSerializzazione dell'indice
sha2Verifica dell'integrità dell'indice
lruCache dei 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 infrastrutture cloud private.

Se la tua azienda trova mboxshell utile e vuole supportarne lo sviluppo continuo, vedi .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