
mboxshell v0.7.3
mboxShell. عارض طرفية سريع لملفات MBOX مهما كان حجمها. افتح رسائل البريد الإلكتروني من النسخ الاحتياطية لـGmail Takeout (50GB+) وابحث فيها وصدّرها دون تحميلها في الذاكرة. مبني بلغة Rust.
mboxShell
عارض طرفي سريع لملفات MBOX بأي حجم. افتح وابحث وصدّر رسائل البريد الإلكتروني من نسخ Gmail Takeout الاحتياطية (50 GB+) دون تحميلها في الذاكرة.
لماذا يوجد هذا المشروع
عند تصدير بريدك الإلكتروني من Gmail باستخدام Google Takeout، تحصل على ملف واحد أو أكثر بامتداد .mbox قد يزن عشرات الجيجابايت — بالإضافة إلى صندوق بريد آخر لكل مجموعة Google تملكها، وهو أمر يسهل تفويته وقد يكون أكبر من تصدير Gmail نفسه. لا يوجد أداة طرفية متعددة المنصات تتيح لك فتح هذه الملفات والبحث فيها وتصفحها بكفاءة دون تحميلها بالكامل في الذاكرة.
تم بناء mboxShell لحل هذه المشكلة: افتح ملف MBOX بحجم 50 GB في ثوانٍ، وتنقل بين مئات الآلاف من الرسائل بسلاسة، وابحث حسب المرسل أو التاريخ أو المحتوى، وصدّر ما تحتاجه. كل ذلك من الطرفية، بدون واجهة رسومية، بدون خادم، بدون تبعيات خارجية.
حالات الاستخدام
- تصفح نسخ 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 MB. ملف MBOX بحجم 100 GB يستخدم تقريبًا نفس ~500 MB من الذاكرة العشوائية مثل ملف بحجم 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. - تجميع المحادثات. يجمع الرسائل في سلاسل باستخدام خوارزمية JWZ (نفس المستخدمة في Netscape/Mozilla)، أو معرّف المحادثة الخاص بصندوق البريد عندما يكون متاحًا.
- بحث متقدم. تصفية حسب الحقل (
from:،subject:،date:،body:،has:attachment،label:، إلخ)، ونطاقات التاريخ، ومرشحات الحجم، ومعاملات AND/OR، والنفي. - تصدير مرن. تصدير فردي أو جماعي إلى EML أو CSV (متوافق مع Excel) أو نص عادي. استخراج المرفقات المفكوكة الترميز.
- ملف تنفيذي واحد. بدون بيئة تشغيل، بدون تبعيات. ملف تنفيذي بحجم ~5 MB يعمل على 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
# 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> | فتح ملف 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 | توليد صفحة دليل (man page) |
الأعلام العامة:
| العلم | الوصف |
|---|---|
-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 | تبديل عمود الترتيب (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 | الملف الداخلي هو ما يتم قراءته؛ يُسمى صندوق البريد باسم الحزمة |
الأداء
تم اختباره بملفات 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 |
التنقل في قائمة الرسائل فوري بفضل التمرير الافتراضي (يتم عرض الصفوف المرئية فقط).
الإعدادات
يقع ملف الإعدادات في ~/.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 | الواجهة الطرفية |
mail-parser | تحليل MIME/RFC 5322 |
encoding_rs | فك ترميز مجموعات المحارف |
chrono | التواريخ والمناطق الزمنية |
clap | تحليل وسائط CLI |
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 (بالإسبانية)
سجل التغييرات
راجع CHANGELOG.md للحصول على سجل الإصدارات الكامل.
الترخيص
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es
الكود المصدري: https://github.com/dcarrero/mboxshell