
mboxshell v0.7.3
mboxShell. Быстрый терминальный просмотрщик файлов MBOX любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50GB+) без загрузки их в память. Написан на Rust.
mboxShell
Быстрый терминальный просмотрщик для MBOX-файлов любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50 ГБ+) без загрузки их в память.
Зачем существует этот проект
Когда вы экспортируете свою почту из Gmail с помощью Google Takeout, вы получаете один или несколько файлов .mbox, которые могут весить десятки гигабайт — плюс ещё один почтовый ящик для каждой группы Google, которой вы владеете, что легко упустить, и он может быть больше самого экспорта Gmail. Не существует кроссплатформенного терминального инструмента, позволяющего эффективно открывать, искать и просматривать эти файлы без полной загрузки их в память.
mboxShell был создан для решения этой проблемы: открыть MBOX размером 50 ГБ за секунды, плавно перемещаться по сотням тысяч сообщений, искать по отправителю, дате или содержимому и экспортировать всё, что нужно. Всё из терминала, без GUI, без сервера, без внешних зависимостей.
Сценарии использования
- Просмотр резервных копий Gmail (Google Takeout) с их оригинальными метками
- Чтение групп, которыми вы владеете, экспортированных Takeout как отдельные почтовые ящики — часто это самые большие файлы в архиве
- Анализ почтовых архивов на серверах, при миграциях или аудитах
- Поиск сообщений в MBOX-файлах из любого источника (Thunderbird, Unix-серверы и т. д.)
- Экспорт сообщений в EML, CSV или обычный текст для дальнейшей обработки
- Извлечение вложений по отдельности или массово
- Объединение нескольких MBOX-файлов в один с удалением дубликатов
Также на Mac: mboxViewer
Если вы предпочитаете нативный графический интерфейс на macOS, обратите внимание на mboxViewer — нативное приложение для Mac, созданное той же командой. Оно предоставляет привычный интерфейс в стиле почтового клиента для открытия, просмотра и поиска MBOX-файлов без необходимости импортировать их в почтовый клиент. Перетащите ваш файл .mbox, и вы получите мгновенный доступ ко всем вашим сообщениям, вложениям и меткам в чистом нативном окне macOS. Идеально для пользователей, которым нужна мощь движка парсинга mboxShell с удобством настольного GUI.
Также в вашем браузере: Online Mbox Viewer
Нужно заглянуть в MBOX-файл без установки чего-либо? Попробуйте Online Mbox Viewer — бесплатное веб-приложение с лицензией MIT от того же автора. Оно открывает и отображает файлы .mbox полностью в вашем браузере: ничего не загружается на какой-либо сервер, поэтому ваша почта остаётся на вашей машине. Идеально для быстрого просмотра с любого устройства. Исходный код на github.com/dcarrero/online-mbox-viewer.
Возможности
- Никогда не загружает файл в память. Использует потоковый ввод-вывод с буфером 1 МБ. MBOX размером 100 ГБ использует примерно те же ~500 МБ оперативной памяти, что и файл размером 1 ГБ (в памяти хранится только индекс метаданных).
- Постоянное индексирование. При первом открытии создаётся бинарный индекс (
.mboxshell.idx), поэтому последующие открытия занимают менее секунды. - Полная поддержка Gmail. Обнаруживает и отображает
X-Gmail-Labelsкак виртуальные папки на боковой панели, позволяя фильтровать по «Входящие», «Отправленные», «Помеченные», пользовательским меткам и т. д. - Почтовые ящики Google Groups. Читает файлы
topics.mbox, которые архив Takeout поставляет для каждой группы, которой вы владеете, называет их по имени группы вместо бессмысленного имени файла, показывает группу как виртуальную метку и группирует беседы по точному идентификаторуX-GM-THRID. - Корректные кодировки. Декодирует encoded-words RFC 2047, поддерживает UTF-8, ISO-8859-1, Windows-1252, KOI8-R и любую кодировку, распознаваемую
encoding_rs. - Группировка бесед. Объединяет сообщения в цепочки с помощью алгоритма JWZ (того же, что используется в Netscape/Mozilla), либо по собственному идентификатору беседы почтового ящика, если он есть.
- Расширенный поиск. Фильтрация по конкретным полям (
from:,subject:,date:,body:,has:attachment,label:и т. д.), диапазоны дат, фильтры по размеру, операторы AND/OR и отрицание. - Гибкий экспорт. Индивидуальный или массовый экспорт в EML, CSV (совместимый с Excel), обычный текст. Извлечение декодированных вложений.
- Единый бинарный файл. Без среды выполнения, без зависимостей. Исполняемый файл размером ~5 МБ, работающий на Linux, macOS и Windows.
- Полноценный терминальный интерфейс. Навигация с клавиатуры (в стиле vi), три режима компоновки, интерактивная строка поиска, настраиваемые сочетания клавиш.
- Двуязычность. Интерфейс доступен на английском и испанском языках, автоматически определяется по системной локали.
Установка
Готовые бинарные файлы (рекомендуется)
Скачайте последний релиз для вашей платформы со страницы Releases:
| Платформа | Бинарный файл |
|---|---|
| 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 |
После загрузки сделайте его исполняемым и переместите в ваш 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
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
# 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
Команды CLI
| Команда | Описание |
|---|---|
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, mbox) |
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-страницу |
Глобальные флаги:
| Флаг | Описание |
|---|---|
-f, --force | Принудительно перестроить индекс, даже если он существует (в export -f — это --format — там указывайте --force полностью) |
-v, --verbose | Повысить уровень детализации логов (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Принудительно задать язык интерфейса (по умолчанию определяется автоматически) |
Флаги merge:
| Флаг | Описание |
|---|---|
--no-dedup | Пропустить обнаружение дубликатов Message-ID и объединить входные файлы побайтово (дедупликация включена по умолчанию) |
--source-header | Вставить заголовок X-Mbox-Source: <mailbox name> в каждое сообщение, чтобы объединённый архив оставался отслеживаемым до почтового ящика, из которого пришло каждое письмо |
Метка источника — это имя почтового ящика, которое вы видите: для экспорта Apple Mail — каталог Inbox.mbox, содержащий файл с буквальным именем mbox — она читается как Inbox.mbox, а не mbox. Почтовые ящики, которые иначе получили бы одинаковую метку, различаются между собой (Work/Inbox.mbox против Personal/Inbox.mbox).
Терминальный интерфейс

Сочетания клавиш
| Клавиша | Действие |
|---|---|
j / k | Следующее / предыдущее сообщение |
g / G | Первое / последнее сообщение |
PgDn / PgUp | Страница вниз / вверх |
Enter | Открыть сообщение / переключиться в режим просмотра сообщения |
Shift-↑ / Shift-↓ | Прокрутить тело выбранного сообщения (сохраняя фокус на списке); индикатор позиции (Top / NN% / Bot) отображается в рамке сообщения |
Tab / Shift-Tab | Переключение фокуса между панелями |
Esc | Назад к списку / закрыть всплывающее окно |
/ | Открыть строку поиска |
f | Открыть всплывающее окно фильтра поиска |
n / N | Следующий / предыдущий результат поиска |
Space | Пометить / снять пометку с сообщения |
* | Пометить / снять пометку со всех |
s | Переключение столбца сортировки (Date, From, Subject, Size) |
S | Переключение направления сортировки |
e | Экспорт сообщения (EML, TXT, CSV, Attachments) |
a | Показать вложения (j/k для навигации, Enter для сохранения, A для сохранения всех) |
t | Переключить режим бесед (цепочек) |
l | Показать / сфокусировать / скрыть боковую панель меток |
h | Переключить отображение полных заголовков |
r | Переключить отображение исходного текста сообщения |
1 / 2 / 3 | Компоновка: только список / горизонтальное разделение / вертикальное разделение |
? | Справка |
q | Выход |
Синтаксис поиска
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
Поддерживаемые входные форматы
| Формат | Расширение | Описание |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Стандартный формат. Google Takeout, Thunderbird, Unix-серверы |
| Экспорт Google Groups | topics.mbox | Внутри архива Takeout, по пути <group>@googlegroups.com/. Имя файла локализовано (temas.mbox, …), поэтому почтовый ящик называется по имени группы — см. docs/GOOGLE-GROUPS.md |
| Пакет Apple Mail | Name.mbox/mbox | Читается внутренний файл; почтовый ящик называется по имени пакета |
Производительность
Протестировано на реальных MBOX-файлах Google Takeout:
| Размер файла | Сообщений | Индексирование | Повторное открытие |
|---|---|---|---|
| 500 МБ | ~5 000 | ~3 с | < 1 с |
| 5 ГБ | ~50 000 | ~30 с | < 1 с |
| 50 ГБ | ~500 000 | ~5 мин | < 1 с |
Навигация по списку сообщений мгновенная благодаря виртуальной прокрутке (отрисовываются только видимые строки).
Конфигурация
Файл конфигурации находится по пути ~/.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
Ключевые зависимости
| Crate | Назначение |
|---|---|
ratatui + crossterm | Терминальный интерфейс |
mail-parser | Парсинг MIME/RFC 5322 |
encoding_rs | Декодирование кодировок |
chrono | Даты и часовые пояса |
clap | Разбор аргументов CLI |
serde + bincode | Сериализация индекса |
sha2 | Проверка целостности индекса |
lru | Кэш декодированных сообщений |
tracing | Структурированное логирование |
Спонсоры
mboxshell разрабатывается в открытом виде и поддерживается:
- Colorvivo — эксперты в области WordPress, ИИ и цифровых медиа.
- Stackscale — эксперты в области инфраструктуры частных облаков.
Если ваша компания считает mboxshell полезным и хочет поддержать его дальнейшую разработку, см. .github/FUNDING.yml или свяжитесь через carrero.es.
Документация
Полное руководство пользователя охватывает каждую команду, сочетание клавиш, оператор поиска, опцию экспорта и ключ конфигурации:
- docs/MANUAL.md — Руководство пользователя (английский)
- docs/MANUAL-ES.md — Manual de usuario (Español)
Журнал изменений
Полную историю релизов см. в CHANGELOG.md.
Лицензия
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Source Code: https://github.com/dcarrero/mboxshell