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

مرحباً،

لقد قمت للتو بتثبيت نسخة جديدة من 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

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

بما أن بريد التسجيل الإلكتروني لم يصل أبدًا، فقد قمت بتفعيل حساب المسؤول عبر سطر الأوامر.

سجلت الدخول بحساب المسؤول وأرسلت بريدًا تجريبيًا إلى anotheruser@anotherdomain.org من الإعدادات / إعدادات البريد / إعدادات الخادم → إرسال بريد تجريبي.

تم إرسال هذا البريد التجريبي فورًا كما نرى أدناه، وقد وصل إلى صندوق الوارد الخاص بي:

root@my-vps:/var/discourse# ./launcher enter app
x86_64 arch detected.
root@my-vps-app:/var/www/discourse# rails console
Loading production environment (Rails 8.0.5)
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"],
 ["anotheruser@anotherdomain.org",
  "test_message",
  2026-05-16 14:44:42.978862000 UTC +00:00,
  "250 2.0.0 Ok: queued as D79DFB00573"]]

ثم حاولت التسجيل باستخدام نفس عنوان البريد الإلكتروني (anotheruser@anotherdomain.org) لكن بريد التسجيل لم يصل (ولم يُرسل لأنه لا يظهر في سجلات وحدة تحكم rails).

في الختام، تُرسل رسائل البريد التجريبية وتُسلَّم بنجاح، لكن رسائل التسجيل لا تُرسل حتى لو وجدنا أثرًا في ملف production.log:

cat production.log | grep anotheruser
  Parameters: {"email_address" => "anotheruser@anotherdomain.org"}
Started GET "/u/check_email?email=anotheruser%40anotherdomain.org" for xxx.xxx.xxx.xxx at 2026-05-16 17:40:45 +0000
  Parameters: {"email" => "anotheruser@anotherdomain.org"}
  Parameters: {"email" => "anotheruser@anotherdomain.org", "password" => "[FILTERED]", "username" => "NewUser", "password_confirmation" => "[FILTERED]", "challenge" => "xxxxxxxx", "timezone" => "Europe/Paris"}

لا يستطيع الأشخاص التسجيل، فماذا يمكنني أن أفعل لإصلاح المشكلة؟

أخيرًا، انتقلت إلى مزود SMTP آخر، وجميع الأمور تعمل بشكل ممتاز، لكنني محبط لأنني لم أستطع معرفة ما حدث…

بعض عناوين البريد الإلكتروني لا تعمل، فقد استغرقتُ وقتًا طويلاً في البداية دون أن أجد السبب، لكن بعد استخدام Mailgun لم يعد هناك أي مشكلة. كما أعلم أن بريد QQ لا يدعم Discourse بشكل جيد.

بمجرد تسجيل الدخول كمسؤول، هل ظهر أي شيء هنا:

يجب أن تكون هناك معلومات كافية هناك لتحديد المشكلة.