
mboxshell v0.7.3
mboxShell. あらゆるサイズのMBOXファイルに対応する高速ターミナルビューア。Gmail Takeout バックアップ(50GB以上)から、メモリに読み込むことなくメールを開く・検索・エクスポートできます。Rustで構築されています。
mboxShell
あらゆるサイズのMBOXファイルに対応した高速ターミナルビューア。Gmail Takeoutバックアップ(50 GB以上)のメールをメモリに読み込むことなく開き、検索し、エクスポートできます。
このプロジェクトが存在する理由
Google Takeoutを使ってGmailからメールをエクスポートすると、数十ギガバイトにもなる .mbox ファイルが1つ以上得られます。さらに、所有するGoogleグループごとに1つのメールボックスが追加されますが、これは見落としやすく、Gmailのエクスポート自体よりも大きくなることがあります。これらのファイルをメモリに完全に読み込むことなく、効率的に開き、検索し、閲覧できるクロスプラットフォームのターミナルツールは存在しません。
mboxShell はこの問題を解決するために作られました。50 GBのMBOXを数秒で開き、数十万件のメッセージをスムーズにナビゲートし、送信者、日付、内容で検索し、必要なものをエクスポートできます。すべてターミナルから、GUIなし、サーバーなし、外部依存なしで実現します。
ユースケース
- Gmailバックアップ(Google Takeout)を元のラベル付きで閲覧する
- 所有するグループを読む — Takeoutが独自のメールボックスとしてエクスポートするもので、しばしばアーカイブ内で最大のファイルになります
- サーバー上、移行中、または監査中にメールアーカイブを分析する
- あらゆるソース(Thunderbird、Unixサーバーなど)のMBOXファイル内のメッセージを検索する
- さらなる処理のためにメッセージをEML、CSV、またはプレーンテキストにエクスポートする
- 添付ファイルを個別または一括で抽出する
- 複数のMBOXファイルを1つにマージし、重複を削除する
Macでも: mboxViewer
macOSでネイティブのグラフィカルな体験を好む場合は、mboxViewerをチェックしてください。同じチームが開発したネイティブMacアプリです。メールクライアントにインポートすることなく、MBOXファイルを開き、閲覧し、検索するための使い慣れたメールボックス形式のインターフェースを提供します。.mbox ファイルをドラッグ&ドロップするだけで、すべてのメッセージ、添付ファイル、ラベルにクリーンなmacOSネイティブウィンドウで即座にアクセスできます。mboxShellのパースエンジンのパワーをデスクトップGUIの快適さで求めるユーザーに最適です。
ブラウザでも: Online Mbox Viewer
何もインストールせずにMBOXファイルを覗きたいですか?同じ作者による無料のMITライセンスのWebアプリ、Online Mbox Viewerをお試しください。.mbox ファイルを完全にブラウザ内で開いてレンダリングします。サーバーには何もアップロードされないため、メールはあなたのマシン上に留まります。どのデバイスからでも素早く確認するのに最適です。ソースコードは github.com/dcarrero/online-mbox-viewer にあります。
機能
- ファイルをメモリに読み込みません。 1 MBのバッファを使用したストリーミングI/Oを使用します。100 GBのMBOXは、1 GBのものとほぼ同じ約500 MBのRAMを使用します(メタデータインデックスのみがメモリ上に存在します)。
- 永続的なインデックス作成。 初回のオープン時にバイナリインデックス(
.mboxshell.idx)を作成するため、以降のオープンは1秒未満で完了します。 - 完全なGmailサポート。
X-Gmail-Labelsを検出し、サイドバーパネルに仮想フォルダとして表示し、受信トレイ、送信済み、スター付き、カスタムラベルなどでフィルタリングできます。 - Googleグループのメールボックス。 Takeoutアーカイブが所有する各グループに対して同梱する
topics.mboxファイルを読み込み、無意味なファイル名ではなくグループ名を付け、グループを仮想ラベルとして表示し、正確なX-GM-THRIDIDで会話をスレッド化します。 - 正確なエンコーディング。 RFC 2047エンコードワードをデコードし、UTF-8、ISO-8859-1、Windows-1252、KOI8-R、および
encoding_rsが認識するあらゆる文字セットをサポートします。 - 会話のスレッド化。 JWZアルゴリズム(Netscape/Mozillaで使用されているものと同じ)を使用してメッセージをスレッドにグループ化します。メールボックス自体が会話IDを持つ場合はそれを使用します。
- 高度な検索。 フィールド固有のフィルタリング(
from:、subject:、date:、body:、has:attachment、label:など)、日付範囲、サイズフィルター、AND/OR演算子、否定。 - 柔軟なエクスポート。 個別または一括でEML、CSV(Excel互換)、プレーンテキストにエクスポート。デコードされた添付ファイルの抽出。
- 単一バイナリ。 ランタイムなし、依存関係なし。Linux、macOS、Windowsで動作する約5 MBの実行ファイル。
- 完全なターミナルUI。 キーボードナビゲーション(viスタイル)、3つのレイアウトモード、インタラクティブな検索バー、設定可能なショートカット。
- バイリンガル。 インターフェースは英語とスペイン語で利用可能で、システムロケールから自動検出されます。
インストール
ビルド済みバイナリ(推奨)
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> | TUIでMBOXファイルを開く |
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ファイルを1つにマージする |
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: <mailbox name> ヘッダを挿入し、マージされたアーカイブが各メールの元のメールボックスまで追跡可能になるようにする |
ソースラベルは表示されるメールボックス名です。Apple Mailのエクスポート — Inbox.mbox ディレクトリに文字通り mbox という名前のファイルが含まれている場合 — では mbox ではなく Inbox.mbox と表示されます。同じラベルを共有することになるメールボックスは互いに区別されます(Work/Inbox.mbox と Personal/Inbox.mbox)。
ターミナルUI

キーボードショートカット
| キー | アクション |
|---|---|
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 export | topics.mbox | Takeoutアーカイブ内、<group>@googlegroups.com/ にあります。ファイル名はローカライズされている(temas.mbox など)ため、メールボックスはグループにちなんで命名されます — docs/GOOGLE-GROUPS.md を参照 |
| Apple Mail package | Name.mbox/mbox | 内部のファイルが読み込まれます。メールボックスはパッケージにちなんで命名されます |
パフォーマンス
実際のGoogle Takeout MBOXファイルでテスト済み:
| ファイルサイズ | メッセージ数 | インデックス作成 | 再オープン |
|---|---|---|---|
| 500 MB | ~5,000 | ~3 s | < 1 s |
| 5 GB | ~50,000 | ~30 s | < 1 s |
| 50 GB | ~500,000 | ~5 min | < 1 s |
メッセージリストのナビゲーションは、仮想スクロール(表示されている行のみがレンダリングされます)のおかげで瞬時に行えます。
設定
設定ファイルは ~/.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
主要な依存関係
| クレート | 目的 |
|---|---|
ratatui + crossterm | ターミナルUI |
mail-parser | MIME/RFC 5322パース |
encoding_rs | 文字セットデコード |
chrono | 日付とタイムゾーン |
clap | CLI引数パース |
serde + bincode | インデックスのシリアライズ |
sha2 | インデックスの整合性検証 |
lru | デコード済みメッセージキャッシュ |
tracing | 構造化ログ |
スポンサー
mboxshell はオープンに開発されており、以下によってサポートされています:
- Colorvivo — WordPress、AI、デジタルメディアのエキスパート。
- Stackscale — プライベートクラウドインフラのエキスパート。
あなたの会社が mboxshell を有用だと感じ、その継続的な開発を支援したい場合は、.github/FUNDING.yml を参照するか、carrero.es からご連絡ください。
ドキュメント
完全なユーザーマニュアルは、すべてのコマンド、キーボードショートカット、検索演算子、エクスポートオプション、設定キーを網羅しています:
- docs/MANUAL.md — ユーザーマニュアル(英語)
- docs/MANUAL-ES.md — ユーザーマニュアル(スペイン語)
変更履歴
完全なリリース履歴は CHANGELOG.md を参照してください。
ライセンス
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es