Skip to content
تم إنشاء هذه الصفحة وترجمتها بمساعدة الذكاء الاصطناعي. إذا لاحظت أي أخطاء، لا تتردد في المساهمة في تحسينها. تعديل على GitHub

التثبيت

يمكن استخدام PRX-Email كاعتمادية مكتبة Rust أو بناؤه من المصدر للاستخدام المستقل أو تترجمته كمكوّن WASM لوقت تشغيل PRX.

موصى به

لمعظم المستخدمين، إضافة PRX-Email كـ اعتمادية Cargo هي أسرع طريقة لتكامل قدرات البريد الإلكتروني في مشروع Rust الخاص بك.

المتطلبات الأساسية

المتطلبالحد الأدنىملاحظات
Rust1.85.0 (إصدار 2024)مطلوب لجميع طرق التثبيت
Git2.30+لاستنساخ المستودع
SQLiteمدمجمشمول عبر ميزة rusqlite المدمجة؛ لا حاجة لـ SQLite على النظام
هدف wasm32-wasip1أحدثمطلوب فقط لتترجمة مكوّن WASM

الطريقة 1: اعتمادية Cargo (موصى به)

أضف PRX-Email إلى Cargo.toml الخاص بمشروعك:

toml
[dependencies]
prx_email = { git = "https://github.com/openprx/prx_email.git" }

يسحب هذا المكتبة وجميع الاعتماديات بما فيها rusqlite (SQLite مدمج) وimap وlettre وmail-parser.

اعتماديات البناء

تُترجم ميزة rusqlite المدمجة SQLite من مصدر C. على Debian/Ubuntu قد تحتاج إلى:

bash
sudo apt install -y build-essential pkg-config

على macOS، يلزم توفر أدوات سطر أوامر Xcode:

bash
xcode-select --install

الطريقة 2: البناء من المصدر

استنسخ المستودع وابنه في وضع الإصدار:

bash
git clone https://github.com/openprx/prx_email.git
cd prx_email
cargo build --release

شغّل مجموعة الاختبارات للتحقق من أن كل شيء يعمل:

bash
cargo test

شغّل clippy للتحقق من التنميط:

bash
cargo clippy -- -D warnings

الطريقة 3: مكوّن WASM

يتيح مكوّن WASM تشغيل PRX-Email داخل وقت تشغيل PRX كوحدة WebAssembly في بيئة آمنة. يستخدم المكوّن WIT (أنواع واجهة WebAssembly) لتعريف واجهات استدعاء المضيف.

بناء مكوّن WASM

bash
cd prx_email

# Add the WASM target
rustup target add wasm32-wasip1

# Build the plugin
cd wasm-plugin
cargo build --release --target wasm32-wasip1

يقع المكوّن المُترجم في wasm-plugin/target/wasm32-wasip1/release/prx_email_plugin.wasm.

بدلاً من ذلك، استخدم سكريبت البناء:

bash
chmod +x scripts/build_wasm_plugin.sh
./scripts/build_wasm_plugin.sh

إعداد المكوّن

يتضمن مكوّن WASM مانيفست plugin.toml في دليل wasm-plugin/ يحدد بيانات المكوّن الوصفية وقدراته.

مفتاح أمان الشبكة

بشكل افتراضي، يعمل مكوّن WASM مع تعطيل عمليات الشبكة الحقيقية. لتفعيل اتصالات IMAP/SMTP الفعلية من سياق WASM:

bash
export PRX_EMAIL_ENABLE_REAL_NETWORK=1

عند التعطيل، تعيد العمليات المعتمدة على الشبكة (email.sync وemail.send وemail.reply) خطأ محكوماً مع تلميح الحارس. هذا إجراء أمني لمنع الوصول غير المقصود للشبكة من المكوّنات في البيئة الآمنة.

الاعتماديات

يستخدم PRX-Email الاعتماديات الرئيسية التالية:

الحزمةالإصدارالغرض
rusqlite0.31قاعدة بيانات SQLite مع تترجمة C مدمجة
imap2.4عميل IMAP لمزامنة صندوق الوارد
lettre0.11عميل SMTP لإرسال البريد الإلكتروني
mail-parser0.10تحليل رسائل MIME
rustls0.23TLS لاتصالات IMAP
rustls-connector0.20غلاف تيار TLS
serde / serde_json1.0التسلسل للنماذج واستجابات API
sha20.10SHA-256 لمعرفات الرسائل الاحتياطية
base640.22ترميز base64 للمرفقات
thiserror1.0اشتقاق نوع الخطأ

جميع اتصالات TLS تستخدم rustls (Rust النقي) -- لا اعتمادية على OpenSSL.

التحقق من التثبيت

بعد البناء، تحقق من أن المكتبة تُترجم وتجتاز الاختبارات:

bash
cargo check
cargo test

المخرج المتوقع:

running 7 tests
test plugin::email_plugin::tests::parse_mime_extracts_text_html_and_attachments ... ok
test plugin::email_plugin::tests::references_chain_appends_parent_message_id ... ok
test plugin::email_plugin::tests::reply_sets_in_reply_to_header_on_outbox ... ok
test plugin::email_plugin::tests::parse_mime_fallback_message_id_is_stable_and_unique ... ok
test plugin::email_plugin::tests::list_search_reject_out_of_range_limit ... ok
test plugin::email_plugin::tests::run_sync_runner_respects_max_concurrency_cap ... ok
test plugin::email_plugin::tests::reload_auth_from_env_updates_tokens ... ok

test result: ok. 7 passed; 0 failed; 0 ignored

الخطوات التالية

Released under the Apache-2.0 License.