
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 Google 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, você recebe um ou mais arquivos .mbox que podem pesar dezenas de gigabytes — além de uma caixa de correio adicional para cada Grupo do Google que você possui, que é fácil de esquecer e pode ser maior que a própria exportação do Gmail. Não existe uma ferramenta de terminal multiplataforma que permita abrir, pesquisar e navegar nesses arquivos de forma eficiente sem carregá-los inteiramente na memória.
O mboxShell foi criado para resolver esse problema: abra um MBOX de 50 GB em segundos, navegue por centenas de milhares de mensagens sem problemas, pesquise por remetente, data ou conteúdo, e exporte o que você precisar. Tudo a partir do terminal, sem GUI, sem servidor, sem dependências externas.
Casos de uso
- Navegue em backups do Gmail (Google Takeout) com seus rótulos originais
- Leia os grupos que você possui, exportados pelo Takeout como caixas de correio próprias — geralmente os maiores arquivos do arquivo
- Analise arquivos de e-mail em servidores, durante migrações ou auditorias
- Pesquise mensagens em arquivos MBOX de qualquer fonte (Thunderbird, servidores Unix, etc.)
- Exporte mensagens para EML, CSV ou texto simples para processamento posterior
- Extraia anexos individualmente ou em lote
- Mescle vários arquivos MBOX em um só, removendo duplicatas
Também no Mac: mboxViewer
Se você prefere uma experiência gráfica nativa no macOS, confira 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 instantâneo a todas as suas mensagens, anexos e rótulos em uma janela limpa e nativa do macOS. Ideal para usuários que desejam o poder do mecanismo de análise do mboxShell com o conforto de uma GUI 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 olhada 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 um 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 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. - Caixas de correio do Google Groups. Lê os arquivos
topics.mboxque um arquivo do Takeout inclui para cada grupo que você possui, nomeando-os pelo grupo em vez do nome de arquivo sem sentido, exibe o grupo como um rótulo virtual e agrupa conversas pelo ID exatoX-GM-THRID. - 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 de conversas. Agrupa mensagens em tópicos usando o algoritmo JWZ (o mesmo usado pelo Netscape/Mozilla), ou o ID de conversa da própria caixa de correio quando ela possui um.
- Pesquisa avançada. Filtragem por campo específico (
from:,subject:,date:,body:,has:attachment,label:, etc.), intervalos de datas, filtros de tamanho, operadores AND/OR e negação. - Exportação flexível. Exportação individual ou em lote 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 pelo locale 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
# Ou coloque-o em um diretório local do usuário
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
Requisitos: Rust 1.85 ou posterior.
# Clonar e compilar
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release
# O binário está em target/release/mboxshell
# Instale-o em todo o sistema:
sudo cp target/release/mboxshell /usr/local/bin/
# Ou apenas para o usuário atual:
cp target/release/mboxshell ~/.local/bin/
Compilação cruzada para outras plataformas
# Adicione o alvo que você precisa
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
# Compile para um alvo específico
cargo build --release --target aarch64-apple-darwin
Instalar via Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Início rápido
# Abra um arquivo MBOX na interface de terminal
mboxshell mail.mbox
# Indexe e mostre estatísticas
mboxshell index mail.mbox
mboxshell stats mail.mbox
# Pesquise a partir da linha de comando
mboxshell search mail.mbox "from:[email protected] date:2024"
mboxshell search mail.mbox "has:attachment subject:invoice" --json
# Exporte mensagens
mboxshell export mail.mbox --format eml --output ./emails/
mboxshell export mail.mbox --format csv --output summary.csv
# Entregue apenas parte de um arquivo: uma nova caixa de correio apenas com as correspondências
mboxshell export mail.mbox --format mbox --query "from:[email protected]" -o handover.mbox
# Extraia anexos
mboxshell attachments mail.mbox --output ./attachments/
# Mescle vários arquivos MBOX (duplicatas são removidas por padrão)
mboxshell merge file1.mbox file2.mbox -o merged.mbox
# Mescle marcando cada mensagem com a caixa de correio de origem
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header
# Gere complementos de shell
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] | Abra um arquivo na TUI (ação padrão) |
mboxshell open <path> | Abra um arquivo MBOX na TUI |
mboxshell index <path> [-f/--force] | Construa ou reconstrua o índice binário |
mboxshell stats <path> [--json] | Mostre estatísticas sobre um arquivo MBOX |
mboxshell search <path> <query> [--json] | Pesquise mensagens a partir da linha de comando |
mboxshell export <path> -f <format> -o <output> [--query <q>] | Exporte mensagens (formatos: eml, csv, txt, html, mbox) |
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header] | Mescle vários arquivos MBOX em um só |
mboxshell attachments <path> -o <output> | Extraia todos os anexos |
mboxshell completions <shell> | Gere complementos de shell (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Gere uma página de manual |
Flags globais:
| Flag | Descrição |
|---|---|
-f, --force | Force a reconstrução do índice mesmo que um exista (em export, -f é --format — escreva --force por extenso ali) |
-v, --verbose | Aumente a verbosidade do log (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Force o idioma da interface (detectado automaticamente por padrão) |
Flags de mesclagem:
| Flag | Descrição |
|---|---|
--no-dedup | Pule a detecção de Message-ID duplicado e concatene as entradas byte a byte (a deduplicação está ativada por padrão) |
--source-header | Injete um cabeçalho X-Mbox-Source: <nome da caixa de correio> em cada mensagem, para que um arquivo mesclado permaneça rastreável até a caixa de correio de onde cada e-mail veio |
O rótulo de origem é o nome da caixa de correio 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 de correio que terminariam compartilhando um rótulo são diferenciadas entre si (Work/Inbox.mbox vs Personal/Inbox.mbox).
Interface de terminal

Atalhos de teclado
| Tecla | Ação |
|---|---|
j / k | Próxima / mensagem anterior |
g / G | Primeira / última mensagem |
PgDn / PgUp | Página para baixo / para cima |
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 de pesquisa anterior |
Space | Marcar / desmarcar mensagem |
* | Marcar / desmarcar todas |
s | Alternar coluna de ordenação (Data, De, Assunto, Tamanho) |
S | Alternar 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 tópicos (conversas) |
l | Mostrar / focar / ocultar barra lateral de rótulos |
h | Alternar cabeçalhos completos |
r | Alternar fonte bruta da mensagem |
1 / 2 / 3 | Layout: apenas lista / divisão horizontal / divisão vertical |
? | Ajuda |
q | Sair |
Sintaxe de pesquisa
from:[email protected] Pesquisar por remetente
to:[email protected] Pesquisar por destinatário
cc:[email protected] Pesquisar por destinatário em Cc
subject:invoice Pesquisar na linha de assunto
body:important text Pesquisar no corpo da mensagem (texto completo)
filename:report.pdf Pesquisar por nome de arquivo de anexo
id:<message-id@domain> Pesquisar por Message-ID
has:attachment Apenas mensagens com anexos
has:no-attachment Apenas mensagens sem anexos
label:Inbox Filtrar por rótulo do Gmail
date:2024-01 Mensagens de janeiro de 2024
date:2024-01-01..2024-06-30 Intervalo de datas
before:2024-06-01 Antes de uma data (esse dia excluído)
after:2024-01-01 A partir de uma data (esse dia incluído)
after:2024-01-01 before:2025-01-01 Todo o ano de 2024
size:>1mb Mensagens maiores que 1 MB
size:>1mb size:<5mb Entre 1 e 5 MB
-subject:spam Excluir mensagens com "spam" no assunto
"exact phrase" Pesquisar por uma frase exata
from:john subject:budget AND implícito (ambos devem corresponder)
term1 OR term2 OR explícito
from:a OR from:b subject:budget OR liga mais forte: (a OR b) AND subject
Formatos de entrada suportados
| Formato | Extensão | Descrição |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Formato padrão. Google Takeout, Thunderbird, servidores Unix |
| Exportação do Google Groups | topics.mbox | Dentro de um arquivo do Takeout, em <group>@googlegroups.com/. O nome do arquivo é localizado (temas.mbox, …), então a caixa de correio é nomeada pelo grupo — veja docs/GOOGLE-GROUPS.md |
| Pacote do Apple Mail | Name.mbox/mbox | O arquivo interno é o que é lido; a caixa de correio é nomeada pelo pacote |
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 com clap
+-- lib.rs # Reexportações de módulos
+-- error.rs # Tipos de erro com thiserror
+-- config.rs # Configuração TOML
+-- mailbox_naming.rs # Nomes de caixas de correio legíveis (pacotes do Apple Mail)
+-- i18n/ # Internacionalização (EN/ES)
+-- parser/
| +-- mbox.rs # Analisador de streaming (nunca carrega o arquivo na memória)
| +-- eml.rs # Analisador de arquivos EML individuais
| +-- mime.rs # Decodificação MIME, multipart, charsets
| +-- header.rs # Cabeçalhos RFC 5322, palavras codificadas RFC 2047
+-- index/
| +-- builder.rs # Construção do índice binário
| +-- reader.rs # Consultas ao índice
| +-- format.rs # Formato binário com verificação de integridade SHA-256
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Metadados de anexos
| +-- address.rs # Análise de endereços RFC 5322
+-- store/
| +-- reader.rs # Leitura baseada em deslocamento com cache LRU
+-- search/
| +-- query.rs # Analisador de consultas de pesquisa
| +-- metadata.rs # Pesquisa rápida no índice (O(n), < 200ms para 1M de mensagens)
| +-- fulltext.rs # Pesquisa de texto completo em streaming
+-- export/
| +-- eml.rs # Exportação para .eml
| +-- csv.rs # Exportação de resumo para CSV (BOM UTF-8)
| +-- text.rs # Exportação para texto simples
| +-- attachment.rs # Extração de anexos
| +-- mbox.rs # Mesclagem MBOX com deduplicação e cabeçalho de origem
+-- tui/
+-- app.rs # Estado global (Arquitetura Elm)
+-- event.rs # Tratamento de eventos de teclado
+-- ui.rs # Layout e despacho de renderização
+-- threading.rs # Algoritmo JWZ para tópicos de conversa
+-- theme.rs # Tema de cores
+-- widgets/ # Componentes visuais
+-- mail_list.rs # Lista com rolagem virtual
+-- mail_view.rs # Visualizador de mensagens com rolagem
+-- sidebar.rs # Painel de rótulos/pastas
+-- header_bar.rs # Barra superior
+-- status_bar.rs # Barra de status
+-- search_bar.rs # Barra de pesquisa
+-- search_popup.rs # Popup de filtro de pesquisa
+-- help_popup.rs # Popup de ajuda
+-- attachment_popup.rs # Popup de anexos
+-- export_popup.rs # Popup de exportação
Dependências principais
| 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 da 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 em código aberto e é apoiado por:
- Colorvivo — especialistas em WordPress, IA e mídia digital.
- Stackscale — especialistas em infraestrutura de nuvem privada.
Se sua empresa considera o mboxshell útil e deseja apoiar seu desenvolvimento contínuo, veja .github/FUNDING.yml ou entre em contato via carrero.es.
Documentação
O manual completo do usuário 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 de usuario (Español)
Registro de alterações
Veja CHANGELOG.md para 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