
mboxshell v0.6.2
mboxShell. Visualizador de terminal rápido para arquivos MBOX de qualquer tamanho. Abra, pesquise e exporte e-mails de backups do Gmail Takeout (50GB+) sem carregá-los na memória. Criado em Rust.
mboxShell
Visualizador de terminal rápido para arquivos MBOX de qualquer tamanho. Abra, pesquise e exporte e-mails de backups do Gmail Takeout (50 GB+) sem carregá-los na memória.
Por que este projeto existe
Quando você exporta seu e-mail do Gmail usando o Google Takeout, obtém um ou mais arquivos .mbox que podem pesar dezenas de gigabytes. Não existe uma ferramenta de terminal multiplataforma que permita abrir, pesquisar e navegar nesses arquivos com eficiência sem carregá-los inteiramente na memória.
O mboxShell foi criado para resolver esse problema: abrir um MBOX de 50 GB em segundos, navegar por centenas de milhares de mensagens com fluidez, pesquisar por remetente, data ou conteúdo e exportar o que você precisar. Tudo a partir do terminal, sem interface gráfica, sem servidor, sem dependências externas.
Casos de uso
- Navegar em backups do Gmail (Google Takeout) com os rótulos originais
- Analisar arquivos de e-mail em servidores, durante migrações ou auditorias
- Pesquisar mensagens em arquivos MBOX de qualquer origem (Thunderbird, servidores Unix, etc.)
- Exportar mensagens para EML, CSV ou texto simples para processamento posterior
- Extrair anexos individualmente ou em massa
- Mesclar vários arquivos MBOX em um só, removendo duplicatas
Também no Mac: mboxViewer
Se você preferir uma experiência gráfica nativa no macOS, conheça o mboxViewer — um aplicativo Mac nativo criado pela mesma equipe. Ele oferece uma interface familiar no estilo de caixa de correio para abrir, navegar e pesquisar arquivos MBOX sem nunca importá-los para um cliente de e-mail. Arraste e solte seu arquivo .mbox e você terá acesso imediato a todas as suas mensagens, anexos e rótulos em uma janela limpa e nativa do macOS. Ideal para usuários que desejam a potência do mecanismo de análise do mboxShell com o conforto de uma interface gráfica desktop.
Também no seu navegador: Online Mbox Viewer
Precisa dar uma olhada em um arquivo MBOX sem instalar nada? Experimente o Online Mbox Viewer — um aplicativo web gratuito, licenciado sob MIT, do mesmo autor. Ele abre e renderiza arquivos .mbox inteiramente no seu navegador: nada é enviado para nenhum servidor, então seu e-mail permanece na sua máquina. Perfeito para uma consulta rápida de qualquer dispositivo. Código-fonte em github.com/dcarrero/online-mbox-viewer.
Recursos
- Nunca carrega o arquivo na memória. Usa I/O de streaming com buffer de 1 MB. Um MBOX de 100 GB usa aproximadamente os mesmos ~500 MB de RAM que um de 1 GB (apenas o índice de metadados fica na memória).
- Indexação persistente. A primeira abertura cria um índice binário (
.mboxshell.idx) para que as aberturas subsequentes levem menos de um segundo. - Suporte completo ao Gmail. Detecta e exibe
X-Gmail-Labelscomo pastas virtuais em um painel lateral, permitindo filtrar por Caixa de entrada, Enviados, Com estrela, rótulos personalizados, etc. - Codificações corretas. Decodifica palavras codificadas RFC 2047, suporta UTF-8, ISO-8859-1, Windows-1252, KOI8-R e qualquer charset reconhecido pelo
encoding_rs. - Agrupamento por conversas. Agrupa mensagens em threads usando o algoritmo JWZ (o mesmo usado pela Netscape/Mozilla).
- Pesquisa avançada. Filtragem por campos específicos (
from:,subject:,date:,body:,has:attachment,label:, etc.), intervalos de datas, filtros de tamanho, operadores E/OU e negação. - Exportação flexível. Exportação individual ou em massa para EML, CSV (compatível com Excel), texto simples. Extração de anexos decodificados.
- Binário único. Sem runtime, sem dependências. Um executável de ~5 MB que roda em Linux, macOS e Windows.
- Interface de terminal completa. Navegação por teclado (estilo vi), três modos de layout, barra de pesquisa interativa, atalhos configuráveis.
- Bilíngue. Interface disponível em inglês e espanhol, detectada automaticamente a partir do idioma do sistema.
Instalação
Binários pré-compilados (recomendado)
Baixe a versão mais recente para sua plataforma na página de Releases:
| Plataforma | Binário |
|---|---|
| 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 |
Após o download, torne-o executável e mova-o para o seu 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
No Windows, mova mboxshell-windows-x86_64.exe para uma pasta no seu PATH ou execute-o diretamente.
Compilar a partir do código-fonte
Pré-requisitos: Rust 1.85 ou posterior.
# 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/
Compilação cruzada para outras plataformas
# 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
Instalar via Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Início rápido
# 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
# 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
Comandos da CLI
| Comando | Descrição |
|---|---|
mboxshell [FILE] | Abrir um arquivo na TUI (ação padrão) |
mboxshell open <path> | Abrir um arquivo MBOX na TUI |
mboxshell index <path> [-f/--force] | Construir ou reconstruir o índice binário |
mboxshell stats <path> [--json] | Mostrar estatísticas sobre um arquivo MBOX |
mboxshell search <path> <query> [--json] | Pesquisar mensagens pela linha de comando |
mboxshell export <path> -f <format> -o <output> [--query <q>] | Exportar mensagens (formatos: eml, csv, txt, html) |
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header] | Mesclar vários arquivos MBOX em um só |
mboxshell attachments <path> -o <output> | Extrair todos os anexos |
mboxshell completions <shell> | Gerar completions de shell (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Gerar uma página de manual |
Flags globais:
| Flag | Descrição |
|---|---|
-f, --force | Forçar a reconstrução do índice mesmo que um já exista |
-v, --verbose | Aumentar a verbosidade do log (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Forçar o idioma da interface (detectado automaticamente por padrão) |
Flags de mesclagem:
| Flag | Descrição |
|---|---|
--no-dedup | Pular a detecção de Message-ID duplicado e concatenar as entradas byte a byte (deduplicação ativada por padrão) |
--source-header | Injetar um cabeçalho X-Mbox-Source: <nome da caixa postal> em cada mensagem, para que um arquivo mesclado permaneça rastreável até a caixa postal de origem de cada e-mail |
O rótulo de origem é o nome da caixa postal que você vê: para uma exportação do Apple Mail — um diretório Inbox.mbox contendo um arquivo literalmente chamado mbox — ele lê Inbox.mbox, não mbox. Caixas postais que terminariam compartilhando um rótulo são diferenciadas entre si (Work/Inbox.mbox vs Personal/Inbox.mbox).
Interface do terminal

Atalhos de teclado
| Tecla | Ação |
|---|---|
j / k | Próxima / mensagem anterior |
g / G | Primeira / última mensagem |
PgDn / PgUp | Página seguinte / anterior |
Enter | Abrir mensagem / alternar para a visualização de mensagem |
Shift-↑ / Shift-↓ | Rolar o corpo da mensagem selecionada (mantém o foco na lista); um indicador de posição (Top / NN% / Bot) aparece na borda da mensagem |
Tab / Shift-Tab | Alternar o foco do painel |
Esc | Voltar para a lista / fechar popup |
/ | Abrir barra de pesquisa |
f | Abrir popup de filtro de pesquisa |
n / N | Próximo / resultado anterior da pesquisa |
Space | Marcar / desmarcar mensagem |
* | Marcar / desmarcar todas |
s | Alternar coluna de ordenação (Data, De, Assunto, Tamanho) |
S | Alternar a direção da ordenação |
e | Exportar mensagem (EML, TXT, CSV, Anexos) |
a | Mostrar anexos (j/k para navegar, Enter para salvar, A para salvar todos) |
t | Alternar visualização em threads (conversas) |
l | Mostrar / focar / ocultar a barra lateral de rótulos |
h | Alternar cabeçalhos completos |
r | Alternar fonte bruta da mensagem |
1 / 2 / 3 | Layout: somente lista / divisão horizontal / divisão vertical |
? | Ajuda |
q | Sair |
Sintaxe de pesquisa
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
after:2024-01-01 After a date
size:>1mb Messages larger than 1 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
Formatos de entrada suportados
| Formato | Extensão | Descrição |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Formato padrão. Google Takeout, Thunderbird, servidores Unix |
Desempenho
Testado com arquivos MBOX reais do Google Takeout:
| Tamanho do arquivo | Mensagens | Indexação | Reabertura |
|---|---|---|---|
| 500 MB | ~5.000 | ~3 s | < 1 s |
| 5 GB | ~50.000 | ~30 s | < 1 s |
| 50 GB | ~500.000 | ~5 min | < 1 s |
A navegação na lista de mensagens é instantânea graças à rolagem virtual (apenas as linhas visíveis são renderizadas).
Configuração
O arquivo de configuração está localizado em ~/.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 = ","
Arquitetura
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
Principais dependências
| Crate | Finalidade |
|---|---|
ratatui + crossterm | Interface de terminal |
mail-parser | Análise MIME/RFC 5322 |
encoding_rs | Decodificação de charsets |
chrono | Datas e fusos horários |
clap | Análise de argumentos de CLI |
serde + bincode | Serialização do índice |
sha2 | Verificação de integridade do índice |
lru | Cache de mensagens decodificadas |
tracing | Registro estruturado |
Patrocinadores
O mboxshell é desenvolvido de forma aberta e é apoiado por:
- Colorvivo — especialistas em WordPress, IA e mídia digital.
- Stackscale — especialistas em infraestrutura de nuvem privada.
Se a sua empresa considera o mboxshell útil e quiser apoiar seu desenvolvimento contínuo, veja .github/FUNDING.yml ou entre em contato pelo carrero.es.
Documentação
O manual do usuário completo cobre todos os comandos, atalhos de teclado, operadores de pesquisa, opções de exportação e chaves de configuração:
- docs/MANUAL.md — Manual do usuário (Inglês)
- docs/MANUAL-ES.md — Manual do usuário (Espanhol)
Histórico de versões
Consulte CHANGELOG.md para ver o histórico completo de versões.
Licença
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Código-fonte: https://github.com/dcarrero/mboxshell