
mboxshell v0.7.3
mboxShell. Schneller Terminal-Viewer für MBOX-Dateien beliebiger Größe. Öffnet, durchsucht und exportiert E-Mails aus Gmail-Takeout-Backups (50GB+), ohne sie in den Speicher zu laden. In Rust entwickelt.
mboxShell
Schneller Terminal-Viewer für MBOX-Dateien jeder Größe. Öffnen, durchsuchen und exportieren Sie E-Mails aus Gmail-Takeout-Backups (50 GB+) ohne sie in den Speicher zu laden.
Warum dieses Projekt existiert
Wenn Sie Ihre E-Mails mit Google Takeout aus Gmail exportieren, erhalten Sie eine oder mehrere .mbox-Dateien, die mehrere zehn Gigabyte groß sein können — plus ein weiteres Postfach pro Google-Gruppe, die Sie besitzen, was leicht zu übersehen ist und größer sein kann als der Gmail-Export selbst. Es gibt kein plattformübergreifendes Terminal-Tool, mit dem Sie diese Dateien effizient öffnen, durchsuchen und durchblättern können, ohne sie vollständig in den Speicher zu laden.
mboxShell wurde entwickelt, um dieses Problem zu lösen: Öffnen Sie eine 50 GB MBOX in Sekunden, navigieren Sie reibungslos durch Hunderttausende von Nachrichten, suchen Sie nach Absender, Datum oder Inhalt und exportieren Sie, was Sie benötigen. Alles vom Terminal aus, ohne GUI, ohne Server, ohne externe Abhängigkeiten.
Anwendungsfälle
- Gmail-Backups durchsuchen (Google Takeout) mit ihren ursprünglichen Labels
- Die Gruppen lesen, die Sie besitzen, die von Takeout als eigene Postfächer exportiert werden — oft die größten Dateien im Archiv
- Mail-Archive analysieren auf Servern, während Migrationen oder Audits
- Nachrichten durchsuchen in MBOX-Dateien aus jeder Quelle (Thunderbird, Unix-Server, etc.)
- Nachrichten exportieren nach EML, CSV oder Klartext zur weiteren Verarbeitung
- Anhänge extrahieren einzeln oder in großen Mengen
- Mehrere MBOX-Dateien zusammenführen zu einer, wobei Duplikate entfernt werden
Auch auf dem Mac: mboxViewer
Wenn Sie eine native grafische Erfahrung auf macOS bevorzugen, schauen Sie sich mboxViewer an — eine native Mac-App, die vom selben Team entwickelt wurde. Sie bietet eine vertraute Postfach-Oberfläche zum Öffnen, Durchsuchen und Durchsuchen von MBOX-Dateien, ohne sie jemals in einen Mail-Client zu importieren. Ziehen Sie Ihre .mbox-Datei per Drag & Drop, und Sie erhalten sofortigen Zugriff auf alle Ihre Nachrichten, Anhänge und Labels in einem sauberen, macOS-nativen Fenster. Ideal für Benutzer, die die Leistungsfähigkeit der Parsing-Engine von mboxShell mit dem Komfort einer Desktop-GUI wünschen.
Auch in Ihrem Browser: Online Mbox Viewer
Müssen Sie einen Blick in eine MBOX-Datei werfen, ohne etwas zu installieren? Probieren Sie Online Mbox Viewer — eine kostenlose, MIT-lizenzierte Web-App vom selben Autor. Sie öffnet und rendert .mbox-Dateien vollständig in Ihrem Browser: Nichts wird auf einen Server hochgeladen, sodass Ihre E-Mails auf Ihrem Rechner bleiben. Perfekt für einen schnellen Blick von jedem Gerät aus. Quellcode unter github.com/dcarrero/online-mbox-viewer.
Funktionen
- Lädt die Datei niemals in den Speicher. Verwendet Streaming-I/O mit einem 1 MB-Puffer. Eine 100 GB MBOX verwendet ungefähr die gleichen ~500 MB RAM wie eine 1 GB große (nur der Metadaten-Index lebt im Speicher).
- Persistente Indizierung. Das erste Öffnen erstellt einen binären Index (
.mboxshell.idx), sodass nachfolgende Öffnungen weniger als eine Sekunde dauern. - Volle Gmail-Unterstützung. Erkennt und zeigt
X-Gmail-Labelsals virtuelle Ordner in einem Seitenleisten-Panel an, sodass Sie nach Inbox, Sent, Starred, benutzerdefinierten Labels usw. filtern können. - Google Groups-Postfächer. Liest die
topics.mbox-Dateien, die ein Takeout-Archiv für jede Gruppe liefert, die Sie besitzen, benennt sie nach der Gruppe statt nach dem bedeutungslosen Dateinamen, zeigt die Gruppe als virtuelles Label an und verknüpft Konversationen über die exakteX-GM-THRID-ID. - Korrekte Kodierungen. Dekodiert RFC 2047 encoded-words, unterstützt UTF-8, ISO-8859-1, Windows-1252, KOI8-R und jeden von
encoding_rserkannten Zeichensatz. - Konversations-Threading. Gruppiert Nachrichten in Threads mithilfe des JWZ-Algorithmus (derselbe, der von Netscape/Mozilla verwendet wird) oder der eigenen Konversations-ID des Postfachs, wenn es eine hat.
- Erweiterte Suche. Feldspezifische Filterung (
from:,subject:,date:,body:,has:attachment,label:, etc.), Datumsbereiche, Größenfilter, AND/OR-Operatoren und Negation. - Flexibler Export. Einzel- oder Massenexport nach EML, CSV (Excel-kompatibel), Klartext. Dekodierte Anhangsextraktion.
- Einzelne Binärdatei. Keine Laufzeitumgebung, keine Abhängigkeiten. Eine ~5 MB große ausführbare Datei, die auf Linux, macOS und Windows läuft.
- Vollständige Terminal-UI. Tastaturnavigation (vi-Stil), drei Layout-Modi, interaktive Suchleiste, konfigurierbare Tastenkürzel.
- Zweisprachig. Oberfläche verfügbar in Englisch und Spanisch, automatisch aus der System-Locale erkannt.
Installation
Vorgefertigte Binärdateien (empfohlen)
Laden Sie die neueste Version für Ihre Plattform von der Releases-Seite herunter:
| Plattform | Binärdatei |
|---|---|
| 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 |
Nach dem Herunterladen machen Sie sie ausführbar und verschieben sie in Ihren 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
Unter Windows verschieben Sie mboxshell-windows-x86_64.exe in einen Ordner in Ihrem PATH oder führen sie direkt aus.
Aus dem Quellcode erstellen
Voraussetzungen: Rust 1.85 oder neuer.
# 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/
Cross-Kompilierung für andere Plattformen
# 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
Installation über Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Schnellstart
# 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-Befehle
| Befehl | Beschreibung |
|---|---|
mboxshell [FILE] | Eine Datei in der TUI öffnen (Standardaktion) |
mboxshell open <path> | Eine MBOX-Datei in der TUI öffnen |
mboxshell index <path> [-f/--force] | Den binären Index erstellen oder neu erstellen |
mboxshell stats <path> [--json] | Statistiken über eine MBOX-Datei anzeigen |
mboxshell search <path> <query> [--json] | Nachrichten von der Kommandozeile aus durchsuchen |
mboxshell export <path> -f <format> -o <output> [--query <q>] | Nachrichten exportieren (Formate: eml, csv, txt, html, mbox) |
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header] | Mehrere MBOX-Dateien zu einer zusammenführen |
mboxshell attachments <path> -o <output> | Alle Anhänge extrahieren |
mboxshell completions <shell> | Shell-Completions generieren (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Eine Man-Page generieren |
Globale Flags:
| Flag | Beschreibung |
|---|---|
-f, --force | Index-Neuerstellung erzwingen, auch wenn einer existiert (in export ist -f --format — schreiben Sie dort --force aus) |
-v, --verbose | Log-Ausführlichkeit erhöhen (-v info, -vv debug, -vvv trace) |
--lang <en|es> | Oberflächensprache erzwingen (standardmäßig automatisch erkannt) |
Merge-Flags:
| Flag | Beschreibung |
|---|---|
--no-dedup | Duplikat-Message-ID-Erkennung überspringen und die Eingaben byte-für-byte verketten (Dedup ist standardmäßig aktiviert) |
--source-header | Einen X-Mbox-Source: <mailbox name>-Header in jede Nachricht einfügen, sodass ein zusammengeführtes Archiv bis zum Postfach, aus dem jede E-Mail stammt, nachverfolgbar bleibt |
Das Quell-Label ist der Postfachname, den Sie sehen: Bei einem Apple Mail-Export — einem Verzeichnis Inbox.mbox, das eine Datei mit dem buchstäblichen Namen mbox enthält — liest es Inbox.mbox, nicht mbox. Postfächer, die andernfalls dasselbe Label teilen würden, werden gegeneinander disambiguiert (Work/Inbox.mbox vs Personal/Inbox.mbox).
Terminal-UI

Tastenkürzel
| Taste | Aktion |
|---|---|
j / k | Nächste / vorherige Nachricht |
g / G | Erste / letzte Nachricht |
PgDn / PgUp | Seite nach unten / oben |
Enter | Nachricht öffnen / zur Nachrichtenansicht wechseln |
Shift-↑ / Shift-↓ | Ausgewählten Nachrichtentext scrollen (behält den Listenfokus); ein Positionsindikator (Top / NN% / Bot) wird im Nachrichtenrahmen angezeigt |
Tab / Shift-Tab | Panel-Fokus durchlaufen |
Esc | Zurück zur Liste / Popup schließen |
/ | Suchleiste öffnen |
f | Suchfilter-Popup öffnen |
n / N | Nächstes / vorheriges Suchergebnis |
Space | Nachricht markieren / Markierung aufheben |
* | Alle markieren / Markierung aufheben |
s | Sortierspalte durchlaufen (Date, From, Subject, Size) |
S | Sortierrichtung umschalten |
e | Nachricht exportieren (EML, TXT, CSV, Attachments) |
a | Anhänge anzeigen (j/k zum Navigieren, Enter zum Speichern, A zum Speichern aller) |
t | Threaded-Ansicht (Konversation) umschalten |
l | Labels-Seitenleiste anzeigen / fokussieren / ausblenden |
h | Vollständige Header umschalten |
r | Rohe Nachrichtenquelle umschalten |
1 / 2 / 3 | Layout: nur Liste / horizontale Teilung / vertikale Teilung |
? | Hilfe |
q | Beenden |
Suchsyntax
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
Unterstützte Eingabeformate
| Format | Erweiterung | Beschreibung |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Standardformat. Google Takeout, Thunderbird, Unix-Server |
| Google Groups-Export | topics.mbox | Innerhalb eines Takeout-Archivs, unter <group>@googlegroups.com/. Der Dateiname ist lokalisiert (temas.mbox, …), daher wird das Postfach nach der Gruppe benannt — siehe docs/GOOGLE-GROUPS.md |
| Apple Mail-Paket | Name.mbox/mbox | Die innere Datei wird gelesen; das Postfach wird nach dem Paket benannt |
Leistung
Getestet mit echten Google Takeout MBOX-Dateien:
| Dateigröße | Nachrichten | Indizierung | Erneutes Öffnen |
|---|---|---|---|
| 500 MB | ~5.000 | ~3 s | < 1 s |
| 5 GB | ~50.000 | ~30 s | < 1 s |
| 50 GB | ~500.000 | ~5 min | < 1 s |
Die Navigation in der Nachrichtenliste ist dank virtuellem Scrolling (nur sichtbare Zeilen werden gerendert) sofort.
Konfiguration
Die Konfigurationsdatei befindet sich unter ~/.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 = ","
Architektur
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
Wichtige Abhängigkeiten
| Crate | Zweck |
|---|---|
ratatui + crossterm | Terminal-UI |
mail-parser | MIME/RFC 5322-Parsing |
encoding_rs | Zeichensatz-Dekodierung |
chrono | Datum und Zeitzonen |
clap | CLI-Argument-Parsing |
serde + bincode | Index-Serialisierung |
sha2 | Index-Integritätsprüfung |
lru | Cache für dekodierte Nachrichten |
tracing | Strukturiertes Logging |
Sponsoren
mboxshell wird offen entwickelt und unterstützt von:
- Colorvivo — Experten für WordPress, KI und digitale Medien.
- Stackscale — Experten für private Cloud-Infrastruktur.
Wenn Ihr Unternehmen mboxshell nützlich findet und die weitere Entwicklung unterstützen möchte, siehe .github/FUNDING.yml oder kontaktieren Sie uns über carrero.es.
Dokumentation
Das vollständige Benutzerhandbuch deckt jeden Befehl, jedes Tastenkürzel, jeden Suchoperator, jede Exportoption und jeden Konfigurationsschlüssel ab:
- docs/MANUAL.md — Benutzerhandbuch (Englisch)
- docs/MANUAL-ES.md — Manual de usuario (Spanisch)
Changelog
Siehe CHANGELOG.md für die vollständige Versionshistorie.
Lizenz
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Quellcode: https://github.com/dcarrero/mboxshell