في النص أدناه، استبدل \u003cDOT\u003e بـ . - لأنني مستخدم جديد ولا يسمح لي discourse بنشر الروابط.
لقد قمت بتثبيت discourse على خادم سحابي جديد من Hetzner، وعنوان URL الخاص به يحل بشكل صحيح: forum.thewizardofosc.com
ومع ذلك، لا يتم إرسال البريد الإلكتروني الذي سجلت به أبدًا. في ملف السجل، تظهر رسالة سجل discourse كـ Net::ReadTimeout إذا كان ذلك يعني شيئًا.
يتصل telnet - كتابة "telnet mail.thewizardofosc.com 465" تؤدي إلى "Connected to thewizardofosc.com".
أيضًا، يرسل curl بريدًا إلكترونيًا بنجاح!
كتابة ما يلي: curl --ssl smtps://mail.thewizardofosc.com --mail-from discourse@thewizardofosc.com --mail-rcpt <عناوين مختلفة تعمل> --upload-file email.txt --user 'discourse@thewizardofosc.com:<كلمة المرور>'
ترسل بنجاح.
لكن لماذا لا يفعل discourse ذلك إذن؟
فيما يلي الأقسام التي أعتقد أنها ذات صلة من ملف التطبيق الخاص بي:
## على سبيل المثال عند التسجيل الأولي 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'iliasb@thewizardofosc.com'
## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
# عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
# تحذير: قد يتسبب الحرف '#' في كلمة مرور SMTP في حدوث مشاكل!
DISCOURSE_SMTP_ADDRESS: mail.thewizardofosc.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: discourse@thewizardofosc.com
DISCOURSE_SMTP_PASSWORD: <كلمة المرور>
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (اختياري، الافتراضي true)
## إذا أضفت قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
LETSENCRYPT_ACCOUNT_EMAIL: me@example.com
دون الكثير من النجاح. عند تشغيل discourse-doctor، تظهر لي نفس المخرجات: Net::ReadTimeout،
والتي أراها أيضًا في shared/standalone/log/rails/production.log
غريب. إذا كان بإمكانك الاتصال من خارج الحاوية، فيمكنك التحقق مما إذا كان أمر curl سيعمل داخل الحاوية. تخميني الوحيد هو أن لديك مشكلة في الشبكة مع Docker.
نعم، كان ذلك مجرد أمل بعيد… آسف على إضاعة وقتك في هذا الأمر!
فكرتي “الجنونية” الوحيدة الأخرى في الوقت الحالي هي التحقق مما إذا كان بإمكانك الدخول إلى خادم البريد الإلكتروني الخاص بك (مهما كان مزوِّده) وتعيين المنفذ على 587 (فالعديد من مزوِّدي SMTP يمنحونك خيارًا) ومحاولة “إلقاء النرد مرة أخرى” مع DISCOURSE_SMTP_ENABLE_START_TLS: true بالطبع.
بصراحة، لستُ عادةً من محبي “إلقاء النرد” وأكون أكثر اعتمادًا على الحقائق؛ لذا إذا لم ترغب في المحاولة، فأنا أفهم ذلك تمامًا يا @onar3d!!
فهمت. لقد نفدت مني حاليًا جميع “الأفكار المجنونة”، وقد حان وقتي للاستعداد للنوم هنا؛ بالتوفيق، وآمل أن يكون لدى أحد أعضاء الفريق الأذكياء هنا بعض الأفكار الأفضل للتجربة.
بعد بضع محاولات أخرى (شكرًا جزيلاً لك @IAmGav!)، تأكد أن إعدادات Discourse الخاصة بي تعمل مع خادم بريد إلكتروني مختلف، مما يستبعد عددًا من الخيارات الأخرى للتجربة.
عاد مزود خدمة البريد الإلكتروني الخاص بي إليّ برسالة سجل خطأ من جهته مع اقتراح:
قام المهندس بفحص السجلات، والخطأ المرئي من عنوان IP الخاص بهم يتعلق بإعدادات SSL. على الأرجح أنهم يستخدمون إصدارًا قديمًا أو إعدادات اتصال قديمة.
دليل:
خطأ TLS في الاتصال من [95.216.139.49]:33568 SSL_accept: تم إغلاق اتصال TCP من الطرف الآخر
جرّب تشغيل وضع SSL معطلًا فقط لمعرفة ما إذا كان ذلك سيعمل.
جربت تعيين DISCOURSE_SMTP_ENABLE_START_TLS إلى false كما هو موضح أعلاه، على المنفذ 465 وكذلك على المنفذ 26 (الذي حدده مزودي كمنفذ للاتصال غير المشفر)، ولم ينجح أي منهما.
هل يمكن أن يكون السبب أنني لم أشتري شهادة SSL للنطاق thewizardofosc.com؟ أدركت ذلك الآن بعد قراءة المزيد قليلاً؟
قد تفكر في تشغيل اختبارات curl الخاصة بك مع تفعيل خيار التفصيل -v من الذاكرة، حتى تتمكن من تحليل عملية المصافحة الناجحة بالكامل؛ ثم العمل بشكل عكسي من هذا التحليل.