تخطَّ إلى المحتوى
كل الأعمال
// دراسة حالةباكنديعمل

Mail Handler

بريد مؤقّت واسترجاع رموز تحقق مستضاف ذاتيًا — من استقبال البريد حتى واجهة برمجية موثّقة، على بنية تحتية تملكها.

2025 مصر بنية بريد تحتية · أتمتة الاختبارات
بنية البريد التحتيةأتمتة الاختباراتإدارة الخوادم
ابنِ شيئاً مشابهاً

// بالأرقام

15
مفاتيح الصلاحيات

دقيقة، مخزّنة في قاعدة البيانات، وقابلة للتحرير دون إعادة نشر

11
إشارات الترجيح

إشارة مرجّحة تحسم إن كان المرشّح رمز تحقق فعلًا

3
وحدات النشر

استقبال البريد والواجهة البرمجية واللوحة، تتوسّع كلٌّ منها وحدها

5 دقائق
الاحتفاظ الافتراضي

تُمحى الرسائل كل ستين ثانية — تقليل للبيانات بالبناء لا بالسياسة

2
الأوامر المُصرَّح بها

كامل تصريح sudo: postmap، وإعادة تحميل Postfix

// المشكلة

ما الذي كان يواجهه العمل

أي تدفّق آلي يحتاج إلى قراءة بريد حقيقي يصطدم بالجدار نفسه مرّتين. أولًا، يجب أن يصل البريد إلى مكان تتحكّم فيه — أي أن تشغّل خادم بريد لا أن تنادي خادم غيرك. وثانيًا، وهو الأصعب، يجب أن يعثر شيء ما على رمز التحقق داخل رسالة مكتوبة لإنسان. تعبير نمطي من ستة أرقام يبدو ناجحًا حتى يلتقي ببريد الإنتاج، حيث تطابق أرقام الطلبات وأرقام الشحنات وأجزاء البطاقات ومعاملات الروابط النمط نفسه، ويصل الرمز بأرقام عربية-هندية أو كيانات HTML بما يكفي ليصبح مشكلة. وأن يعود إليك الرمز الخطأ أسوأ من ألّا يعود شيء: الإخفاق يمكن إعادة المحاولة بعده، أمّا إجابة خاطئة واثقة فتُعطِب بصمت كل ما كان ينتظرها.

// نظرة عامة

منصة مستضافة ذاتيًا تملك المسار كاملًا من استلام البريد حتى الاستجابة البرمجية. يستقبل Postfix الرسائل على أي عدد من النطاقات الشاملة ويمرّر كل رسالة إلى عملية Node تحلّلها وتستخرج رمز التحقق وتخزّنه ضمن نافذة احتفاظ قصيرة، ثم تتيحه عبر واجهة برمجية بمفتاح لكل مستهلك. ولوحة تحكّم بالعربية أولًا تدير النطاقات والعناوين والمفاتيح والصلاحيات. ثلاث خدمات، وقاعدة بيانات واحدة، وخادم واحد.

// المعمارية

كيف رُكِّب النظام

01استقبال البريد

خادم Postfix

نطاقات شاملة على المنفذ 25

ناقل الأنابيب

عملية Node بلا حالة لكل رسالة

محرّك الاستخراج

ترجيح المرشّحين مع بوّابات ثقة

02طبقة التطبيقات

الواجهة البرمجية

إنشاء العناوين · استرجاع الرموز

لوحة التحكّم

Next.js، بالعربية أولًا

بوّابة الصلاحيات

15 مفتاحًا تُحسم لكل مسار

03البيانات

MongoDB

النطاقات والعناوين والمفاتيح وسجل التدقيق

مستند الإعدادات

الاحتفاظ والقوائم وربط الأدوار

04التشغيل

مهمة الاحتفاظ

دورة محو كل ستين ثانية

مراقب DNS

تحقق من MX وA كل ساعة

الويب هوك

دفع الرمز لحظة وصوله

قاعدة بيانات واحدة هي لوحة التحكّم — الاستقبال والواجهة البرمجية واللوحة تقرأ سلوكها منها.

// قرارات هندسية

القرارات التي شكّلت النظام

القرارات القليلة التي حدّدت سلوك هذا النظام — وماذا اشترى كل قرار منها.

  1. 01

    رجّح المرشّحين ولا تكتفِ بمطابقتهم

    أربع عائلات من الأنماط تولّد المرشّحين، ثم تحسم بينهم أحد عشر إشارة مرجّحة — القرب من كلمات السياق، والبادئات الصريحة مثل «الرمز:»، وأفضلية طول تبلغ ذروتها عند ستة أرقام، وعقوبات للمرشّح الواقع داخل رابط أو بجوار عبارات مثل «المنتهي بـ» و«رقم الشحنة». الاستخراج مسألة ترتيب لا مسألة مطابقة، ومعاملته كمطابقة هو سبب فشل النسخة الساذجة.

  2. 02

    ارفض التخمين

    بوّابتان مستقلتان تقفان بين المرشّح والواجهة البرمجية: حدّ ثقة مطلق، وهامش تنافس يرفض فائزًا قريبًا أكثر من اللازم من صاحب المركز الثاني ما لم يحرز درجة عالية بذاته. ودون أيّهما لا يعيد المحرّك شيئًا إطلاقًا. هذه مقايضة مقصودة تُقدّم الدقة على الشمول — فالرمز الفائت يمكن إعادة طلبه، والرمز الخاطئ يفشل بصمت في ما بعده.

  3. 03

    اجعل العربية هي الحالة الافتراضية

    تُطبَّع الأرقام العربية-الهندية والفارسية إلى ASCII قبل الترجيح، وتُفكّ كيانات HTML الرقمية لأن المرسلين يستعملونها فعلًا للتمويه، ويعمل قاموس الدلالات بالعربية والإنجليزية معًا. المرسلون في هذا السوق يفعلون الثلاثة، فمعالجتها شرط أساسي لا لمسة تجميلية.

  4. 04

    قاعدة البيانات هي لوحة التحكّم

    نوافذ الاحتفاظ وقوائم المرسلين المسموح بهم والهوية البصرية ومصفوفة الصلاحيات كاملةً تعيش في مستند إعدادات واحد تقرأ منه الخدمات الثلاث عبر ذاكرة مؤقتة قصيرة العمر. تغيير سلوك النظام عملية كتابة لا عملية نشر — وهذا ما يجعله قابلًا للصيانة من يملك الخادم بعدك.

  5. 05

    الصلاحيات بيانات لا شيفرة

    خمسة عشر مفتاح صلاحية مخزّنة في قاعدة البيانات وتُربَط بالأدوار من شاشة الإعدادات، وكل مسار يعلن ما يحتاجه. وحارس تطبيع يعيد منح المدير صلاحيات إعداداته دائمًا، فلا يستطيع المشغّل أن يسحب صلاحياته حتى يُقفل على نفسه — النظام مصمَّم ضد خطأ المشغّل لا ضد المهاجم وحده.

  6. 06

    إعداد خادم البريد جزء من حالة التطبيق

    إضافة نطاق تكتب ملفات Postfix وتشغّل postmap وتعيد تحميل الخدمة عبر تصريح sudo محصور في أمرين اثنين لا غير. ثم تتحقق مهمة كل ساعة من أن سجلات MX وA تُحَلّ فعلًا، وتضع علامة على النطاق في الواجهة حين لا تُحَلّ. إعداد النطاق هو الخطوة الأرجح أن تُنفَّذ خطأً يدويًا، فاستحقّت الأتمتة من طرف إلى طرف.

  7. 07

    استقبال بلا حالة

    يُطلق Postfix عملية قصيرة العمر لكل رسالة، لا تحتفظ بحالة بين الرسائل، فتتوسّع الطاقة برفع تزامن النقل لا بإعادة كتابة شيء. أمّا الأعمال الثانوية — عدّادات النطاقات، والويب هوك، وسجل التدقيق — فتفشل بهدوء، لأن الرسالة يجب ألّا تضيع بسبب عطل في شيء ليس هو استقبالها.

// أبرز الملامح

قدرات مميزة

01

استخراج مرجّح بالثقة

أربعة أنماط للمرشّحين وأحد عشر إشارة مرجّحة ترتّب كل رمز محتمل في الرسالة، مع عقوبات للمرشّح داخل رابط أو بجوار عبارات مثل «المنتهي بـ» — وهما أكبر مصدرين للنتائج الخاطئة في البريد الحقيقي.

02

الصمت أفضل من إجابة خاطئة

على حدّ الثقة وهامش التنافس أن يتحققا معًا قبل إعادة أي رمز. وحين تكون الرسالة ملتبسة لا تعيد الواجهة شيئًا، لأن إخفاقًا يمكن إعادة المحاولة بعده أرخص كثيرًا من خطأ واثق.

03

ثنائي اللغة بالبناء

تُطبَّع الأرقام العربية-الهندية والفارسية قبل الترجيح، وتُفكّ كيانات HTML الرقمية، وتُميَّز دلالات السياق بالعربية والإنجليزية سواء — فيصبح المرسل العربي هو الحالة المعتادة لا الحالة الشاذّة.

04

نطاقات شاملة وعناوين بلا حدّ

يمكن ربط أي عدد من النطاقات، ويستقبل كلٌّ منها البريد على كل عنوان. وإضافة نطاق تكتب ملفات Postfix وتعيد تحميل الخدمة وتبدأ التحقق من سجلاته كل ساعة.

05

عزل لكل مفتاح

لكل مفتاح برمجي نطاقاته المسموحة وسقف معدّله وحصّته الإجمالية وحدّ عناوينه، ولا يُخزَّن إلا بصمته — أمّا المفتاح نفسه فيُعرَض مرّة واحدة ولا يُحفظ.

06

صلاحيات قابلة للتحرير أثناء التشغيل

خمسة عشر مفتاح صلاحية تُربَط بالأدوار من شاشة الإعدادات وتسري خلال ثوانٍ، مع بقاء صلاحيات إعدادات المدير غير قابلة للسحب بنيويًا فلا يُقفِل أحد على نفسه.

// المزايا

مجموعة مزايا العمل التجاري

النطاق الوظيفي المُسلَّم عبر كل جزء من المنتج.

معالجة البريد

  • استقبال شامل على أي عدد من النطاقات
  • تحليل كامل لكل رسالة واردة
  • قوائم مرسلين مسموح بهم بالعنوان أو بالنطاق كاملًا
  • نافذة احتفاظ قابلة للضبط مع محو تلقائي
  • دفع عبر ويب هوك لحظة استخراج الرمز

استخراج الرموز

  • مرشّحون رقميون ومتباعدون وذوو بادئات وأبجدية-رقمية
  • ترجيح واعٍ بالسياق بالعربية والإنجليزية
  • عقوبات الروابط والدلالات السلبية
  • حدّ ثقة وهامش تنافس
  • تطبيع الأرقام العربية-الهندية والفارسية
  • فكّ كيانات HTML مع بديل نصّي

الواجهة البرمجية

  • إنشاء عنوان عند الطلب
  • استرجاع أحدث رمز ضمن نافذة زمنية
  • توزيع تلقائي عبر مجموعة النطاقات
  • تحديد معدّل وحصص لكل مفتاح
  • توثيق تفاعلي للواجهة

لوحة التحكّم

  • إدارة النطاقات مع إرشاد إعداد DNS
  • تصفّح العناوين والرسائل
  • إصدار المفاتيح البرمجية وإبطالها
  • تحرير الأدوار والصلاحيات
  • سجل نشاط لكل تعديل
  • مؤشرات عامة للخادم وقاعدة البيانات والاستهلاك

التشغيل

  • خدمات systemd بعزل وسياسات إعادة تشغيل
  • وسيط Nginx عكسي مع TLS
  • تحقق من صحّة DNS كل ساعة
  • سجلات تطبيق مضغوطة ومتناوبة
  • تصريح sudo محصور لإعادة تحميل خادم البريد
  • أداة اختبار حِمل تغطي المسار من SMTP حتى الواجهة
// الأثر

ما الذي تغيّر تشغيليًا

نتائج موثقة من النظام المُسلَّم. وحيث تكون الأرقام الدقيقة سرية، يُذكر التغيّر التشغيلي بدلًا منها.

  • يعمل على خادم افتراضي واحد: Postfix وMongoDB وخدمة برمجية ولوحة تحكّم تحت systemd خلف Nginx
  • عناوين بلا حدّ على أي عدد من النطاقات الشاملة، دون تكلفة لكل صندوق
  • رموز التحقق تُعاد عبر واجهة برمجية موثّقة، أو تُدفع إلى ويب هوك فور وصولها
  • لكل مفتاح نطاقاته المسموحة وسقف معدّله وحصّته الإجمالية وحدّ عناوينه
  • مصفوفة صلاحيات من خمسة عشر مفتاحًا تُحرَّر من اللوحة دون إعادة نشر
  • تُمحى الرسائل في دورة كل ستين ثانية وفق نافذة احتفاظ قابلة للضبط
  • فحوص صحّة DNS كل ساعة تكشف النطاقات المعطوبة قبل ضياع البريد
  • سجل تدقيق كامل لكل تعديل، بما فيه ما تفعله المفاتيح البرمجية
// القيود

ما كان علينا العمل ضمنه

  • البريد يُستقبَل ولا يُستجلَب — النظام يشغّل خادم بريد بدل أن ينادي خادم غيره
  • رموز التحقق أحادية الاستعمال وقصيرة العمر، فالاستخراج يجب أن يصيب من أول مرّة
  • المرسلون العرب يرسلون أرقامًا عربية-هندية وأرقامًا مرمّزة بـ HTML كأمر معتاد
  • سُلّم النظام للعميل ليملكه، فوجب أن يكون سلوكه قابلًا للتغيير دون مطوّر
  • محتوى الرسائل حسّاس وقصير العمر بالتصميم — والاحتفاظ مفروض في الشيفرة
  • ميزانية خادم واحد: كان على كل شيء أن يتعايش على خادم افتراضي متواضع
// دوري

ما الذي تولّيته

من البداية للنهاية في هذا المشروع — من المعمارية ونمذجة البيانات وحتى منتج إنتاجي مُسلَّم.

  • إعداد خادم البريد ودمج ناقل الأنابيب
  • محرّك استخراج الرموز — توليد المرشّحين وترجيحهم وبوّاباتهم
  • الواجهة البرمجية والمصادقة وتحديد المعدّل والحصص
  • نموذج الصلاحيات ولوحة تحكّم الإعدادات
  • لوحة Next.js بالعربية أولًا ومن اليمين إلى اليسار
  • تجهيز الخادم وخدمات systemd وNginx وTLS والجدار الناري
  • المراقبة وتناوب السجلات واستراتيجية النسخ الاحتياطي
// التقنيات

بُني بواسطة

البريد

PostfixmailparserSMTP

الخلفية

Node.jsExpressMongoose

البيانات

MongoDB

الواجهة

Next.jsTypeScriptTailwind CSS

البنية التحتية

LinuxNginxsystemdLet's Encrypt
// متاح للتركيب

شغّل هذا النظام على خادمك

هذا النظام مبنيّ ويعمل بالفعل، فلا يحتاج إلى إعادة بناء ليصير لك. أُثبّته على خادم افتراضي تملكه، وأربط نطاقاتك، وأضبط DNS وشهادات TLS، وأسلّمه لك ببياناته ووثائقه. تحصل على عناوين بلا حدّ على بنيتك التحتية، ولا تغادرها أي رسالة.

  • تثبيت على خادمك — Postfix وقاعدة البيانات والواجهة البرمجية واللوحة، تحت systemd خلف Nginx مع TLS
  • ربط نطاقاتك والتحقق منها، مع ضبط سجلات DNS معك
  • حساب مدير ومفاتيح برمجية وجولة في اللوحة عند التسليم
  • عقد صيانة اختياري للتحديثات والمراقبة والنسخ الاحتياطي وتغييرات النطاقات
راسلني بخصوص هذا

التسعير حسب كل حالة — راسلني بنطاقاتك وحجمك المتوقع وأرسل لك عرضًا.

// Makhloof Studio

تريد شيئاً مثل Mail Handler؟

استوديو برمجيات بوتيك — أنظمة بجودة الوكالات، يبنيها مهندس أول واحد.

ابنِ شيئًا كهذا
WhatsApp