
mboxShell. Быстрый терминальный просмотрщик файлов MBOX любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50GB+) без загрузки их в память. Написан на Rust.
Быстрый терминальный просмотрщик MBOX-файлов любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Google Takeout (50 ГБ+) без загрузки их в память.
Когда вы экспортируете свою почту из Gmail с помощью Google Takeout, вы получаете один или несколько файлов .mbox, которые могут весить десятки гигабайт. Не существует кроссплатформенного терминального инструмента, который позволял бы открывать, искать и просматривать такие файлы эффективно, не загружая их целиком в память.
mboxShell был создан для решения этой проблемы: открывайте MBOX на 50 ГБ за секунды, плавно перемещайтесь по сотням тысяч сообщений, ищите по отправителю, дате или содержимому и экспортируйте всё, что нужно. Всё из терминала, без графического интерфейса, без сервера, без внешних зависимостей.
Если вы предпочитаете нативный графический интерфейс на macOS, обратите внимание на mboxViewer — нативное приложение для Mac, созданное той же командой. Оно предоставляет привычный интерфейс в стиле почтового ящика для открытия, просмотра и поиска по MBOX-файлам без их импорта в почтовый клиент. Перетащите ваш файл .mbox, и вы получите мгновенный доступ ко всем сообщениям, вложениям и меткам в чистом нативном окне macOS. Идеально для пользователей, которым нужна мощь парсера mboxShell с удобством настольного GUI.
Нужно быстро взглянуть на MBOX-файл без установки чего-либо? Попробуйте Online Mbox Viewer — бесплатное веб-приложение под лицензией MIT от того же автора. Оно открывает и отображает файлы .mbox полностью в браузере: ничего не загружается на сервер, поэтому ваша почта остаётся на вашей машине. Отлично подходит для быстрого просмотра с любого устройства. Исходный код на github.com/dcarrero/online-mbox-viewer.
.mboxshell.idx), поэтому последующие открытия занимают меньше секунды.X-Gmail-Labels как виртуальные папки на боковой панели, позволяя фильтровать по «Входящие», «Отправленные», «С пометкой звезда», пользовательским меткам и т. д.encoding_rs.from:, subject:, date:, body:, has:attachment, label: и т. д.), диапазоны дат, фильтры размера, операторы И/ИЛИ и отрицание.Скачайте последний релиз для вашей платформы со страницы Releases:
После загрузки сделайте файл исполняемым и переместите его в 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
В Windows переместите mboxshell-windows-x86_64.exe в папку из вашего PATH или запускайте его напрямую.
Требования: Rust 1.85 или новее.
# 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/
# 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
cargo install --git https://github.com/dcarrero/mboxshell.git
# 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
Глобальные флаги:
| Флаг | Описание |
|---|---|
-f, --force | Принудительно пересоздать индекс, даже если он существует |
-v, |
Флаги объединения:
| Флаг | Описание |
|---|---|
--no-dedup | Пропустить обнаружение дубликатов Message-ID и объединить входные файлы побайтово (дедупликация включена по умолчанию) |
--source-header | Внедрять заголовок X-Mbox-Source: <имя почтового ящика> в каждое сообщение, чтобы объединённый архив оставался прослеживаемым до почтового ящика, из которого пришло каждое письмо |
Метка источника — это имя почтового ящика, которое вы видите: для экспорта Apple Mail — каталог Inbox.mbox, содержащий файл, буквально называющийся mbox — отображается Inbox.mbox, а не mbox. Почтовые ящики, которые иначе получили бы одинаковую метку, различаются между собой (Work/Inbox.mbox против Personal/Inbox.mbox).

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
| Формат | Расширение | Описание |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Стандартный формат. Google Takeout, Thunderbird, Unix-серверы |
Протестировано на реальных MBOX-файлах Google Takeout:
Навигация по списку сообщений мгновенная благодаря виртуальной прокрутке (отображаются только видимые строки).
Файл конфигурации находится по пути ~/.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 = ","
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
mboxshell разрабатывается открыто и поддерживается:
Если ваша компания находит mboxshell полезным и хочет поддержать его дальнейшее развитие, обратитесь к .github/FUNDING.yml или свяжитесь через carrero.es.
Полное руководство пользователя охватывает все команды, сочетания клавиш, поисковые операторы, параметры экспорта и ключи конфигурации:
Полную историю релизов см. в CHANGELOG.md.
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Исходный код: https://github.com/dcarrero/mboxshell
| Платформа | Бинарный файл |
|---|
| 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 |
| Команда | Описание |
|---|
mboxshell [FILE] | Открыть файл в TUI (действие по умолчанию) |
mboxshell open <path> | Открыть MBOX-файл в TUI |
mboxshell index <path> [-f/--force] | Создать или пересоздать двоичный индекс |
mboxshell stats <path> [--json] | Показать статистику по MBOX-файлу |
mboxshell search <path> <query> [--json] | Искать сообщения из командной строки |
mboxshell export <path> -f <format> -o <output> [--query <q>] | Экспортировать сообщения (форматы: eml, csv, txt, html) |
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header] | Объединить несколько MBOX-файлов в один |
mboxshell attachments <path> -o <output> | Извлечь все вложения |
mboxshell completions <shell> | Сгенерировать автодополнения для оболочки (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Сгенерировать man-страницу |
--verbose| Повысить подробность журнала (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Принудительно задать язык интерфейса (по умолчанию определяется автоматически) |
| Клавиша | Действие |
|---|
j / k | Следующее / предыдущее сообщение |
g / G | Первое / последнее сообщение |
PgDn / PgUp | Страница вниз / вверх |
Enter | Открыть сообщение / переключиться в режим просмотра сообщения |
Shift-↑ / Shift-↓ | Прокрутка тела выбранного сообщения (фокус списка сохраняется); индикатор позиции (Top / NN% / Bot) отображается в рамке сообщения |
Tab / Shift-Tab | Переключение фокуса панелей |
Esc | Назад к списку / закрыть всплывающее окно |
/ | Открыть поисковую строку |
f | Открыть всплывающее окно фильтра поиска |
n / N | Следующий / предыдущий результат поиска |
Space | Пометить / снять пометку с сообщения |
* | Пометить / снять пометку со всех |
s | Переключение столбца сортировки (Дата, Отправитель, Тема, Размер) |
S | Изменить направление сортировки |
e | Экспортировать сообщение (EML, TXT, CSV, вложения) |
a | Показать вложения (j/k для навигации, Enter для сохранения, A для сохранения всех) |
t | Переключить режим бесед (тредов) |
l | Показать / сфокусировать / скрыть боковую панель меток |
h | Переключить полные заголовки |
r | Переключить исходный текст сообщения |
1 / 2 / 3 | Раскладка: только список / горизонтальное разделение / вертикальное разделение |
? | Помощь |
q | Выход |
| Размер файла | Сообщения | Индексация | Повторное открытие |
|---|
| 500 МБ | ~5 000 | ~3 с | < 1 с |
| 5 ГБ | ~50 000 | ~30 с | < 1 с |
| 50 ГБ | ~500 000 | ~5 мин | < 1 с |
| Крейт | Назначение |
|---|
ratatui + crossterm | Терминальный интерфейс |
mail-parser | Разбор MIME/RFC 5322 |
encoding_rs | Декодирование кодировок |
chrono | Даты и часовые пояса |
clap | Разбор аргументов CLI |
serde + bincode | Сериализация индекса |
sha2 | Проверка целостности индекса |
lru | Кэш декодированных сообщений |
tracing | Структурированное журналирование |