Skip to content

تصميم البنية ​

يعتمد SirrMesh بنية نموذجية لتوفير حل خادم بريد إلكتروني مرن وقابل للتوسع.

البنية العامة ​

┌─────────────────────────────────────────────┐
│           طبقة العميل                       │
│  (Thunderbird، Outlook، تطبيقات الجوال)     │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│           طبقة البروتوكول                   │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐    │
│  │  SMTP   │  │  IMAP   │  │Submission│    │
│  └─────────┘  └─────────┘  └─────────┘    │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│           طبقة المصادقة                     │
│  ┌──────────┐  ┌─────┐  ┌─────┐  ┌──────┐ │
│  │البلوكتشين│  │LDAP │  │ PAM │  │مخصص  │ │
│  └──────────┘  └─────┘  └─────┘  └──────┘ │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│           طبقة المعالجة                     │
│  ┌─────────┐  ┌──────┐  ┌─────────┐       │
│  │ التصفية │  │التعديل│  │  التحقق │       │
│  │  (Sieve)│  │(DKIM)│  │(SPF/etc)│       │
│  └─────────┘  └──────┘  └─────────┘       │
└──────────────┬──────────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────────┐
│           طبقة التخزين                      │
│  ┌──────────┐  ┌────────────┐             │
│  │قاعدة     │  │  التخزين   │             │
│  │البيانات  │  │(محلي/S3)   │             │
│  │(PG/MySQL)│  └────────────┘             │
│  └──────────┘                              │
└─────────────────────────────────────────────┘

المكونات الأساسية ​

معالجات البروتوكول ​

خادم SMTP ​

  • استقبال وإرسال رسائل البريد الإلكتروني
  • دعم تشفير STARTTLS
  • تنفيذ تحديد المعدل وإجراءات مكافحة البريد المزعج

خادم IMAP ​

  • تخزين واسترجاع البريد الإلكتروني
  • إدارة المجلدات
  • وظيفة البحث في البريد الإلكتروني
  • دعم إشعارات الدفع IDLE

خادم Submission ​

  • إرسال البريد الإلكتروني (المنفذ 587)
  • المصادقة الإلزامية
  • توقيع DKIM التلقائي

وحدات المصادقة ​

مصادقة البلوكتشين ​

go
type BlockchainAuth struct {
    networks map[string]RPCClient
    cache    *AuthCache
}

func (b *BlockchainAuth) Verify(address, signature, message string) bool {
    // 1. استعادة عنوان الموقّع
    // 2. التحقق من تطابق العنوان
    // 3. التحقق من صلاحية الطابع الزمني
    return verified
}

مصادقة LDAP ​

  • دعم Active Directory
  • تعيين الوحدات التنظيمية (OU)
  • مزامنة السمات

مصادقة PAM ​

  • تكامل حسابات النظام
  • دعم وحدات PAM المختلفة

خط أنابيب معالجة الرسائل ​

استقبال البريد → فحص مكافحة البريد المزعج → فحص الفيروسات → قواعد التصفية
    ↓
التخزين في قاعدة البيانات ← توقيع DKIM ← تعديل المحتوى ← قواعد المستخدم

نظام التخزين ​

طبقة قاعدة البيانات ​

  • بيانات المستخدم: معلومات الحساب، الحصص، الإعدادات
  • بيانات وصفية للبريد: المرسل، المستلم، الموضوع، الوقت
  • الفهارس: بحث واسترجاع سريع

تخزين الملفات ​

  • صيغة Maildir: ملف واحد لكل بريد إلكتروني
  • الضغط: ضغط تلقائي للبريد القديم
  • متوافق مع S3: قابل للتوسع إلى التخزين السحابي

تدفق البيانات ​

تدفق إرسال البريد الإلكتروني ​

1. اتصال العميل (SMTP/Submission)
   ↓
2. التحقق من المصادقة
   ↓
3. استقبال محتوى البريد
   ↓
4. التحقق من المستلمين
   ↓
5. تطبيق قواعد التصفية
   ↓
6. توقيع DKIM
   ↓
7. معالجة قائمة الانتظار
   ↓
8. الإرسال إلى الخادم الوجهة

تدفق استقبال البريد الإلكتروني ​

1. اتصال الخادم الخارجي
   ↓
2. فحوصات SPF/DKIM/DMARC
   ↓
3. فحص مكافحة البريد المزعج
   ↓
4. تطبيق قواعد المستخدم (Sieve)
   ↓
5. التخزين في قاعدة البيانات
   ↓
6. حفظ ملف البريد
   ↓
7. إعلام العملاء (IMAP IDLE)

نظام الوحدات ​

الوحدات الأساسية ​

  • auth: مزودي المصادقة
  • storage: خلفيات التخزين
  • filter: تصفية البريد
  • modify: تعديل المحتوى
  • check: فحوصات التحقق

نقاط التوسع ​

go
type Module interface {
    Name() string
    Init(config Config) error
    Process(ctx Context, msg *Message) error
}

تحسين الأداء ​

نموذج التزامن ​

  • تجميعات Goroutine: معالجة الاتصالات المتزامنة
  • الإدخال/الإخراج غير المتزامن: عمليات شبكة غير حاجبة
  • المعالجة بالدفعات: عمليات قاعدة البيانات بالدفعات

استراتيجية التخزين المؤقت ​

  • تخزين المصادقة المؤقت: تقليل استدعاءات RPC للبلوكتشين
  • تخزين بيانات المستخدم المؤقت: البيانات المستخدمة بشكل متكرر في ذاكرة التخزين المؤقت
  • تخزين DNS المؤقت: تقليل استعلامات DNS

تجميع الاتصالات ​

  • تجميع اتصالات قاعدة البيانات: إعادة استخدام اتصالات قاعدة البيانات
  • تجميع اتصالات RPC: إعادة استخدام اتصالات عقد البلوكتشين

تصميم الأمان ​

الحماية متعددة الطبقات ​

  1. طبقة الشبكة: تشفير TLS
  2. طبقة المصادقة: دعم المصادقة متعددة العوامل
  3. طبقة التطبيق: التحقق من المدخلات، الحماية من حقن SQL
  4. طبقة البيانات: التشفير في حالة السكون

تحديد المعدل ​

  • معدل الاتصال: منع إساءة استخدام الاتصال
  • معدل الإرسال: منع البريد المزعج
  • محاولات المصادقة: منع هجمات القوة الغاشمة

قابلية التوسع ​

التوسع الأفقي ​

           ┌─────────────┐
           │موازن الحمل  │
           └──────┬──────┘
                  │
        ┌─────────┼─────────┐
        ▼         ▼         ▼
    ┌──────┐  ┌──────┐  ┌──────┐
    │ عقدة │  │ عقدة │  │ عقدة │
    │  1   │  │  2   │  │  3   │
    └───┬──┘  └───┬──┘  └───┬──┘
        │         │         │
        └─────────┼─────────┘
                  ▼
         ┌────────────────┐
         │  تخزين مشترك   │
         │(قاعدة البيانات/S3)│
         └────────────────┘

فصل المكونات ​

  • النشر المستقل: يمكن توسيع SMTP و IMAP بشكل منفصل
  • التخزين المشترك: مثيلات متعددة تشارك البيانات
  • موازنة الحمل: توزيع ذكي لحركة المرور

المراقبة والسجلات ​

جمع المقاييس ​

  • مقاييس النظام: المعالج، الذاكرة، القرص
  • مقاييس التطبيق: إنتاجية البريد، زمن الاستجابة
  • مقاييس الأعمال: نشاط المستخدم، استخدام التخزين

نظام السجلات ​

سجلات التطبيق → إخراج منظم → تجميع السجلات → منصة التحليلات
                                        (ELK/Loki)

التوفر العالي ​

تجاوز الفشل ​

  • النسخ المتماثل الرئيسي-الثانوي: تكوين رئيسي-ثانوي لقاعدة البيانات
  • التبديل التلقائي: فحوصات الصحة وتجاوز الفشل التلقائي
  • نسخ احتياطي للبيانات: نسخ احتياطي منتظم واختبار الاستعادة

فحوصات الصحة ​

go
type HealthCheck struct {
    Database  bool
    SMTP      bool
    IMAP      bool
    Storage   bool
}

لمزيد من التفاصيل التقنية:

Released under the GPL 3.0 License.