
mboxshell v0.7.1
mboxShell. عارض طرفية سريع لملفات MBOX مهما كان حجمها. افتح رسائل البريد الإلكتروني من النسخ الاحتياطية لـGmail Takeout (50GB+) وابحث فيها وصدّرها دون تحميلها في الذاكرة. مبني بلغة Rust.
mboxShell
عارض طرفية سريع لملفات MBOX بأي حجم. افتح وابحث وصدّر رسائل البريد الإلكتروني من نسخ Gmail الاحتياطية (50 جيجابايت+) دون تحميلها في الذاكرة.
لماذا يوجد هذا المشروع
عندما تصدّر بريدك الإلكتروني من Gmail باستخدام Google Takeout، تحصل على ملف واحد أو أكثر بامتداد .mbox قد يصل وزنها إلى عشرات الجيجابايت — بالإضافة إلى صندوق بريد واحد لكل مجموعة Google تملكها، وهو أمر يسهل تفويته ويمكن أن يكون أكبر من تصدير Gmail نفسه. لا توجد أداة طرفية متعددة المنصات تتيح لك فتح تلك الملفات والبحث فيها وتصفحها بكفاءة دون تحميلها بالكامل في الذاكرة.
تم بناء mboxShell لحل هذه المشكلة: افتح ملف MBOX بحجم 50 جيجابايت في ثوانٍ، وتنقل بسلاسة عبر مئات الآلاف من الرسائل، وابحث حسب المرسل أو التاريخ أو المحتوى، وصدّر ما تحتاجه. كل ذلك من الطرفية، دون واجهة رسومية أو خادم أو تبعيات خارجية.
حالات الاستخدام
- تصفح نسخ Gmail الاحتياطية (Google Takeout) مع تسمياتها الأصلية
- قراءة المجموعات التي تملكها، التي يصدّرها 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.
الميزات
- لا يحمّل الملف في الذاكرة أبدًا. يستخدم إدخال/إخراج تدفقي مع مخزن مؤقت بحجم 1 ميجابايت. ملف MBOX بحجم 100 جيجابايت يستخدم تقريبًا نفس ~500 ميجابايت من ذاكرة الوصول العشوائي مثل ملف بحجم 1 جيجابايت (فقط فهرس البيانات الوصفية يعيش في الذاكرة).
- فهرسة دائمة. أول فتح ينشئ فهرسًا ثنائيًا (
.mboxshell.idx) بحيث تستغرق عمليات الفتح اللاحقة أقل من ثانية. - دعم كامل لـ Gmail. يكتشف ويعرض
X-Gmail-Labelsكمجلدات افتراضية في لوحة جانبية، مما يتيح لك التصفية حسب الوارد، المرسل، المميز بنجمة، التسميات المخصصة، إلخ. - صناديق بريد Google Groups. يقرأ ملفات
topics.mboxالتي يشحنها أرشيف Takeout لكل مجموعة تملكها، ويسميها باسم المجموعة بدلاً من اسم الملف غير المعبّر، ويعرض المجموعة كتسمية افتراضية، ويجمع المحادثات حسب معرّفX-GM-THRIDالدقيق. - ترميزات صحيحة. يفك ترميز الكلمات المشفرة 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
# أو ضعه في دليل محلي للمستخدم
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
بدء سريع
# افتح ملف 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> | فتح ملف 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، 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 المكرر ودمج المدخلات بايتًا ببايت (إزالة التكرار مفعلة افتراضيًا) |
--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] البحث حسب المرسل
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
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 ميجابايت
size:>1mb size:<5mb بين 1 و5 ميجابايت
-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 | الملف الداخلي هو ما يُقرأ؛ يُسمى صندوق البريد باسم الحزمة |
الأداء
تم اختباره مع ملفات MBOX حقيقية من Google Takeout:
| حجم الملف | الرسائل | الفهرسة | إعادة الفتح |
|---|---|---|---|
| 500 ميجابايت | ~5,000 | ~3 ثوانٍ | < 1 ثانية |
| 5 جيجابايت | ~50,000 | ~30 ثانية | < 1 ثانية |
| 50 جيجابايت | ~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 # CLI مع clap
+-- 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، multipart، مجموعات الأحرف
| +-- 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)، < 200ms لـ 1M رسالة)
| +-- fulltext.rs # بحث نص كامل تدفقي
+-- export/
| +-- eml.rs # تصدير إلى .eml
| +-- csv.rs # تصدير ملخص إلى CSV (UTF-8 BOM)
| +-- text.rs # تصدير إلى نص عادي
| +-- attachment.rs # استخراج المرفقات
| +-- mbox.rs # دمج MBOX مع إزالة التكرار وترويسة المصدر
+-- tui/
+-- app.rs # الحالة العامة (Elm Architecture)
+-- 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 | واجهة الطرفية |
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