تم إعداد التقرير التالي لي بواسطة ChatGPT، بناءً على تجربتي الفعلية في تثبيت Discourse (لست خبيرًا تقنيًا جدًا، وقد اعتمدت على الذكاء الاصطناعي للمساعدة في المهام التي أجدها صعبة). لا أحتاج إلى أي مساعدة في الوقت الحالي، لكنني آمل أن يكون التقرير مفيدًا كتعليقات حول 3.5.0.beta2-dev.
==================
عزيزي فريق Discourse،
أرغب في مشاركة بعض تفاصيل استكشاف الأخطاء وإصلاحها حول مشكلات البريد الإلكتروني التي واجهتها أثناء تشغيل Discourse 3.5.0.beta2-dev. لا أحتاج إلى مساعدة مباشرة حيث قررت العودة إلى 3.4.0.beta4-dev، ولكن آمل أن يكون هذا التقرير مفيدًا في تحديد المشكلات المحتملة في أحدث إصدار تطوير.
1. ملخص المشكلة
لقد أجريت تثبيتًا نظيفًا لـ Discourse على مثيل Vultr جديد، باستخدام خدمة SMTP الخاصة بـ 20i (smtp.stackmail.com). ومع ذلك، لم يتم تسليم رسائل البريد الإلكتروني أبدًا، على الرغم من:
- اختبار اتصال SMTP ناجح (
openssl s_client -connect smtp.stackmail.com:587 -starttls smtp). - عدم ظهور أي أخطاء في سجلات بريد 20i (مما يشير إلى أن Discourse لم يكن يرسل رسائل البريد الإلكتروني فعليًا).
- فشل Sidekiq في معالجة مهام البريد الإلكتروني.
كان هذا غير متوقع لأنه قبل بضعة أسابيع، قمت بتثبيت Discourse 3.4.0.beta4-dev بنجاح على مثيل مطابق دون أي مشكلات في البريد الإلكتروني.
بعد تصحيح شامل للأخطاء، اكتشفت أن تثبيتي الحالي قد قام بتثبيت Discourse 3.5.0.beta2-dev بشكل غير متوقع، مما ساهم على الأرجح في المشكلات.
2. المشكلات الرئيسية المحددة
أ. لم يتم تسليم رسائل البريد الإلكتروني
- إعدادات SMTP كانت صحيحة، تم التحقق منها عبر اختبار يدوي (نجحت اختبارات
swaksوopenssl). - تم إدراج رسائل البريد الإلكتروني في Sidekiq ولكن لم يتم استلامها أبدًا.
- سجلات بريد 20i أظهرت عدم وجود رفض أو محاولات تسليم (مما يشير إلى أن الرسائل لم تغادر Discourse أبدًا).
- لم تظهر أي أخطاء متعلقة بالبريد الإلكتروني في
production.log(أعادgrep "smtp"لا شيء).
ب. مشكلات Sidekiq و Redis
- في البداية، لم يكن Sidekiq قيد التشغيل (أعاد
Sidekiq::Workers.new.sizeالقيمة0). - فشل إعادة تشغيل Sidekiq يدويًا (
sv restart sidekiq) لأن Sidekiq كان مفقودًا كخدمة. - كان Redis قيد التشغيل (
redis-cli pingأعادPONG)، ولكن سجلات Discourse لا تزال تظهر أخطاء في اتصال Redis (Errno::ECONNREFUSED). - سجلات Sidekiq أشارت إلى فشل المهام بسبب مشكلات اتصال Redis، على الرغم من تأكيد نشاط Redis.
- بدء تشغيل Sidekiq يدويًا (
bundle exec sidekiq) سمح بمعالجة المهام، ولكن رسائل البريد الإلكتروني لم تُرسل بعد.
ج. عدم تطابق الإصدار بين التثبيتات
- تثبيتي السابق (الذي عمل) كان على 3.4.0.beta4-dev.
- تثبيتي الحالي قام بتثبيت 3.5.0.beta2-dev بشكل غير متوقع، على الرغم من استخدام نفس طريقة الإعداد.
- نظرًا لأن البريد الإلكتروني عمل بشكل مثالي في 3.4.0.beta4-dev، أشتبه في وجود تراجع أو تغيير كاسر في 3.5.
3. الإجراءات المتخذة (جميعها فشلت)
حاولنا بشكل منهجي الحلول التالية:
تم تأكيد اتصال SMTP باستخدام:
openssl s_client -connect smtp.stackmail.com:587 -starttls smtp # ناجح
swaks --to my-email --server smtp.stackmail.com --port 587 --auth LOGIN # ناجح
تم التحقق من أن رسائل البريد الإلكتروني تم إدراجها:
Jobs.enqueue(:user_email, type: :test_message, to_address: 'masden@kumagaku.ac.jp') # أعاد معرف مهمة
Sidekiq::Queue.new("default").size # أعاد 0 (مما يشير إلى معالجة المهمة)
تم فحص سجلات Discourse:
grep "smtp" /shared/log/rails/production.log # لا توجد أخطاء متعلقة بـ SMTP
- فشل اتصال Redis (
Errno::ECONNREFUSEDفيproduction.log).
تمت إعادة تشغيل وتفعيل الخدمات يدويًا:
sv restart sidekiq # فشل، الخدمة مفقودة
redis-cli ping # تم التأكيد على التشغيل
bundle exec sidekiq # تمت معالجة المهام ولكن لم تُرسل رسائل البريد الإلكتروني
تم التحقق مما إذا كانت رسائل البريد الإلكتروني يتم حظرها بواسطة 20i:
- لا توجد رفض أو محاولات تسليم في سجلات بريد 20i.
- إذا تم رفض رسائل البريد الإلكتروني، يجب أن يكون هناك إدخال في السجل، ولكن لم يظهر شيء.
4. الخلاصة: العودة إلى 3.4.0.beta4-dev
بعد استكشاف الأخطاء وإصلاحها بشكل مكثف، قررت مسح التثبيت وإعادة تثبيت 3.4.0.beta4-dev، حيث أن تثبيتي السابق عمل بشكل لا تشوبه شائبة على هذا الإصدار.
بينما لا أحتاج إلى مساعدة مباشرة، أردت الإبلاغ عن هذه المشكلات لأن:
- قد تكون معالجة البريد الإلكتروني قد تغيرت في 3.5، مما يمنع تسليم SMTP.
- خدمة Sidekiq المفقودة وأخطاء Redis تشير إلى مشكلات في معالجة المهام الخلفية في 3.5.
- نظرًا لأنني تمكنت من تثبيت 3.4.0.beta4-dev دون مشاكل، فهذا يشير إلى تراجع محتمل في 3.5.
آمل أن يكون هذا التقرير مفيدًا في تحديد المشكلات المحتملة في Discourse 3.5.0.beta2-dev.
مع خالص التقدير،
كيرك

