إزعاج المستخدمين: حذف الحسابات تلقائيًا وقائمة النطاقات المحظورة

ألاحظ ظهور عدد صغير لكنه ثابت من حسابات البريد العشوائي (Spam) يتم إنشاؤها على منتداوي Discourse يوميًا. ويبدو أن العديد منها يستخدم عناوين بريد إلكتروني مزيفة أو غير صالحة.

أبحث عن طريقة لأتمتة العملية التالية:

  1. يقوم مستخدم جديد بإنشاء حساب، ويرسل Discourse بريدًا إلكترونيًا للتفعيل/التحقق.
  2. إذا أدى بريد التفعيل إلى ارتداد دائم (Hard Bounce) مؤكد، يتم حذف حساب المستخدم غير المفعّل تلقائيًا.
  3. يسجل النظام نطاق عنوان البريد الإلكتروني المرتد.
  4. إذا أدى إنشاء حسابات جديدة متعددة تستخدم نفس النطاق إلى ارتداد دائم خلال فترة زمنية محددة، يتم إضافة النطاق تلقائيًا إلى قائمة نطاقات البريد الإلكتروني المحظورة.
  5. يجب استثناء مزودي البريد الإلكتروني الشرعيين الشائعة مثل Gmail و Outlook و Yahoo وما إلى ذلك من الحظر التلقائي للنطاقات.

على سبيل المثال، إذا تم إنشاء عدة حسابات تستخدم عناوين بريد إلكتروني مختلفة من suspicious-domain.example خلال بضعة أيام، وارتدّت جميع بريدها الإلكتروني للتفعيل ارتدادًا دائمًا، فسيتم حظر النطاق في النهاية من إنشاء حسابات إضافية.

الهدف هو استخدام بيانات الارتداد كإشارة إضافية لتحديد عمليات التسجيل العشوائي الآلية، مع تنظيف الحسابات غير المفعّلة التي تم إنشاؤها بعناوين بريد إلكتروني غير موجودة تلقائيًا.

هل يمتلك Discourse حاليًا إضافة أو وظيفة موجودة يمكنها تحقيق ذلك؟ وإذا لم يكن كذلك، هل توجد نقاط ربط (Hooks) متاحة في عملية معالجة الارتداد في Discourse يمكن استخدامها لبناء إضافة لتنفيذ هذا؟

مرحباً @LotusJeff

هل ألقيت نظرة على هذه الإعدادات، إذ أعتقد أنها ستساعدك في الوصول إلى جزء من الحل:

قم بتكوين هذه الإعدادات في /admin/settings/

الإعداد القيمة المقترحة التأثير
purge_unactivated_users_grace_period_days 1 يحذف الحسابات غير المفعّلة بعد يوم واحد بدلاً من 14. ليس فورياً كما طُلب في #2، لكنه يحقق نفس التأثير مع تأخير أقل.
blocked_email_domains أضف نطاقات/امتدادات البريد الإلكتروني المعروفة بالإزعاج يدوياً يمنع التسجيل من الجهات المعروفة بالإزعاج

بالنسبة لأي أتمتة حقيقية، أعتقد أنه يجب إنشاء إضافة (أو لا توجد إضافة حالياً据我所知)، أو يمكنك الاطلاع على ميزة سير العمل الجديدة. لا أعرف ما إذا كان ما تريده ممكناً حالياً، لكنها تتحدث بشكل شبه يومي، لذا من يعرف :slight_smile:

بالنسبة لطريقة الإضافة، هناك حدث يمكنك الارتباط به في DiscourseEvent.on(:email_bounce)

من الجدير أيضاً الاطلاع على Configure VERP to handle bouncing e-mails ربما