## مزامنة نطاقات البريد الإلكتروني المحظورة
تُعد عناوين البريد الإلكتروني المؤقتة طريقاً شائعاً لتسجيلات البريد المزعج والحسابات التي تُستخدم لمرة واحدة. يتوفر في Discourse بالفعل إعداد blocked_email_domains لهذا الغرض، لكن قائمة المجتمع على disposable-email-domains تضم حوالي 10,000 نطاق – وهي كبيرة جداً بحيث يصعب صيانتها عن طريق لصقها في واجهة الإدارة.
وجدنا أيضاً أن نسخة قديمة ملصقة من تلك القائمة كانت تحتوي على حرف إرجاع مخفي (carriage return) ملتصقاً بكل مدخل تقريباً، مما جعل Discourse يطابق عدداً قليلاً من النطاقات فقط. تعيد هذه سير العمل بناء قيمة نظيفة منفصلة بـ | أسبوعياً من المصدر الأصلي، وتُبقي عدداً من نطاقات الأسماء المستعارة للخصوصية ومزودي الخدمات الرئيسيين غير محظورين، ولا تجري الكتابة إلا عند حدوث تغيير فعلي.
إليك مصدر سير العمل:
المصدر على GitHub: GitHub - hhftechnology/discourse-workflow-blocked-email-domains: Discourse Workflows: keep blocked_email_domains synced with the disposable-email-domains list · GitHub
### التثبيت
1. قم بتنزيل مصدر سير العمل من الرابط أعلاه.
2. انتقل إلى صفحة “Workflows” (سير العمل) في واجهة إدارة منتداك (/admin/plugins/discourse-workflows/workflows).
3. انقر على زر “+ New workflow” (سير عمل جديد).
سيتم إنشاء سير عمل جديد وفتحه.
4. انقر على زر ⋮ في الزاوية العلوية اليمنى من لوحة سير العمل.
ستفتح قائمة.
5. اختر “Import” (استيراد) من القائمة.
ستفتح نافذة “Open” (فتح).
6. اختر ملف blocked-email-domains-sync.json من النافذة.
7. انقر على زر “Open” (فتح) في النافذة.
ستتم إضافة محتوى سير العمل.
8. اتبع التعليمات الإضافية المذكورة في “sticky note” (ملاحظة لاصقة) ستظهر الآن في لوحة سير العمل.
### آلية العمل
1. **الاثنين 04:30** (cron، بحسب المنطقة الزمنية لسير العمل) تبدأ عملية التشغيل.
2. **Fetch upstream list** (جلب القائمة من المصدر) يُنزّل disposable_email_blocklist.conf من GitHub. لا حاجة لمفتاح API.
3. **Build list** (بناء القائمة) تُحوّل الحروف إلى أحرف صغيرة وتُزيل المسافات الزائدة، وتتجاهل الفارغات والتعليقات، وتضيف اختياراتك من EXTRAS (إضافات)، وتزيل EXCLUDE (الاستثناءات: الافتراضيات هي simplelogin.com، passmail.net) وقائمة SAFE (آمنة) لمزودي الخدمات الرئيسيين، وتحتفظ بأسماء المضيفين (hostnames) الصالحة فقط، وتزيل التكرارات، وترتب العناصر، وتصلها بـ |. وتتوقف دون كتابة إذا بدت القائمة الأصلية مقطوعة أو احتوت على أقل من 5,000 مدخل.
4. **Changed?** (هل تغيرت؟) تستمر فقط إذا كانت القيمة المبناة تختلف عن الإعداد الحالي (بما في ذلك المسافات البادئة المتبقية).
5. **Save blocked_email_domains** (حفظ النطاقات المحظورة للبريد الإلكتروني) تستخدم عقدة إعداد الموقع الخاصة بالإضافة كـ system، لذا لا حاجة لمفتاح API خاص بالإدارة.
6. **Verify** (تحقق) تقرأ الإعداد مرة أخرى وتتأكد من تطابقه.
7. **Alert: list changed** (تنبيه: قائمة متغيرة) (اختياري) تنشر ملخصاً قصيراً في قناة الدردشة المحددة في المتغير العام $vars.alerts_channel – قم بإنشاء هذا المتغير، أو احذف عقدة Alert (تنبيه).
على قائمة تضم حوالي 10,000 نطاق، تستغرق هذه العملية حوالي 330–490 مللي ثانية من الزمن الفعلي، مع حوالي 33–51 مللي ثانية من زمن تنفيذ الكود ضمن الحد المسموح البالغ 1000 مللي ثانية.
يمكن أن تضيف أول عملية تشغيل آلاف النطاقات. قم بتشغيلها مرة واحدة يدوياً، وتحقق من سجل “Executions” (عمليات التنفيذ)، ثم انشرها. يقع الإعداد تحت: الإدارة → الإعدادات → blocked_email_domains.
تحديث— الأسبوع 3