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

mboxshell v0.7.3

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 ГБ за секунды, плавно перемещаться по сотням тысяч сообщений, искать по отправителю, дате или содержимому и экспортировать всё, что нужно. Всё из терминала, без 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_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

# 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).

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

mboxShell screenshot

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

КлавишаДействие
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 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 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      Stackscale

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

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

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

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

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

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

Лицензия

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

Source Code: https://github.com/dcarrero/mboxshell

Категории