
mboxshell v0.6.2
mboxShell. किसी भी आकार की MBOX फ़ाइलों के लिए तेज़ टर्मिनल व्यूअर। Gmail Takeout बैकअप (50GB+) से ईमेल खोलें, खोजें और निर्यात करें, बिना उन्हें मेमोरी में लोड किए। Rust में निर्मित।
mboxShell
किसी भी आकार की MBOX फ़ाइलों के लिए तेज़ टर्मिनल व्यूअर। Gmail Takeout बैकअप (50 GB+) से ईमेल खोलें, खोजें और निर्यात करें, बिना उन्हें मेमोरी में लोड किए।
यह प्रोजेक्ट क्यों मौजूद है
जब आप Google Takeout का उपयोग करके Gmail से अपना ईमेल निर्यात करते हैं, तो आपको एक या अधिक .mbox फ़ाइलें मिलती हैं जिनका वज़न दसियों गीगाबाइट हो सकता है — साथ ही आपके स्वामित्व वाले प्रत्येक Google Group के लिए एक अतिरिक्त मेलबॉक्स, जिसे चूकना आसान है और जो Gmail निर्यात से भी बड़ा हो सकता है। ऐसा कोई क्रॉस-प्लेटफ़ॉर्म टर्मिनल टूल नहीं है जो आपको उन फ़ाइलों को पूरी तरह से मेमोरी में लोड किए बिना कुशलतापूर्वक खोलने, खोजने और ब्राउज़ करने दे।
mboxShell उस समस्या को हल करने के लिए बनाया गया था: 50 GB MBOX को सेकंडों में खोलें, सैकड़ों हज़ारों संदेशों को सुचारू रूप से नेविगेट करें, प्रेषक, दिनांक या सामग्री द्वारा खोजें, और जो भी आपको चाहिए उसे निर्यात करें। सब कुछ टर्मिनल से, बिना GUI, बिना सर्वर, बिना बाहरी निर्भरता के।
उपयोग के मामले
- Gmail बैकअप ब्राउज़ करें (Google Takeout) उनके मूल लेबल के साथ
- अपने स्वामित्व वाले समूह पढ़ें, जिन्हें Takeout अपने स्वयं के मेलबॉक्स के रूप में निर्यात करता है — अक्सर संग्रह की सबसे बड़ी फ़ाइलें
- सर्वर पर मेल संग्रह का विश्लेषण करें, माइग्रेशन या ऑडिट के दौरान
- किसी भी स्रोत से MBOX फ़ाइलों में संदेश खोजें (Thunderbird, Unix सर्वर, आदि)
- संदेश निर्यात करें आगे की प्रक्रिया के लिए EML, CSV या सादे पाठ में
- अटैचमेंट निकालें व्यक्तिगत रूप से या थोक में
- कई MBOX फ़ाइलों को एक में मर्ज करें, डुप्लिकेट हटाकर
Mac पर भी: mboxViewer
यदि आप macOS पर मूल ग्राफ़िकल अनुभव पसंद करते हैं, तो mboxViewer देखें — उसी टीम द्वारा बनाया गया एक मूल Mac ऐप। यह MBOX फ़ाइलों को मेल क्लाइंट में आयात किए बिना खोलने, ब्राउज़ करने और खोजने के लिए एक परिचित मेलबॉक्स-शैली इंटरफ़ेस प्रदान करता है। अपनी .mbox फ़ाइल को ड्रैग और ड्रॉप करें, और आपको एक साफ macOS-मूल विंडो में अपने सभी संदेशों, अटैचमेंट और लेबल तक तुरंत पहुंच मिल जाती है। उन उपयोगकर्ताओं के लिए आदर्श जो डेस्कटॉप GUI के आराम के साथ mboxShell के पार्सिंग इंजन की शक्ति चाहते हैं।
आपके ब्राउज़र में भी: Online Mbox Viewer
कुछ भी इंस्टॉल किए बिना MBOX फ़ाइल पर एक नज़र डालने की ज़रूरत है? Online Mbox Viewer आज़माएं — उसी लेखक द्वारा एक मुफ्त, MIT-लाइसेंस प्राप्त वेब ऐप। यह .mbox फ़ाइलों को पूरी तरह से आपके ब्राउज़र में खोलता और रेंडर करता है: कुछ भी किसी सर्वर पर अपलोड नहीं होता, इसलिए आपका ईमेल आपकी मशीन पर रहता है। किसी भी डिवाइस से त्वरित नज़र के लिए एकदम सही। स्रोत कोड github.com/dcarrero/online-mbox-viewer पर।
विशेषताएं
- फ़ाइल को कभी भी मेमोरी में लोड नहीं करता। 1 MB बफर के साथ स्ट्रीमिंग I/O का उपयोग करता है। एक 100 GB MBOX लगभग उतनी ही ~500 MB RAM का उपयोग करता है जितनी 1 GB वाली (केवल मेटाडेटा इंडेक्स मेमोरी में रहता है)।
- स्थायी अनुक्रमण। पहला खोल एक बाइनरी इंडेक्स (
.mboxshell.idx) बनाता है ताकि बाद के खोल एक सेकंड से भी कम समय लें। - पूर्ण Gmail समर्थन।
X-Gmail-Labelsका पता लगाता है और उन्हें साइडबार पैनल में वर्चुअल फ़ोल्डर के रूप में प्रदर्शित करता है, जिससे आप Inbox, Sent, Starred, कस्टम लेबल आदि द्वारा फ़िल्टर कर सकते हैं। - Google Groups मेलबॉक्स।
topics.mboxफ़ाइलों को पढ़ता है जो एक Takeout संग्रह आपके स्वामित्व वाले प्रत्येक समूह के लिए भेजता है, उन्हें अर्थहीन फ़ाइल नाम के बजाय समूह के नाम से नामित करता है, समूह को वर्चुअल लेबल के रूप में दिखाता है, और सटीकX-GM-THRIDआईडी द्वारा वार्तालापों को थ्रेड करता है। - सही एन्कोडिंग। RFC 2047 एन्कोडेड-शब्दों को डिकोड करता है, UTF-8, ISO-8859-1, Windows-1252, KOI8-R, और
encoding_rsद्वारा पहचाने जाने वाले किसी भी charset का समर्थन करता है। - वार्तालाप थ्रेडिंग। JWZ एल्गोरिथ्म (वही जो Netscape/Mozilla द्वारा उपयोग किया जाता है) का उपयोग करके संदेशों को थ्रेड में समूहित करता है, या मेलबॉक्स के अपने वार्तालाप आईडी का उपयोग करता है जब उसके पास होता है।
- उन्नत खोज। फ़ील्ड-विशिष्ट फ़िल्टरिंग (
from:,subject:,date:,body:,has:attachment,label:, आदि), दिनांक सीमाएं, आकार फ़िल्टर, AND/OR ऑपरेटर, और निषेध। - लचीला निर्यात। EML, CSV (Excel-संगत), सादे पाठ में व्यक्तिगत या थोक निर्यात। डिकोडेड अटैचमेंट निष्कर्षण।
- एकल बाइनरी। कोई रनटाइम नहीं, कोई निर्भरता नहीं। एक ~5 MB निष्पादन योग्य जो Linux, macOS और Windows पर चलता है।
- पूर्ण टर्मिनल UI। कीबोर्ड नेविगेशन (vi-शैली), तीन लेआउट मोड, इंटरैक्टिव खोज बार, कॉन्फ़िगर करने योग्य शॉर्टकट।
- द्विभाषी। इंटरफ़ेस अंग्रेजी और स्पेनिश में उपलब्ध है, सिस्टम लोकेल से स्वतः पता लगाया जाता है।
स्थापना
पूर्व-निर्मित बाइनरी (अनुशंसित)
अपने प्लेटफ़ॉर्म के लिए नवीनतम रिलीज़ 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 फ़ाइलों को एक में मर्ज करें |
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 पहचान छोड़ें और इनपुट को बाइट-दर-बाइट जोड़ें (dedup डिफ़ॉल्ट रूप से चालू है) |
--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 निर्यात | 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 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 | Charset डिकोडिंग |
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 - कॉपीराइट (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
स्रोत कोड: https://github.com/dcarrero/mboxshell