
mboxshell v0.6.2
mboxShell. عارض طرفية سريع لملفات MBOX مهما كان حجمها. افتح رسائل البريد الإلكتروني من النسخ الاحتياطية لـGmail Takeout (50GB+) وابحث فيها وصدّرها دون تحميلها في الذاكرة. مبني بلغة Rust.
mboxShell
عارض طرفية سريع لملفات MBOX مهما كان حجمها. افتح رسائل البريد الإلكتروني وابحث فيها وصدرها من نسخ Google Takeout الاحتياطية (بأحجام تتجاوز 50 جيجابايت) دون تحميلها في الذاكرة.
لماذا وُجد هذا المشروع
عندما تصدّر بريدك الإلكتروني من Gmail باستخدام Google Takeout، تحصل على ملف واحد أو أكثر بامتداد .mbox قد يصل وزنها إلى عشرات الجيجابايت. لا توجد أداة طرفية متعددة المنصات تتيح لك فتح تلك الملفات والبحث فيها وتصفحها بكفاءة دون تحميلها بالكامل في الذاكرة.
تم بناء mboxShell لحل هذه المشكلة: افتح ملف MBOX بحجم 50 جيجابايت في ثوانٍ، وتنقل بين مئات الآلاف من الرسائل بسلاسة، وابحث حسب المرسل أو التاريخ أو المحتوى، وقم بتصدير ما تحتاجه. كل ذلك من الطرفية، دون واجهة رسومية، ودون خادم، ودون تبعيات خارجية.
حالات الاستخدام
- تصفح النسخ الاحتياطية لـ Gmail (Google Takeout) مع تسمياتها الأصلية
- تحليل أرشيفات البريد على الخوادم، أثناء عمليات الترحيل أو التدقيق
- البحث في الرسائل داخل ملفات MBOX من أي مصدر (Thunderbird، خوادم Unix، إلخ.)
- تصدير الرسائل إلى EML أو CSV أو نص عادي لمزيد من المعالجة
- استخراج المرفقات بشكل فردي أو جماعي
- دمج ملفات MBOX متعددة في ملف واحد مع إزالة المكررات
متوفر أيضًا على Mac: mboxViewer
إذا كنت تفضّل تجربة رسومية أصلية على macOS، جرّب mboxViewer — تطبيق Mac أصلي طوّره الفريق نفسه. يوفر واجهة مألوفة بأسلوب صناديق البريد لفتح ملفات MBOX وتصفحها والبحث فيها دون الحاجة إلى استيرادها إلى عميل بريد. اسحب ملف .mbox وأفلته، وستحصل على وصول فوري إلى جميع رسائلك ومرفقاتك وتسمياتك في نافذة macOS أصلية ونظيفة. مثالي للمستخدمين الذين يريدون قوة محرك تحليل mboxShell مع راحة واجهة رسومية لسطح المكتب.
متوفر أيضًا في متصفحك: Online Mbox Viewer
هل تحتاج إلى إلقاء نظرة على ملف MBOX دون تثبيت أي شيء؟ جرّب Online Mbox Viewer — تطبيق ويب مجاني بترخيص MIT من المؤلف نفسه. يفتح ملفات .mbox ويعرضها بالكامل داخل متصفحك: لا يُرفع أي شيء إلى أي خادم، لذلك يبقى بريدك على جهازك. مثالي لإلقاء نظرة سريعة من أي جهاز. الكود المصدري على github.com/dcarrero/online-mbox-viewer.
الميزات
- لا يقوم أبدًا بتحميل الملف في الذاكرة. يستخدم إدخال/إخراج تدفقي (streaming I/O) مع مخزن مؤقت بحجم 1 ميجابايت. ملف MBOX بحجم 100 جيجابايت يستهلك نفس مقدار الذاكرة العشوائية (~500 ميجابايت) تقريبًا الذي يستهلكه ملف بحجم 1 جيجابايت (فقط فهرس البيانات الوصفية يعيش في الذاكرة).
- فهرسة دائمة. أول فتح للملف ينشئ فهرسًا ثنائيًا (
.mboxshell.idx) بحيث لا تستغرق عمليات الفتح اللاحقة أكثر من ثانية. - دعم كامل لـ Gmail. يكتشف ويعرض
X-Gmail-Labelsكمجلدات افتراضية في لوحة جانبية، مما يتيح لك التصفية حسب الوارد (Inbox) والصادر (Sent) والمميز بنجمة (Starred) والتسميات المخصصة وغيرها. - ترميزات صحيحة. يفك ترميز الكلمات المشفّرة وفق RFC 2047، ويدعم 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) أو نص عادي. استخراج المرفقات بعد فك ترميزها.
- ملف ثنائي واحد. لا حاجة لبيئة تشغيل ولا تبعيات. ملف تنفيذي بحجم ~5 ميجابايت يعمل على Linux وmacOS وWindows.
- واجهة طرفية متكاملة. تنقل بلوحة المفاتيح (بأسلوب 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
# 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
أوامر سطر الأوامر
| الأمر | الوصف |
|---|---|
mboxshell [FILE] | فتح ملف في واجهة TUI (الإجراء الافتراضي) |
mboxshell open <path> | فتح ملف MBOX في واجهة TUI |
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 متعددة في ملف واحد |
mboxshell attachments <path> -o <output> | استخراج جميع المرفقات |
mboxshell completions <shell> | إنشاء إكمالات الصدفة (bash، zsh، fish، powershell، elvish) |
mboxshell manpage | إنشاء صفحة دليل (man page) |
خيارات عامة:
| الخيار | الوصف |
|---|---|
-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 — مجلد Inbox.mbox يحتوي على ملف يُسمى حرفيًا mbox — تتم قراءته كـ Inbox.mbox وليس mbox. أما صناديق البريد التي قد ينتهي بها الأمر إلى مشاركة نفس التسمية فيتم تمييزها عن بعضها البعض (Work/Inbox.mbox مقابل Personal/Inbox.mbox).
واجهة الطرفية

اختصارات لوحة المفاتيح
| المفتاح | الإجراء |
|---|---|
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] 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
after:2024-01-01 After a date
size:>1mb Messages larger than 1 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
صيغ الإدخال المدعومة
| الصيغة | الامتداد | الوصف |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | الصيغة القياسية. Google Takeout وThunderbird وخوادم Unix |
الأداء
تم اختباره مع ملفات MBOX حقيقية من Google Takeout:
| حجم الملف | الرسائل | الفهرسة | إعادة الفتح |
|---|---|---|---|
| 500 MB | ~5,000 | ~3 s | < 1 s |
| 5 GB | ~50,000 | ~30 s | < 1 s |
| 50 GB | ~500,000 | ~5 min | < 1 s |
التنقل في قائمة الرسائل فوري بفضل التمرير الافتراضي (virtual scrolling) (يتم عرض الصفوف المرئية فقط).
الإعدادات
يقع ملف الإعدادات في ~/.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
التبعيات الأساسية
| الحزمة (Crate) | الغرض |
|---|---|
ratatui + crossterm | واجهة الطرفية |
mail-parser | تحليل MIME/RFC 5322 |
encoding_rs | فك ترميز مجموعات المحارف |
chrono | التواريخ والمناطق الزمنية |
clap | تحليل وسائط سطر الأوامر |
serde + bincode | تسلسل الفهرس |
sha2 | التحقق من سلامة الفهرس |
lru | ذاكرة تخزين مؤقت للرسائل المفكوك ترميزها |
tracing | تسجيل منظم |
الرعاة
يُطوَّر mboxshell بشكل مفتوح ومدعوم من:
- Colorvivo — خبراء في WordPress والذكاء الاصطناعي والوسائط الرقمية.
- 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