
mboxshell v0.6.2
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 dutzende Gigabyte wiegen können — plus ein weiteres Postfach pro Google-Gruppe, die Sie besitzen, was leicht übersehen wird und größer als der Gmail-Export selbst sein kann. Es gibt kein plattformübergreifendes Terminal-Tool, mit dem Sie diese Dateien effizient öffnen, durchsuchen und browsen 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 flüssig 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
- Eigene Gruppen lesen, die von Takeout als eigene Postfächer exportiert werden — oft die größten Dateien im Archiv
- Mail-Archive analysieren auf Servern, bei Migrationen oder Audits
- Nachrichten durchsuchen in MBOX-Dateien aus beliebigen Quellen (Thunderbird, Unix-Server usw.)
- Nachrichten exportieren als EML, CSV oder Klartext zur weiteren Verarbeitung
- Anhänge extrahieren einzeln oder in großen Mengen
- Mehrere MBOX-Dateien zusammenführen in eine, mit Entfernung von Duplikaten
Auch für Mac: mboxViewer
Wenn Sie eine native grafische Erfahrung auf macOS bevorzugen, schauen Sie sich mboxViewer an — eine native Mac-App vom selben Team. Sie bietet eine vertraute Postfach-ähnliche Oberfläche zum Öffnen, Durchsuchen und Suchen von MBOX-Dateien, ohne sie jemals in einen Mail-Client zu importieren. Ziehen Sie Ihre .mbox-Datei per Drag & Drop hinein und Sie erhalten sofortigen Zugriff auf alle Ihre Nachrichten, Anhänge und Labels in einem sauberen, nativen macOS-Fenster. Ideal für Benutzer, die die Leistung der mboxShell-Parsing-Engine mit dem Komfort einer Desktop-GUI wünschen.
Auch im Browser: Online Mbox Viewer
Müssen Sie schnell 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: Es wird nichts auf einen Server hochgeladen, sodass Ihre E-Mails auf Ihrem Gerät bleiben. Perfekt für einen schnellen Blick von jedem Gerät. Quellcode unter github.com/dcarrero/online-mbox-viewer.
Funktionen
- Lädt die Datei nie in den Speicher. Verwendet Streaming-I/O mit einem 1-MB-Puffer. Eine 100-GB-MBOX verbraucht ungefähr dieselben ~500 MB RAM wie eine 1-GB-Datei (nur der Metadatenindex 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, sodass Sie nach Posteingang, Gesendet, Markiert, benutzerdefinierten Labels usw. filtern können. - Google-Gruppen-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 und führt Unterhaltungen anhand der exaktenX-GM-THRID-ID zusammen. - Korrekte Kodierungen. Dekodiert RFC-2047-kodierte Wörter, unterstützt UTF-8, ISO-8859-1, Windows-1252, KOI8-R und jeden Zeichensatz, der von
encoding_rserkannt wird. - Unterhaltungs-Threading. Gruppiert Nachrichten in Threads mit dem JWZ-Algorithmus (derselbe, der von Netscape/Mozilla verwendet wird) oder mit der eigenen Konversations-ID des Postfachs, falls vorhanden.
- Erweiterte Suche. Feldspezifische Filter (
from:,subject:,date:,body:,has:attachment,label:usw.), Datumsbereiche, Größenfilter, UND/ODER-Operatoren und Negation. - Flexibler Export. Einzelner oder Massenexport als EML, CSV (Excel-kompatibel), Klartext. Dekodierte Anhangsextraktion.
- Einzelne Binärdatei. Keine Laufzeit, keine Abhängigkeiten. Eine ~5-MB-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 auf Englisch und Spanisch, automatisch anhand der Systemsprache 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 ausführbar machen und in Ihren PATH verschieben:
# Linux / macOS
chmod +x mboxshell-*
sudo mv mboxshell-* /usr/local/bin/mboxshell
# Oder in ein benutzerlokales Verzeichnis legen
mv mboxshell-* ~/.local/bin/mboxshell
Unter Windows verschieben Sie mboxshell-windows-x86_64.exe in einen Ordner in Ihrem PATH oder führen Sie sie direkt aus.
Aus dem Quellcode erstellen
Voraussetzungen: Rust 1.85 oder neuer.
# Klonen und erstellen
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release
# Die Binärdatei liegt unter target/release/mboxshell
# Systemweit installieren:
sudo cp target/release/mboxshell /usr/local/bin/
# Oder nur für den aktuellen Benutzer:
cp target/release/mboxshell ~/.local/bin/
Cross-Kompilierung für andere Plattformen
# Das benötigte Ziel hinzufügen
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
# Für ein bestimmtes Ziel erstellen
cargo build --release --target aarch64-apple-darwin
Installation über Cargo
cargo install --git https://github.com/dcarrero/mboxshell.git
Schnellstart
# Eine MBOX-Datei in der Terminal-UI öffnen
mboxshell mail.mbox
# Indizieren und Statistiken anzeigen
mboxshell index mail.mbox
mboxshell stats mail.mbox
# Von der Befehlszeile aus suchen
mboxshell search mail.mbox "from:[email protected] date:2024"
mboxshell search mail.mbox "has:attachment subject:invoice" --json
# Nachrichten exportieren
mboxshell export mail.mbox --format eml --output ./emails/
mboxshell export mail.mbox --format csv --output summary.csv
# Nur einen Teil eines Archivs übergeben: ein neues Postfach nur mit den Treffern
mboxshell export mail.mbox --format mbox --query "from:[email protected]" -o handover.mbox
# Anhänge extrahieren
mboxshell attachments mail.mbox --output ./attachments/
# Mehrere MBOX-Dateien zusammenführen (Duplikate werden standardmäßig entfernt)
mboxshell merge file1.mbox file2.mbox -o merged.mbox
# Zusammenführen und jede Nachricht mit dem Herkunftspostfach taggen
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header
# Shell-Vervollständigungen generieren
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 [DATEI] | Eine Datei in der TUI öffnen (Standardaktion) |
mboxshell open <pfad> | Eine MBOX-Datei in der TUI öffnen |
mboxshell index <pfad> [-f/--force] | Den binären Index erstellen oder neu erstellen |
mboxshell stats <pfad> [--json] | Statistiken über eine MBOX-Datei anzeigen |
mboxshell search <pfad> <abfrage> [--json] | Nachrichten von der Befehlszeile aus suchen |
mboxshell export <pfad> -f <format> -o <ausgabe> [--query <q>] | Nachrichten exportieren (Formate: eml, csv, txt, html, mbox) |
mboxshell merge <dateien...> -o <ausgabe> [--no-dedup] [--source-header] | Mehrere MBOX-Dateien in eine zusammenführen |
mboxshell attachments <pfad> -o <ausgabe> | Alle Anhänge extrahieren |
mboxshell completions <shell> | Shell-Vervollständigungen generieren (bash, zsh, fish, powershell, elvish) |
mboxshell manpage | Eine Manpage generieren |
Globale Flags:
| Flag | Beschreibung |
|---|---|
-f, --force | Index-Neuerstellung erzwingen, auch wenn einer existiert (bei export ist -f --format — dort --force ausschreiben) |
-v, --verbose | Protokollausfü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-Erkennung anhand der Message-ID überspringen und die Eingaben byteweise verketten (Deduplizierung ist standardmäßig aktiv) |
--source-header | Einen X-Mbox-Source: <postfachname>-Header in jede Nachricht einfügen, sodass ein zusammengeführtes Archiv bis zum Herkunftspostfach jeder E-Mail nachvollziehbar bleibt |
Das Quell-Label ist der Postfachname, den Sie sehen: Bei einem Apple-Mail-Export — ein Verzeichnis Inbox.mbox, das eine Datei mit dem wörtlichen Namen mbox enthält — wird Inbox.mbox gelesen, nicht mbox. Postfächer, die am Ende dasselbe Label teilen würden, werden gegeneinander eindeutig gemacht (Work/Inbox.mbox vs. Personal/Inbox.mbox).
Terminal-UI

Tastaturkü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 Listenfokus); ein Positionsindikator (Top / NN% / Bot) wird im Nachrichtenrahmen angezeigt |
Tab / Shift-Tab | Panel-Fokus wechseln |
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 wechseln (Datum, Von, Betreff, Größe) |
S | Sortierrichtung umschalten |
e | Nachricht exportieren (EML, TXT, CSV, Anhänge) |
a | Anhänge anzeigen (j/k zum Navigieren, Enter zum Speichern, A zum Speichern aller) |
t | Thread-Ansicht (Unterhaltungen) umschalten |
l | Labels-Seitenleiste anzeigen / fokussieren / ausblenden |
h | Vollständige Header umschalten |
r | Rohen Nachrichtenquelltext umschalten |
1 / 2 / 3 | Layout: nur Liste / horizontale Aufteilung / vertikale Aufteilung |
? | Hilfe |
q | Beenden |
Suchsyntax
from:[email protected] Nach Absender suchen
to:[email protected] Nach Empfänger suchen
cc:[email protected] Nach Cc-Empfänger suchen
subject:invoice In der Betreffzeile suchen
body:important text Im Nachrichtentext suchen (Volltext)
filename:report.pdf Nach Anhangsdateiname suchen
id:<message-id@domain> Nach Message-ID suchen
has:attachment Nur Nachrichten mit Anhängen
has:no-attachment Nur Nachrichten ohne Anhänge
label:Inbox Nach Gmail-Label filtern
date:2024-01 Nachrichten vom Januar 2024
date:2024-01-01..2024-06-30 Datumsbereich
before:2024-06-01 Vor einem Datum (dieser Tag ausgeschlossen)
after:2024-01-01 Ab einem Datum (dieser Tag eingeschlossen)
after:2024-01-01 before:2025-01-01 Das gesamte Jahr 2024
size:>1mb Nachrichten größer als 1 MB
size:>1mb size:<5mb Zwischen 1 und 5 MB
-subject:spam Nachrichten mit "spam" im Betreff ausschließen
"exact phrase" Nach einem exakten Ausdruck suchen
from:john subject:budget Implizites UND (beides muss zutreffen)
term1 OR term2 Explizites ODER
from:a OR from:b subject:budget ODER bindet enger: (a ODER b) UND subject
Unterstützte Eingabeformate
| Format | Erweiterung | Beschreibung |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | Standardformat. Google Takeout, Thunderbird, Unix-Server |
| Google-Gruppen-Export | topics.mbox | In einem Takeout-Archiv unter <gruppe>@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 Scrollen (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 mit clap
+-- lib.rs # Modul-Re-Exports
+-- error.rs # Fehlertypen mit thiserror
+-- config.rs # TOML-Konfiguration
+-- mailbox_naming.rs # Benutzerfreundliche Postfachnamen (Apple-Mail-Pakete)
+-- i18n/ # Internationalisierung (EN/ES)
+-- parser/
| +-- mbox.rs # Streaming-Parser (lädt die Datei nie in den Speicher)
| +-- eml.rs # Einzelner EML-Datei-Parser
| +-- mime.rs # MIME-Dekodierung, Multipart, Zeichensätze
| +-- header.rs # RFC-5322-Header, RFC-2047-kodierte Wörter
+-- index/
| +-- builder.rs # Erstellung des binären Index
| +-- reader.rs # Index-Abfragen
| +-- format.rs # Binärformat mit SHA-256-Integritätsprüfung
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Anhangs-Metadaten
| +-- address.rs # RFC-5322-Adressparsing
+-- store/
| +-- reader.rs # Offset-basiertes Lesen mit LRU-Cache
+-- search/
| +-- query.rs # Suchabfrage-Parser
| +-- metadata.rs # Schnelle Indexsuche (O(n), < 200 ms für 1 M Nachrichten)
| +-- fulltext.rs # Streaming-Volltextsuche
+-- export/
| +-- eml.rs # Export als .eml
| +-- csv.rs # Zusammenfassung als CSV exportieren (UTF-8-BOM)
| +-- text.rs # Als Klartext exportieren
| +-- attachment.rs # Anhangsextraktion
| +-- mbox.rs # MBOX-Zusammenführung mit Deduplizierung und Quell-Header
+-- tui/
+-- app.rs # Globaler Zustand (Elm-Architektur)
+-- event.rs # Tastaturereignisbehandlung
+-- ui.rs # Layout- und Render-Dispatch
+-- threading.rs # JWZ-Algorithmus für Unterhaltungs-Threads
+-- theme.rs # Farbthema
+-- widgets/ # Visuelle Komponenten
+-- mail_list.rs # Liste mit virtuellem Scrollen
+-- mail_view.rs # Nachrichtenbetrachter mit Scrollen
+-- sidebar.rs # Labels/Ordner-Panel
+-- header_bar.rs # Obere Leiste
+-- status_bar.rs # Statusleiste
+-- search_bar.rs # Suchleiste
+-- search_popup.rs # Suchfilter-Popup
+-- help_popup.rs # Hilfe-Popup
+-- attachment_popup.rs # Anhang-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 | Daten und Zeitzonen |
clap | CLI-Argumentparsing |
serde + bincode | Index-Serialisierung |
sha2 | Index-Integritätsprüfung |
lru | Cache für dekodierte Nachrichten |
tracing | Strukturierte Protokollierung |
Sponsoren
mboxshell wird offen entwickelt und wird 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, sehen Sie sich .github/FUNDING.yml an oder kontaktieren Sie uns über carrero.es.
Dokumentation
Das vollständige Benutzerhandbuch deckt jeden Befehl, jedes Tastaturkürzel, jeden Suchoperator, jede Exportoption und jeden Konfigurationsschlüssel ab:
- docs/MANUAL.md — Benutzerhandbuch (Englisch)
- docs/MANUAL-ES.md — Manual de usuario (Español)
Änderungsprotokoll
Die vollständige Versionshistorie finden Sie in CHANGELOG.md.
Lizenz
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
Quellcode: https://github.com/dcarrero/mboxshell