
mboxshell v0.6.2
mboxShell. あらゆるサイズのMBOXファイルに対応する高速ターミナルビューア。Gmail Takeout バックアップ(50GB以上)から、メモリに読み込むことなくメールを開く・検索・エクスポートできます。Rustで構築されています。
mboxShell
あらゆるサイズのMBOXファイルに対応する高速ターミナルビューア。Gmail Takeoutのバックアップ(50 GB以上)から、メモリに読み込むことなくメールを開いたり、検索したり、エクスポートしたりできます。
このプロジェクトが存在する理由
Google TakeoutでGmailからメールをエクスポートすると、数十ギガバイトにもなる1つ以上の.mboxファイルが生成されます。これらのファイルをメモリに完全に読み込むことなく、効率的に開いたり、検索したり、閲覧したりできるクロスプラットフォームのターミナルツールは、これまで存在しませんでした。
mboxShellはその問題を解決するために作られました。50 GBのMBOXを数秒で開き、数十万件のメッセージをスムーズに操作し、送信者・日付・本文で検索し、必要なものをエクスポートできます。すべてターミナルから操作でき、GUIもサーバーも外部依存も不要です。
ユースケース
- Gmailバックアップ(Google Takeout)を元のラベル付きで閲覧
- メールアーカイブの分析(サーバー上、移行中、監査中など)
- あらゆるソースのMBOXファイル内のメッセージを検索(Thunderbird、Unixサーバーなど)
- メッセージをEML、CSV、プレーンテキストにエクスポートしてさらに処理
- 添付ファイルを個別または一括で抽出
- 複数のMBOXファイルを1つにマージ(重複を除去)
Mac版: mboxViewer
macOSでネイティブなグラフィカル体験をお望みなら、mboxViewer をご覧ください。同じチームが開発したネイティブMacアプリです。メールクライアントにインポートすることなくMBOXファイルを開いて閲覧・検索できる、おなじみのメールボックススタイルのインターフェースを提供します。.mboxファイルをドラッグ&ドロップするだけで、すべてのメッセージ、添付ファイル、ラベルにクリーンなmacOSネイティブウィンドウですぐにアクセスできます。mboxShellの解析エンジンのパワーを、デスクトップGUIの快適さとともに活用したいユーザーに最適です。
ブラウザ版: Online Mbox Viewer
何もインストールせずにMBOXファイルをちょっと確認したい場合は、Online Mbox Viewer をお試しください。同じ作者による無料のMITライセンスのWebアプリです。.mboxファイルをブラウザ内で完全に開いてレンダリングします。サーバーにアップロードされるものは一切ないため、メールはお使いのマシンに留まります。あらゆるデバイスから手軽に確認するのに最適です。ソースコードは github.com/dcarrero/online-mbox-viewer にあります。
機能
- ファイルをメモリに読み込まない。 1 MBバッファを使用したストリーミングI/Oを採用。100 GBのMBOXでも1 GBのファイルと同程度の約500 MBのRAMしか使用しません(メモリに常駐するのはメタデータインデックスのみです)。
- 永続的インデックス。 初回オープン時にバイナリインデックス(
.mboxshell.idx)を作成するため、2回目以降のオープンは1秒もかかりません。 - Gmail完全サポート。
X-Gmail-Labelsをサイドバーパネルの仮想フォルダとして検出・表示し、受信トレイ、送信済み、スター付き、カスタムラベルなどでフィルタリングできます。 - 正しいエンコーディング。 RFC 2047 encoded-wordsをデコードし、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互換)、プレーンテキストにエクスポート。デコード済み添付ファイルの抽出。
- 単一バイナリ。 ランタイムも依存関係も不要。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
# 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) |
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 | マニュアルページを生成する |
グローバルフラグ:
| フラグ | 説明 |
|---|---|
-f, --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のエクスポートの場合 — 実際にはmboxという名前のファイルを含むディレクトリInbox.mbox — は、mboxではなくInbox.mboxと読み取られます。同じラベルになるメールボックスは互いに区別されます(Work/Inbox.mbox と Personal/Inbox.mbox など)。
ターミナルUI

キーボードショートカット
| キー | 操作 |
|---|---|
j / k | 次のメッセージ / 前のメッセージ |
g / G | 最初のメッセージ / 最後のメッセージ |
PgDn / PgUp | 1ページ下 / 1ページ上 |
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] Cc受信者で検索
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年1月のメッセージ
date:2024-01-01..2024-06-30 日付範囲
before:2024-06-01 指定日より前
after:2024-01-01 指定日より後
size:>1mb 1 MBより大きいメッセージ
-subject:spam 件名に"spam"を含むメッセージを除外
"exact phrase" 正確なフレーズを検索
from:john subject:budget 暗黙のAND(両方一致する必要あり)
term1 OR term2 明示的なOR
サポートされている入力形式
| 形式 | 拡張子 | 説明 |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | 標準形式。Google Takeout、Thunderbird、Unixサーバー |
パフォーマンス
実際の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 # clapを使用したCLI
+-- 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デコード、マルチパート、文字セット
| +-- header.rs # RFC 5322ヘッダー、RFC 2047 encoded-words
+-- 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)、100万メッセージで200ms未満)
| +-- 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 | ターミナル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 — Manual de usuario (Español)
変更履歴
完全なリリース履歴については CHANGELOG.md をご覧ください。
ライセンス
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es