Назад к обновлениям
New releaseAug 7, 2026

mboxshell v0.6.2

mboxShell. Быстрый терминальный просмотрщик файлов MBOX любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50GB+) без загрузки их в память. Написан на Rust.

Поделиться

mboxShell

Быстрый терминальный просмотрщик MBOX-файлов любого размера. Открывайте, ищите и экспортируйте письма из резервных копий Gmail Takeout (50 ГБ+) без загрузки их в память.

License: MIT Rust

Leer en Espanol / Spanish


Зачем существует этот проект

Когда вы экспортируете свою почту из 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_64mboxshell-linux-x86_64
Linux ARM64mboxshell-linux-aarch64
Linux RISC-V 64mboxshell-linux-riscv64
FreeBSD x86_64mboxshell-freebsd-x86_64
macOS Intelmboxshell-macos-x86_64
macOS Apple Siliconmboxshell-macos-aarch64
Windows x86_64mboxshell-windows-x86_64.exe
Windows ARM64mboxshell-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).

Терминальный интерфейс

mboxShell screenshot

Сочетания клавиш

КлавишаДействие
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 Groupstopics.mboxВнутри архива Takeout, по адресу <group>@googlegroups.com/. Имя файла локализовано (temas.mbox, …), поэтому почтовый ящик называется по имени группы — см. docs/GOOGLE-GROUPS.md
Пакет Apple MailName.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      Stackscale

  • Colorvivo — эксперты в WordPress, ИИ и цифровых медиа.
  • Stackscale — эксперты в инфраструктуре частных облаков.

Если ваша компания находит mboxshell полезным и хочет поддержать его дальнейшее развитие, см. .github/FUNDING.yml или свяжитесь через carrero.es.

Документация

Полное руководство пользователя охватывает каждую команду, сочетание клавиш, оператор поиска, опцию экспорта и ключ конфигурации:

Журнал изменений

Полную историю релизов см. в CHANGELOG.md.

Лицензия

MIT — Copyright (c) 2026 David Carrero Fernandez-Baillo — https://carrero.es

Исходный код: https://github.com/dcarrero/mboxshell

Категории