لم يتم إرسال البريد الإلكتروني الأول للتسجيل

مرحباً،

لقد قمت للتو بتثبيت نسخة جديدة من Discourse.

طلب مني الاتصال الأول إنشاء اسم مستخدم وكلمة مرور لحساب المسؤول، وكان من المفترض أن يرسل لي بريدًا إلكترونيًا لتفعيل الحساب.

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

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

هل يمكنك المساعدة؟

تحياتي.

هناك شيئان قد يكونا قد سارا على نحو خاطئ:

  • لم يتم إرسال البريد الإلكتروني
  • تم إرسال البريد الإلكتروني، لكنه لم يُسلَّم

وبما أن هذه مثيل جديد، فإن أسهل طريقة للتحقق هي مراجعة سجلات البريد الإلكتروني الصادرة من وحدة تحكم Rails:

discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)

إذا رأيت شيئًا، فستعرف أنه تم تسليمه على الأقل إلى خادم SMTP، وهو المكان الذي تنتهي فيه مسؤولية Discourse.

أما إذا لم ترَ شيئًا، فمن المرجح أنه لم يُرسل، ويمكنك على الأرجح العثور على سجلات مفيدة من خلال فحص مسارات URL /logs و /sidekiq بعد تسجيل الدخول كمسؤول.

يمكننا أن نرى أن رسالة الاختبار قد تم إرسالها (وقد استلمتها بالفعل) باستخدام ./discourse-doctor، لكن لا يوجد أي سجل لرسائل التسجيل:

discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)
=> [["user@domain.org", "test_message", 2026-05-13 16:23:41.417177000 UTC +00:00, "250 2.0.0 Ok: queued as 4B4DDB0059A"]]

وجدنا أربع رسائل تسجيل (في الواقع حاولت التسجيل أربع مرات) في ملف production.log. لكن تلك رسائل التسجيل لم تُستلم أبدًا، لذا أفترض أنها لم تُرسل أبدًا رغم عدم وجود أي خطأ أو تحذير.
نلاحظ أنه لا توجد أي أثر لرسالة الاختبار التي تم إرسالها واستلامها بنجاح في هذه السجلات.

root@my-vps-app:/var/www/discourse/log# cat production.log | grep user
  Parameters: {"authenticity_token" => "ityyLIdjT7xvdxEd01LjMT08-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "tnDxYkOOwXYcv59Ez4t8vWPir-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "bvOwVYHS3N_UELipxVEG3L3LY-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "oo6GN-n7clGI5F1-uqzsZcadeP-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}

ملفات السجلات الأخرى فارغة:

root@my-vps-app:/var/www/discourse/log# cat production_errors.log 
root@my-vps-app:/var/www/discourse/log# cat sidekiq.log 
root@my-vps-app:/var/www/discourse/log# cat unicorn.stderr.log 
root@my-vps-app:/var/www/discourse/log# cat unicorn.stdout.log 

تُظهر سجلات Docker لتطبيق discourse أربع رسائل تشير إلى وجود شيء مفقود (ولدينا أربع رسائل تسجيل فشلت):

root@my-vps:/var/discourse# docker logs app
...
I, [2026-05-13T16:14:30.769269 #3290]  INFO -- : worker=7 gen=0 pid=4295 registered
I, [2026-05-13T16:14:30.815178 #4295]  INFO -- : worker=7 gen=0 pid=4295 ready
X-Accel-Mapping header missing
X-Accel-Mapping header missing
X-Accel-Mapping header missing
X-Accel-Mapping header missing

هل يمكن أن يساعدنا هذا؟