الكثير من نطاقات البريد الإلكتروني للمستخدمين لا تعمل مما أدى إلى تعطيل نطاق Mailgun: ماذا نفعل؟

مرحباً!

يحتوي منتداي على العديد من المستخدمين المستوردين الذين يحملون نطاق بريد إلكتروني محدد لم يعد يعمل.
هناك بضعة آلاف من المستخدمين لديهم مثل هذا العنوان للبريد الإلكتروني.

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

أدى ذلك إلى عدد كبير جداً من الارتدادات، مما جعل خدمة Mailgun يعطل نطاق بريدي.

ما الذي يجب أن أفعله مع هذه الحسابات لمنع تكرار هذه المشكلة وحلها؟ الكثير من هذه الحسابات تعود لمستخدمين شرعيين لم يعودوا إلى المنتدى بعد. وهذه ليست بالضرورة حسابات مهجورة.

بسبب هذه المشكلة، لا يستطيع المستخدمون التسجيل في المنتدى حتى يتم إصلاحها.

شاهد التعامل مع رسائل البريد الإلكتروني المرتدة

لسبب ما، لم أجد هذا الموضوع عبر البحث… أعتقد أنني ذعرت! :sweat_smile:

شكرًا جزيلاً لك على إجابتك السريعة!

لكن إذا كان هناك عدد هائل من عناوين البريد الإلكتروني مثل bademail.domain، فقد يكون ما تريده هو القيام بشيء مثل

rake posts:remap['bademail.domain', 'no-email.invalid']

كما هو موضح في Replace a string in all posts. سيؤدي ذلك إلى جعل جميع عناوين البريد الإلكتروني هذه بحيث لا يرسل Discourse إليها. حل جيد آخر سيكون شيئًا مثل

bad=User.find_by_email     
<بحث معين سيحصل على جميعها>
bad.update_all(active: false)

وتعطيل جميع المستخدمين الذين لديهم عناوين بريد إلكتروني مزيفة معروفة. لست متأكدًا تمامًا من كيفية القيام بالجزء الأول من الذاكرة، لكن يجب أن يكون من السهل جدًا استنتاجه.

نعم، فكرت في القيام بذلك للتخلص من نطاقات البريد الإلكتروني هذه.

لاحظت أن طريقة في Discourse تنشئ عناوين بريد إلكتروني بصيغة @no-email.invalid:

أما في قاعدة المُستورد (importer base)، فيتم استخدام @email.invalid وهو مختلف قليلاً:

  1. هل يتم تجاهل هذين النطاقين الوهميين المختلفين كليهما عندما يحاول Discourse إرسال رسائل بريد إلكتروني؟

  2. هل يجب أن أستبدل النطاق غير الفعال لدي بـ @no-email.invalid أم @email.invalid، أم لا يهم؟

@pfaffman، لست متأكداً من فهم سبب ضرورة إعادة تعيين العناوين في المشاركات بدلاً من تغيير عناوين البريد الإلكتروني للمستخدمين:thinking: هذه العناوين الإلكترونية ليست موجودة في المشاركات، إلا إذا كنت أفتقد شيئاً ما.

إذا كانت هذه هي الطريقة الموصى بها، فأنا فقط أرغب في استبدال عناوين @brokendomains.com الخاصة بي في كل ملف شخصي بـ @no-email.invalid أو @email.invalid. يمكنني معرفة كيفية القيام بذلك، لكنني أتساءل فقط عن أي “نطاق وهمي” يجب استخدامه.

أنا متأكد إلى حد كبير أن posts:remap تعيد تعيين النطاق عبر جميع الجداول، لكنهم اضطروا لوضعه في فئة ما.

يمكنك أيضًا كتابة استبدالك الخاص في جدول UserEmails (أو أي اسم آخر له).

أنا متأكد إلى حد كبير أن whatever.invalid ستخبر العالم بأنه عنوان غير صالح ولن تحاول إرساله.

رائع. إذن أعتقد أن هذا سيفي بالغرض؟

User.find_each do |u|
	if u.email.include? "@brokendomain.com"
		u.update(email: SecureRandom.hex + "@email.invalid")
	end
end

أعتقد أنني قد أستخدم

UserEmail.where("email like '%@brokendomain.com'").each do |e|
   e.update(email: SecureRandom.hex + "@email.invalid)
end

قد يعمل كودك أيضًا، لكنني لست متأكدًا مما إذا كان نموذج User قد تم تحديثه ليدعم u.email.include? بعد نقل عناوين البريد الإلكتروني إلى نموذج أو جدول آخر.

جربتُ سكريبتي فقط لأرى ما إذا كان يعيد عناوين البريد الإلكتروني المستهدفة، وهو يعمل.

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

شكرًا جزيلاً لمساعدتك :+1:

أوه، ها هو إعادة التوجيه الذي قصدته. إنه ببساطة

  discourse remap old new

انظر Change the domain name or rename your Discourse.

أعتقد أن ما سبق سيعمل، لكن حل UserEmails ربما يكون أفضل قليلاً.

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

هذا معالجة خاصة من قبل Discourse لأي شيء ينتهي بـ .invalid، وهو نطاق علوي محجوز.