
mboxshell v0.6.2
mboxShell. あらゆるサイズのMBOXファイルに対応する高速ターミナルビューア。Gmail Takeout バックアップ(50GB以上)から、メモリに読み込むことなくメールを開く・検索・エクスポートできます。Rustで構築されています。
mboxShell
あらゆるサイズのMBOXファイルに対応した高速ターミナルビューア。Gmail Takeoutバックアップ(50 GB以上)のメールをメモリに読み込むことなく、開く・検索・エクスポートができます。
このプロジェクトが存在する理由
Google TakeoutでGmailからメールをエクスポートすると、数十ギガバイトにもなる1つ以上の.mboxファイルが得られます。さらに、所有するGoogleグループごとに1つのメールボックスが追加され、これは見落とされがちで、Gmailのエクスポート自体よりも大きくなる可能性があります。これらのファイルをメモリに完全に読み込むことなく、効率的に開いたり、検索したり、閲覧したりできるクロスプラットフォームのターミナルツールは存在しませんでした。
mboxShellはこの問題を解決するために作られました:50 GBのMBOXを数秒で開き、数十万件のメッセージをスムーズに操作し、送信者・日付・内容で検索し、必要なものをエクスポートできます。すべてターミナルから、GUIなし、サーバーなし、外部依存関係なしで実現します。
ユースケース
- Gmailバックアップの閲覧(Google Takeout)元のラベル付きで
- 所有するグループの閲覧。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)が作成され、以降のオープンは1秒未満で完了します。 - 完全なGmailサポート。
X-Gmail-Labelsを検出してサイドバーパネルに仮想フォルダとして表示し、受信トレイ、送信済み、スター付き、カスタムラベルなどでフィルタリングできます。 - Google Groupsメールボックス。 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
# またはユーザーローカルディレクトリに配置
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
クイックスタート
# ターミナルUIで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> | 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 | マニュアルページを生成 |
グローバルフラグ:
| フラグ | 説明 |
|---|---|
-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エクスポートの場合 — 文字通りmboxという名前のファイルを含むInbox.mboxディレクトリ — はmboxではなくInbox.mboxと読み取ります。同じラベルになるメールボックスは互いに区別されます(Work/Inbox.mbox vs 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 | ソート列を循環(日付、送信者、件名、サイズ) |
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 ある日付以降(その日を含む)
after:2024-01-01 before:2025-01-01 2024年全体
size:>1mb 1 MBより大きいメッセージ
size:>1mb size:<5mb 1〜5 MBの間
-subject:spam 件名に「spam」を含むメッセージを除外
"exact phrase" 正確なフレーズを検索
from:john subject:budget 暗黙のAND(両方一致する必要があります)
term1 OR term2 明示的なOR
from:a OR from:b subject:budget ORはより強く結合:(a OR b) AND 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 | 内部のファイルが読み取られるもの;メールボックスはパッケージ名で命名されます |
パフォーマンス
実際のGoogle Takeout MBOXファイルでテスト済み:
| ファイルサイズ | メッセージ数 | インデックス作成 | 再オープン |
|---|---|---|---|
| 500 MB | ~5,000 | ~3 秒 | < 1 秒 |
| 5 GB | ~50,000 | ~30 秒 | < 1 秒 |
| 50 GB | ~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 # 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エンコードワード
+-- 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 — ユーザーマニュアル(スペイン語)
変更履歴
完全なリリース履歴についてはCHANGELOG.mdを参照してください。
ライセンス
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es