لقد جربت بالفعل إلغاء التعليق وتعيين DISCOURSE_SMTP_ENABLE_START_TLS بشكل صريح إلى true، لكن الخطأ لا يزال قائمًا. الأمر نفسه ينطبق على DISCOURSE_SMTP_AUTHENTICATION: login.
بعد أي تغيير في ملف YML، أقوم بإعادة تشغيل النظام باستخدام الأمر التالي:
كما ذكرت عبر الرسائل الخاصة، لا يمكنني منح الوصول إلى الخادم بسبب مخاوف أمنية. ولكن شكرًا جزيلاً لك يا @pfaffman على مساعدتك وعلى محاولة حل هذه المشكلة.
دعني أضيف المزيد من السياق لهذه المشكلة: قام مسؤول سابق بتثبيت Discourse مع خدمة SMTP الخاصة بـ Mailgun، لكنها توقفت عن العمل ولا أملك وصولاً إلى تلك الحساب.
وكما قلت، أحاول الآن إعداده باستخدام Mailersend. لقد قرأت هذا الموضوع [1] وموضوعات أخرى حول STARTTLS هنا في المنتدى، لكنني لست متأكدًا من كيفية تطبيق التغييرات المطلوبة.
جربت أيضًا الإعداد أدناه، لكن الخطأ لا يزال قائمًا:
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
إذا كان الأمر مرتبطًا ببعض التحديثات الأخيرة، فربما يكون من الأفضل التفكير في التراجع إلى إصدار سابق؟
أواجه مشكلة مماثلة. بالأمس قمت بتصحيح إرسال البريد الإلكتروني على مثيل Discourse جديد لمدة ثلاث ساعات تقريبًا، دون أي نجاح. أحاول إرسال البريد الإلكتروني عبر Fastmail باستخدام STARTTLS على المنفذ 587. الخدمات الأخرى تعمل بنفس بيانات الاعتماد.
لا أحصل على استجابة الخطأ “يجب إصدار أمر STARTTLS أولاً” بهذه الإعدادات:
… متبوعًا بـ ./launcher rebuild app، عندما أقوم بتشغيل ./discourse-doctor وأرسل بريدًا إلكترونيًا، أحصل على خطأ 500 5.5.1 Invalid command كرد.
اليوم بدأت في تتبع الاتصال باستخدام tcpdump، ولاحظت أن Discourse لا يبدو أنه يستخدم STARTTLS بالفعل. إليك ما يحدث عند إرسال بريد إلكتروني لاستعادة كلمة المرور من Grafana:
هذا غريب. لقد أنشأت حساب مستخدم يدويًا (عبر rake admin:create) ثم سجلت الدخول، وفجأة بدأت إشعارات البريد الإلكتروني في العمل. ومع ذلك، لا يزال الإرسال عبر discourse-doctor يفشل.
لم أكن على علم بهذا الأمر، يبدو أنه مفيد بالفعل! لكن النتيجة هي نفسها:
root@app:/var/www/discourse# rake emails:test redacted@example.com
Testing sending to using smtp.fastmail.com:587, username:myuser@fastmail.fm with plain auth.
======================================== ERROR ========================================
UNEXPECTED ERROR
500 5.5.1 Invalid command
====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!
Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
=======================================================================================
عندما أنظر إلى tcpdump، أرى مرة أخرى أنه يرسل بيانات اعتماد AUTH PLAIN كنص عادي دون تشفير STARTTLS.
لقد نظرت في تلك الصفحة، نعم.
ومع ذلك، بناءً على tcpdump، يبدو هذا خطأ في أدوات التشخيص بالنسبة لي لأن STARTTLS لا يتم استخدامه على الرغم من تمكين الإعداد في app.yml. (تطبيق Discourse نفسه يستخدم STARTTLS. أفترض أن العديد من مزودي البريد الإلكتروني سيسمحون بإرسال البريد الإلكتروني غير المشفر أيضًا، لذلك ستنشأ هذه المشكلة فقط إذا استخدم شخص ما أدوات التشخيص واستخدم مزودًا لا يقبل الإرسال غير المشفر عبر SMTP.)
آه. يبدو أن مهمة rake هذه هي نفسها التي تستدعيها discourse-doctor. آسف لذلك.
ربما يمكن لشخص ما إلقاء نظرة على كيفية جعل مهمة rake هذه تشبه العملية الفعلية، أو على الأقل عدم الاستسلام إذا كانت محاولاتها لفهم ما يجري غير دقيقة. ستكون الخطوة الأولى الجيدة هي القول “حسنًا، يبدو أن XXX معطل، لكننا سنحاول على أي حال…”