العودة إلى التحديثات
New releaseAug 7, 2026

mboxshell v0.6.2

mboxShell. عارض طرفية سريع لملفات MBOX مهما كان حجمها. افتح رسائل البريد الإلكتروني من النسخ الاحتياطية لـGmail Takeout (50GB+) وابحث فيها وصدّرها دون تحميلها في الذاكرة. مبني بلغة Rust.

مشاركة

mboxShell

عارض طرفية سريع لملفات MBOX مهما كان حجمها. افتح رسائل البريد الإلكتروني وابحث فيها وصدرها من نسخ Google Takeout الاحتياطية (بأحجام تتجاوز 50 جيجابايت) دون تحميلها في الذاكرة.

License: MIT Rust

Leer en Espanol / Spanish


لماذا وُجد هذا المشروع

عندما تصدّر بريدك الإلكتروني من 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_64mboxshell-linux-x86_64
Linux ARM64mboxshell-linux-aarch64
Linux RISC-V 64mboxshell-linux-riscv64
FreeBSD x86_64mboxshell-freebsd-x86_64
macOS Intelmboxshell-macos-x86_64
macOS Apple Siliconmboxshell-macos-aarch64
Windows x86_64mboxshell-windows-x86_64.exe
Windows ARM64mboxshell-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).

واجهة الطرفية

mboxShell screenshot

اختصارات لوحة المفاتيح

المفتاحالإجراء
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      Stackscale

  • Colorvivo — خبراء في WordPress والذكاء الاصطناعي والوسائط الرقمية.
  • Stackscale — خبراء في البنية التحتية للسحابة الخاصة.

إذا وجدت شركتك أن mboxshell مفيد وترغب في دعم تطويره المستمر، فراجع .github/FUNDING.yml أو تواصل عبر carrero.es.

التوثيق

يغطي دليل المستخدم الكامل كل أمر واختصار لوحة مفاتيح وعامل بحث وخيار تصدير ومفتاح إعدادات:

سجل التغييرات

راجع CHANGELOG.md للحصول على سجل الإصدارات الكامل.

الترخيص

MIT - حقوق النشر (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es

الكود المصدري: https://github.com/dcarrero/mboxshell

الفئات