مرحباً! أنا آسف إذا كانت هذه المشكلة لها حل واضح بالفعل؛ لقد بحثت حقًا ولم أجد حلاً واضحًا لمشكلتي.
لذلك، قمت باستضافة نسخة ديسكورد بنفسي وبعد بعض التعديلات حصلت على التكوين الصحيح لـ SMTP، ولكن رسائل البريد الإلكتروني للمستخدمين الجدد لا تُرسل (حتى للمسؤول الأولي؛ انتهى بي الأمر بإنشاء واحد باستخدام أمر rake داخل الحاوية).
في البداية، اعتقدت أنه لن يتمكن من الاتصال بـ SMTP بسبب بعض مشاكل نظام أسماء النطاقات (DNS)، حيث عند العبث بـ ./discourse-doctor وفي النهاية الدخول إلى shell الحاوية، فإنه يُرجع:
Testing sending to xxxx@gmail.com using smtp-relay.brevo.com:587, username:xxxxxxx@smtp-brevo.com with plain auth.
======================================== ERROR ========================================
Connection to port 587 failed.
====================================== SOLUTION =======================================
The most likely problem is that your server has outgoing SMTP traffic blocked.
If you are using a service like Mailgun or Sendgrid, try using port 2525.
=======================================================================================
ومع ذلك، فإن أمر openssl الموصى به في دليل استكشاف أخطاء SMTP وإصلاحها لم يتصل فحسب، بل تمكنت أيضًا، باستخدام أوامر EHLO و AUTH LOGIN وجميع تلك الأوامر (التي لم أكن أعرف بوجودها حتى الآن، هه ^^') من إرسال بريد إلكتروني اختباري إلى نفسي من داخل الحاوية نفسها. لذلك لا أعتقد أن المشكلة هي أن الحاوية غير قادرة على الاتصال بخادم SMTP.
تحديث للتوضيح
تمكنت من القيام بذلك من داخل الحاوية: سجلت الدخول إلى الحاوية باستخدام الأمر ./launcher enter container. من هذا الموجه، قمت بتنفيذ الأوامر السابقة.
إليك إعدادات SMTP الخاصة بي، إذا كان ذلك يساعد. لقد قمت بتحرير معلومات تسجيل الدخول، بالطبع.
كان البريد الإلكتروني للإشعارات هو الذي اختبرته عبر أمر openssl، والسطر الأخير قرأته في منشور آخر وأضفته، لكنني علقت عليه ولم أحاول استخدامه أبدًا لأنه كان منشورًا قديمًا.
على أي حال، أنا تائه حقًا هنا، آمل أن يتمكن شخص ما من مساعدتي، وأنا آسف حقًا إذا كانت هذه مشكلة تم حلها ولم أجدها!
لقد تمكنت من إرسال بريد اختبار باستخدام openssl، ولكن عبر المنفذ 587. ولكن من خلال واجهة discourse (سواء من خلال زر البريد الإلكتروني التجريبي في الواجهة الرسومية أو الأمر rake tests:email[mail]) لم أتمكن من القيام بذلك، سواء عبر المنفذ 287 أو 2525.
في ملاحظة أخرى، وجدت خطأ sidekiq للبريد غير المرسل:
تم العثور على الأسطر ذات الصلة في shared/standalone/log/rails/production.log:
Started POST "/admin/email/test" for 192.168.0.206 at 2024-10-18 23:49:02 +0000
Processing by Admin::EmailController#test as */*
Parameters: {"email_address"=>"jggalindez@gmail.com"}
Completed 422 Unprocessable Entity in 5201ms (Views: 0.4ms | ActiveRecord: 0.0ms | Allocations: 12487)
مرحباً! عذراً، لم أكن واضحاً قليلاً. تمكنت من الاتصال بالمنفذ 587 من داخل الحاوية، على الأقل حسب فهمي، حيث قمت بما يلي:
سجلت الدخول إلى الحاوية باستخدام ./launcher enter containername.
من داخل الحاوية، قمت بتشغيل أمر openssl.
من داخل موجه telnet الزائف (لست متأكداً حقاً مما هو عليه في الواقع)، قمت بالمصادقة مع خادم SMTP (مع القيام بكل تحويل اسم المستخدم وكلمة المرور إلى base64) وأرسلت بريداً إلكترونياً.
لم أحاول فعلياً إرسال بريد إلكتروني من الخادم، على الرغم من ذلك. فقط من داخل الحاوية (حسب فهمي) ولكنني افترضت أنه إذا كان بإمكانه القيام بذلك من داخل الحاوية فسيكون من داخل الخادم.
إذًا، لقد نجحت في تشغيله. يبدو أنه كان مشكلة في نظام أسماء النطاقات (DNS)، بطريقة ما (لأنه كان قادرًا على حل عنوان URL عند استخدام أوامر getent و openssl). لذلك قمت بتشغيل getent للحصول على عنوان IP الخاص بخادم البريد الإلكتروني SMTP وقمت بتشغيل الحاوية عن طريق تغيير عنوان الخادم إلى عنوان IP الخام. أدى ذلك إلى خطأ مختلف، الذي في هذا الموضوع. الحل المشار إليه هناك، بإضافة السطر DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none إلى ملف yaml، جعله يعمل في النهاية.
لا أعرف حقًا ما إذا كانت مشكلة نظام أسماء النطاقات (DNS) ستسبب مشاكل في المستقبل، آمل ألا يحدث ذلك، شكرًا لكما على مساعدتكما!
إذًا، أنت تواجه مشكلة في الشبكة داخل الحاوية، ولكنها تنبع من نظام أسماء النطاقات (DNS) وليس من اتصال IP.\n\nهل يمكنك الاتصال باستخدام openssl s_client إلى اسم المضيف من داخل الحاوية؟\n\nيجب أن تكون قادرًا على تشغيل:\n\n\nopenssl s_client -connect smtp-relay.brevo.com:587 -starttls smtp\n\n\nوالحصول على:\n\n…\nVerify return code: 0 (ok)\n…\n\n\n[quote="Trancos, post:7, topic:331608"]\nلقد قادني ذلك إلى خطأ مختلف\n[/quote]\n\nهذا متوقع لأنك تتصل بعنوان IP ولن يكون عنوان IP هذا موجودًا في الشهادة.\n\n[quote="Trancos, post:7, topic:331608"]\nلا أعرف حقًا ما إذا كانت مشكلة نظام أسماء النطاقات ستسبب مشاكل في المستقبل\n[/quote]\n\nستفعل.