
mboxshell v0.6.2
mboxShell. Быстрый терминальный просмотрщик файлов MBOX любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50GB+) без загрузки их в память. Написан на Rust.
mboxShell
Быстрый терминальный просмотрщик MBOX-файлов любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50 ГБ+) без загрузки их в память.
Зачем существует этот проект
Когда вы экспортируете свою почту из Gmail с помощью Google Takeout, вы получаете один или несколько файлов .mbox, которые могут весить десятки гигабайт — плюс ещё один почтовый ящик для каждой группы Google, которой вы владеете, который легко пропустить и который может быть больше самого экспорта Gmail. Не существует кроссплатформенного терминального инструмента, который позволял бы эффективно открывать, искать и просматривать эти файлы без полной загрузки их в память.
mboxShell был создан для решения этой проблемы: откройте MBOX на 50 ГБ за секунды, плавно перемещайтесь по сотням тысяч сообщений, ищите по отправителю, дате или содержимому и экспортируйте всё, что вам нужно. Всё из терминала, без графического интерфейса, без сервера, без внешних зависимостей.
Варианты использования
- Просмотр резервных копий Gmail (Google Takeout) с их исходными метками
- Чтение групп, которыми вы владеете, экспортированных Takeout как отдельные почтовые ящики — часто самые большие файлы в архиве
- Анализ почтовых архивов на серверах, при миграциях или аудитах
- Поиск сообщений в MBOX-файлах из любого источника (Thunderbird, Unix-серверы и т. д.)
- Экспорт сообщений в EML, CSV или обычный текст для дальнейшей обработки
- Извлечение вложений по отдельности или пакетно
- Объединение нескольких MBOX-файлов в один с удалением дубликатов
Также на Mac: mboxViewer
Если вы предпочитаете нативный графический интерфейс на macOS, обратите внимание на mboxViewer — нативное приложение для Mac, созданное той же командой. Оно предоставляет привычный интерфейс в стиле почтового ящика для открытия, просмотра и поиска MBOX-файлов без их импорта в почтовый клиент. Перетащите ваш файл .mbox, и вы получите мгновенный доступ ко всем сообщениям, вложениям и меткам в чистом нативном окне macOS. Идеально для пользователей, которые хотят получить мощность механизма разбора mboxShell с удобством настольного графического интерфейса.
Также в вашем браузере: 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:и т. д.), диапазоны дат, фильтры размера, операторы И/ИЛИ и отрицание. - Гибкий экспорт. Индивидуальный или пакетный экспорт в 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
# Или поместите его в пользовательскую локальную директорию
mv mboxshell-* ~/.local/bin/mboxshell
В Windows переместите mboxshell-windows-x86_64.exe в папку в вашем PATH или запускайте его напрямую.
Сборка из исходного кода
Требования: Rust 1.85 или новее.
# Клонирование и сборка
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release
# Двоичный файл находится в target/release/mboxshell
# Установите его системно:
sudo cp target/release/mboxshell /usr/local/bin/
# Или только для текущего пользователя:
cp target/release/mboxshell ~/.local/bin/
Кросс-компиляция для других платформ
# Добавьте нужную цель
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
# Сборка для конкретной цели
cargo build --release --target aarch64-apple-darwin
Установка через Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Быстрый старт
# Открыть MBOX-файл в терминальном интерфейсе
mboxshell mail.mbox
# Индексирование и показ статистики
mboxshell index mail.mbox
mboxshell stats mail.mbox
# Поиск из командной строки
mboxshell search mail.mbox "from:[email protected] date:2024"
mboxshell search mail.mbox "has:attachment subject:invoice" --json
# Экспорт сообщений
mboxshell export mail.mbox --format eml --output ./emails/
mboxshell export mail.mbox --format csv --output summary.csv
# Передать только часть архива: новый почтовый ящик только с совпадениями
mboxshell export mail.mbox --format mbox --query "from:[email protected]" -o handover.mbox
# Извлечение вложений
mboxshell attachments mail.mbox --output ./attachments/
# Объединение нескольких MBOX-файлов (дубликаты удаляются по умолчанию)
mboxshell merge file1.mbox file2.mbox -o merged.mbox
# Объединение с пометкой каждого сообщения почтовым ящиком, из которого оно пришло
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header
# Генерация автодополнений для оболочки
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> | Принудительно задать язык интерфейса (по умолчанию определяется автоматически) |
Флаги объединения:
| Флаг | Описание |
|---|---|
--no-dedup | Пропустить обнаружение дубликатов по Message-ID и объединить входные файлы байт-в-байт (дедупликация включена по умолчанию) |
--source-header | Вставить заголовок X-Mbox-Source: <имя почтового ящика> в каждое сообщение, чтобы объединённый архив оставался прослеживаемым до почтового ящика, из которого пришло каждое письмо |
Исходная метка — это имя почтового ящика, которое вы видите: для экспорта 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 | Циклическое переключение столбца сортировки (Дата, Отправитель, Тема, Размер) |
S | Переключение направления сортировки |
e | Экспорт сообщения (EML, TXT, CSV, Вложения) |
a | Показать вложения (j/k для навигации, Enter для сохранения, A для сохранения всех) |
t | Переключение режима цепочек (бесед) |
l | Показать / сфокусировать / скрыть боковую панель меток |
h | Переключение полных заголовков |
r | Переключение исходного кода сообщения |
1 / 2 / 3 | Раскладка: только список / горизонтальное разделение / вертикальное разделение |
? | Справка |
q | Выход |
Синтаксис поиска
from:[email protected] Поиск по отправителю
to:[email protected] Поиск по получателю
cc:[email protected] Поиск по получателю копии
subject:invoice Поиск в строке темы
body:important text Поиск в теле сообщения (полнотекстовый)
filename:report.pdf Поиск по имени файла вложения
id:<message-id@domain> Поиск по Message-ID
has:attachment Только сообщения с вложениями
has:no-attachment Только сообщения без вложений
label:Inbox Фильтр по метке Gmail
date:2024-01 Сообщения за январь 2024 года
date:2024-01-01..2024-06-30 Диапазон дат
before:2024-06-01 До даты (этот день исключается)
after:2024-01-01 С даты включительно (этот день включается)
after:2024-01-01 before:2025-01-01 Весь 2024 год
size:>1mb Сообщения больше 1 МБ
size:>1mb size:<5mb От 1 до 5 МБ
-subject:spam Исключить сообщения со словом "spam" в теме
"exact phrase" Поиск точной фразы
from:john subject:budget Неявное И (оба условия должны совпадать)
term1 OR term2 Явное ИЛИ
from:a OR from:b subject:budget ИЛИ связывает теснее: (a ИЛИ b) И 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 с clap
+-- lib.rs # Реэкспорт модулей
+-- error.rs # Типы ошибок с thiserror
+-- config.rs # Конфигурация TOML
+-- mailbox_naming.rs # Человекочитаемые имена почтовых ящиков (пакеты Apple Mail)
+-- i18n/ # Интернационализация (EN/ES)
+-- parser/
| +-- mbox.rs # Потоковый парсер (никогда не загружает файл в память)
| +-- eml.rs # Парсер отдельных EML-файлов
| +-- mime.rs # Декодирование MIME, multipart, кодировки
| +-- header.rs # Заголовки RFC 5322, encoded-words RFC 2047
+-- index/
| +-- builder.rs # Построение двоичного индекса
| +-- reader.rs # Запросы к индексу
| +-- format.rs # Двоичный формат с проверкой целостности SHA-256
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Метаданные вложений
| +-- address.rs # Разбор адресов RFC 5322
+-- store/
| +-- reader.rs # Чтение на основе смещений с LRU-кэшем
+-- search/
| +-- query.rs # Парсер поисковых запросов
| +-- metadata.rs # Быстрый поиск по индексу (O(n), < 200 мс для 1 млн сообщений)
| +-- fulltext.rs # Потоковый полнотекстовый поиск
+-- export/
| +-- eml.rs # Экспорт в .eml
| +-- csv.rs # Экспорт сводки в CSV (UTF-8 BOM)
| +-- text.rs # Экспорт в обычный текст
| +-- attachment.rs # Извлечение вложений
| +-- mbox.rs # Объединение MBOX с дедупликацией и исходным заголовком
+-- tui/
+-- app.rs # Глобальное состояние (архитектура Elm)
+-- event.rs # Обработка событий клавиатуры
+-- ui.rs # Раскладка и диспетчеризация отрисовки
+-- threading.rs # Алгоритм JWZ для цепочек бесед
+-- theme.rs # Цветовая тема
+-- widgets/ # Визуальные компоненты
+-- mail_list.rs # Список с виртуальной прокруткой
+-- mail_view.rs # Просмотрщик сообщений с прокруткой
+-- sidebar.rs # Панель меток/папок
+-- header_bar.rs # Верхняя панель
+-- status_bar.rs # Строка состояния
+-- search_bar.rs # Строка поиска
+-- search_popup.rs # Всплывающее окно фильтра поиска
+-- help_popup.rs # Всплывающее окно справки
+-- attachment_popup.rs # Всплывающее окно вложений
+-- export_popup.rs # Всплывающее окно экспорта
Ключевые зависимости
| Крейт | Назначение |
|---|---|
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
Исходный код: https://github.com/dcarrero/mboxshell