
mboxshell v0.6.2
mboxShell. Visor de terminal rápido para archivos MBOX de cualquier tamaño. Abre, busca y exporta correos electrónicos de copias de seguridad de Gmail Takeout (50 GB+) sin cargarlos en la memoria. Construido en Rust.
mboxShell
Visor rapido de terminal para archivos MBOX de cualquier tamano. Abre, busca y exporta correos de backups Gmail Takeout (50 GB+) sin cargarlos en memoria.
Por que existe este proyecto
Cuando exportas tu correo de Gmail con Google Takeout, recibes uno o varios archivos .mbox que pueden pesar decenas de gigabytes. No existe una herramienta de terminal multiplataforma que permita abrir, buscar y consultar esos archivos de forma eficiente sin cargarlos enteros en memoria.
mboxShell nacio para resolver ese problema: abrir un MBOX de 50 GB en segundos, navegar entre cientos de miles de mensajes con fluidez, buscar por remitente, fecha o contenido, y exportar lo que necesites. Todo desde la terminal, sin interfaz grafica, sin servidor, sin dependencias externas.
Casos de uso
- Consultar backups de Gmail (Google Takeout) con sus etiquetas originales
- Analizar archivos de correo en servidores, migraciones o auditorias
- Buscar mensajes en archivos MBOX de cualquier origen (Thunderbird, servidores Unix, etc.)
- Exportar mensajes a EML, CSV o texto plano para procesamiento posterior
- Extraer adjuntos de forma masiva o individual
- Combinar varios MBOX en uno solo, eliminando duplicados
Tambien en Mac: mboxViewer
Si prefieres una experiencia grafica nativa en macOS, echa un vistazo a mboxViewer — una app nativa para Mac creada por el mismo equipo. Ofrece una interfaz de buzon de correo familiar para abrir, explorar y buscar archivos MBOX sin necesidad de importarlos en un cliente de correo. Arrastra tu archivo .mbox y tendras acceso instantaneo a todos tus mensajes, adjuntos y etiquetas en una ventana nativa de macOS. Ideal para quienes quieren la potencia del motor de parsing de mboxShell con la comodidad de una interfaz de escritorio.
Tambien en el navegador: Online Mbox Viewer
¿Solo necesitas echar un vistazo a un archivo MBOX sin instalar nada? Prueba Online Mbox Viewer — una app web gratuita y con licencia MIT del mismo autor. Abre y muestra archivos .mbox por completo en tu navegador: no se sube nada a ningun servidor, asi que tu correo nunca sale de tu equipo. Perfecto para una consulta rapida desde cualquier dispositivo. Codigo fuente en github.com/dcarrero/online-mbox-viewer.
Caracteristicas
- No carga el archivo en memoria. Usa lectura streaming con buffer de 1 MB. Un MBOX de 100 GB consume los mismos ~500 MB de RAM que uno de 1 GB (solo el indice de metadatos vive en memoria).
- Indexacion persistente. La primera apertura crea un indice binario (
.mboxshell.idx) que permite abrir el archivo en menos de un segundo en sucesivas ejecuciones. - Soporte completo de Gmail. Detecta y muestra las etiquetas de
X-Gmail-Labelscomo carpetas virtuales en un panel lateral, permitiendo filtrar por Inbox, Sent, Starred, etiquetas personalizadas, etc. - Codificaciones correctas. Decodifica encoded-words (RFC 2047), soporta UTF-8, ISO-8859-1, Windows-1252, KOI8-R y cualquier charset reconocido por
encoding_rs. - Vista de conversaciones. Agrupa mensajes en hilos usando el algoritmo JWZ (el mismo que usaba Netscape/Mozilla).
- Busqueda avanzada. Filtrado por campo (
from:,subject:,date:,body:,has:attachment,label:, etc.), rangos de fechas, tamano, operadores AND/OR y negacion. - Exportacion flexible. Mensajes individuales o en masa a EML, CSV (compatible Excel), texto plano. Extraccion de adjuntos decodificados.
- Binario unico. Sin runtime, sin dependencias. Un ejecutable de ~5 MB que funciona en Linux, macOS y Windows.
- Interfaz de terminal completa. Navegacion con teclado (estilo vi), tres modos de layout, barra de busqueda interactiva, atajos configurables.
- Bilingue. Interfaz disponible en ingles y espanol, deteccion automatica del idioma del sistema.
Instalacion
Binarios precompilados (recomendado)
Descarga la ultima version para tu plataforma desde la pagina de Releases:
| Plataforma | Binario |
|---|---|
| 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 |
Tras descargar, dale permisos de ejecucion y muevelo a tu PATH:
# Linux / macOS
chmod +x mboxshell-*
sudo mv mboxshell-* /usr/local/bin/mboxshell
# O colocalo en un directorio local de usuario
mv mboxshell-* ~/.local/bin/mboxshell
En Windows, mueve mboxshell-windows-x86_64.exe a una carpeta en tu PATH, o ejecutalo directamente.
Compilar desde el codigo fuente
Requisitos: Rust 1.85 o superior.
# Clonar y compilar
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release
# El binario esta en target/release/mboxshell
# Instalar a nivel de sistema:
sudo cp target/release/mboxshell /usr/local/bin/
# O solo para el usuario actual:
cp target/release/mboxshell ~/.local/bin/
Compilacion cruzada para otras plataformas
# Anadir el target que necesites
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
# Compilar para un target especifico
cargo build --release --target aarch64-apple-darwin
Instalar via Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Uso rapido
# Abrir un archivo MBOX en la interfaz de terminal
mboxshell correo.mbox
# Indexar y ver estadisticas
mboxshell index correo.mbox
mboxshell stats correo.mbox
# Buscar mensajes desde la linea de comandos
mboxshell search correo.mbox "from:[email protected] date:2024"
mboxshell search correo.mbox "has:attachment subject:factura" --json
# Exportar mensajes
mboxshell export correo.mbox --format eml --output ./emails/
mboxshell export correo.mbox --format csv --output resumen.csv
# Extraer adjuntos
mboxshell attachments correo.mbox --output ./adjuntos/
# Combinar varios MBOX eliminando duplicados
mboxshell merge archivo1.mbox archivo2.mbox -o combinado.mbox --dedup
# Generar completions para tu shell
mboxshell completions bash > /etc/bash_completion.d/mboxshell
mboxshell completions zsh > ~/.zfunc/_mboxshell
mboxshell completions fish > ~/.config/fish/completions/mboxshell.fish
Comandos CLI
| Comando | Descripcion |
|---|---|
mboxshell [ARCHIVO] | Abrir en la interfaz de terminal (accion por defecto) |
mboxshell open <ruta> | Abrir un fichero MBOX en la TUI |
mboxshell index <ruta> [-f/--force] | Construir o reconstruir el indice binario |
mboxshell stats <ruta> [--json] | Mostrar estadisticas de un archivo MBOX |
mboxshell search <ruta> <consulta> [--json] | Buscar mensajes desde la linea de comandos |
mboxshell export <ruta> -f <formato> -o <salida> [--query <q>] | Exportar mensajes (formatos: eml, csv, txt, html) |
mboxshell merge <archivos...> -o <salida> [--dedup] | Combinar varios archivos MBOX en uno |
mboxshell attachments <ruta> -o <salida> | Extraer todos los adjuntos |
mboxshell completions <shell> | Generar completions de shell (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Generar pagina de manual |
Flags globales:
| Flag | Descripcion |
|---|---|
-f, --force | Forzar reconstruccion del indice aunque exista |
-v, --verbose | Aumentar verbosidad del log (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Forzar idioma de la interfaz (auto-detectado por defecto) |
Interfaz de terminal

Atajos de teclado
| Tecla | Accion |
|---|---|
j / k | Mensaje siguiente / anterior |
g / G | Primer / ultimo mensaje |
PgDn / PgUp | Pagina abajo / arriba |
Enter | Abrir mensaje / cambiar a vista de mensaje |
Shift-↑ / Shift-↓ | Scroll del cuerpo del mensaje (mantiene foco en lista); un indicador de posición (Inicio / NN% / Fin) aparece en el borde del mensaje |
Tab / Shift-Tab | Cambiar panel |
Esc | Volver a la lista / cerrar popup |
/ | Abrir barra de busqueda |
f | Abrir popup de filtros de busqueda |
n / N | Siguiente / anterior resultado de busqueda |
Space | Marcar / desmarcar mensaje |
* | Marcar / desmarcar todos |
s | Cambiar columna de ordenacion (Fecha, De, Asunto, Tamano) |
S | Invertir direccion de ordenacion |
e | Exportar mensaje (EML, TXT, CSV, Adjuntos) |
a | Ver adjuntos (j/k para navegar, Enter para guardar, A para guardar todos) |
t | Alternar vista de conversaciones (threads) |
l | Mostrar / enfocar / ocultar panel de etiquetas |
h | Mostrar todos los headers |
r | Mostrar mensaje en formato raw |
1 / 2 / 3 | Layout: solo lista / horizontal / vertical |
? | Ayuda |
q | Salir |
Sintaxis de busqueda
from:[email protected] Buscar por remitente
to:[email protected] Buscar por destinatario
cc:[email protected] Buscar por destinatario en copia (Cc)
subject:factura Buscar en el asunto
body:texto importante Buscar en el cuerpo del mensaje
filename:informe.pdf Buscar por nombre de adjunto
id:<message-id@dominio> Buscar por Message-ID
has:attachment Solo mensajes con adjuntos
has:no-attachment Solo mensajes sin adjuntos
label:Inbox Filtrar por etiqueta de Gmail
date:2024-01 Mensajes de enero 2024
date:2024-01-01..2024-06-30 Rango de fechas
before:2024-06-01 Antes de una fecha
after:2024-01-01 Despues de una fecha
size:>1mb Mensajes de mas de 1 MB
-subject:spam Excluir mensajes con "spam"
"frase exacta" Buscar frase completa
from:juan subject:presupuesto AND implicito (ambos deben coincidir)
term1 OR term2 OR explicito
Formatos de entrada soportados
| Formato | Extension | Descripcion |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Formato estandar. Google Takeout, Thunderbird, servidores Unix |
Rendimiento
Probado con archivos MBOX reales de Google Takeout:
| Tamano del archivo | Mensajes | Indexacion | Re-apertura |
|---|---|---|---|
| 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 navegacion por la lista de mensajes es instantanea gracias al virtual scrolling (solo se renderizan las filas visibles).
Configuracion
El archivo de configuracion se ubica en ~/.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 = ","
Arquitectura
src/
+-- main.rs # CLI con clap
+-- lib.rs # Re-exporta modulos
+-- error.rs # Tipos de error con thiserror
+-- config.rs # Configuracion TOML
+-- i18n/ # Internacionalizacion (EN/ES)
+-- parser/
| +-- mbox.rs # Parser streaming (nunca carga el archivo en memoria)
| +-- eml.rs # Parser de archivos EML individuales
| +-- mime.rs # Decodificacion MIME, multipart, charsets
| +-- header.rs # Headers RFC 5322, encoded-words RFC 2047
+-- index/
| +-- builder.rs # Construccion del indice binario
| +-- reader.rs # Consulta del indice
| +-- format.rs # Formato binario con verificacion SHA-256
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Metadatos de adjuntos
| +-- address.rs # Parsing de direcciones RFC 5322
+-- store/
| +-- reader.rs # Lectura por offset con cache LRU
+-- search/
| +-- query.rs # Parser de queries de busqueda
| +-- metadata.rs # Busqueda rapida en indice (O(n), < 200ms para 1M msgs)
| +-- fulltext.rs # Busqueda full-text streaming
+-- export/
| +-- eml.rs # Exportar a .eml
| +-- csv.rs # Exportar resumen a CSV (UTF-8 BOM)
| +-- text.rs # Exportar a texto plano
| +-- attachment.rs # Extraccion de adjuntos
| +-- mbox.rs # Merge de MBOX con deduplicacion
+-- tui/
+-- app.rs # Estado global (Elm Architecture)
+-- event.rs # Manejo de eventos de teclado
+-- ui.rs # Layout y dispatch de renderizado
+-- threading.rs # Algoritmo JWZ para hilos de conversacion
+-- theme.rs # Tema de colores
+-- widgets/ # Componentes visuales
+-- mail_list.rs # Lista con virtual scrolling
+-- mail_view.rs # Visor de mensaje con scroll
+-- sidebar.rs # Panel de etiquetas/carpetas
+-- header_bar.rs # Barra superior
+-- status_bar.rs # Barra de estado
+-- search_bar.rs # Barra de busqueda
+-- search_popup.rs # Popup de filtros de busqueda
+-- help_popup.rs # Popup de ayuda
+-- attachment_popup.rs # Popup de adjuntos
+-- export_popup.rs # Popup de exportacion
Dependencias principales
| Crate | Uso |
|---|---|
ratatui + crossterm | Interfaz de terminal |
mail-parser | Parsing MIME/RFC 5322 |
encoding_rs | Decodificacion de charsets |
chrono | Fechas y zonas horarias |
clap | Linea de comandos |
serde + bincode | Serializacion del indice |
sha2 | Integridad del indice |
lru | Cache de mensajes decodificados |
tracing | Logging estructurado |
Patrocinadores
mboxshell se desarrolla en abierto y cuenta con el apoyo de:
- Colorvivo — expertos en WordPress, IA y medios de comunicación.
- Stackscale — expertos en infraestructura cloud privado.
Si tu empresa usa mboxshell y quiere apoyar su desarrollo, consulta .github/FUNDING.yml o escribe a través de carrero.es.
Documentación
El manual de usuario completo cubre todos los comandos, atajos de teclado, operadores de búsqueda, opciones de exportación y claves de configuración:
- docs/MANUAL-ES.md — Manual de usuario (Español)
- docs/MANUAL.md — User manual (English)
Changelog
Consulta CHANGELOG-ES.md (English: CHANGELOG.md) para el historial completo de versiones.
Licencia
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Codigo fuente: https://github.com/dcarrero/mboxshell