خطأ SMTP: يجب إصدار أمر STARTTLS أولاً

I am trying to configure Discourse 2.7.0.beta4 with the Mailersend SMTP service.

After running ./discourse-doctor I got the error below.

SMTP error: Must issue a STARTTLS command first

This is my current app.yml configuration regarding SMTP.

  DISCOURSE_SMTP_ADDRESS: 'smtp.mailersend.net'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: username@subdomain.domain.org
  DISCOURSE_SMTP_PASSWORD: mypasswordhere
 #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
 #DISCOURSE_SMTP_AUTHENTICATION: login
 #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

I’ve already tried to uncomment and set DISCOURSE_SMTP_ENABLE_START_TLS explicitly as true, but the error remains. The same for DISCOURSE_SMTP_AUTHENTICATION: login.

After any change in the YML file I am restarting the system with this:

./launcher destroy app; ./launcher start app

Any tip about what is going on?

Thanks in advance!

I made some changes to discourse-setup recently and also a change to the rake task you’re using (that I think isn’t merged yet).

If you want to give me access to your server I’ll take a look.

إعجابَين (2)

As I mentioned via PM, I can’t give access to the server due to security concerns. But thanks very much to @pfaffman for your help and for trying to solve this issue.

Let me add more context to this issue: a previous admin installed Discourse with the Mailgun SMTP service but it stopped to work and I don’t have access to that account.

As I said, I am trying to configure it now with Mailersend. I have read this topic [1] and others about STARTTLS here in the forum, but I am not sure about how to implement the changes needed.

I tried this setting below as well but the errror remains

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

If it is related to some recent update, maybe is it better to consider a downgrade then?

[1] Can't send email with certificate issue - #3 by supermathie

إعجاب واحد (1)

Did you get this working?

No, I have decided to change for another mail service. Now it’s working fine with Mailjet.

إعجاب واحد (1)

أواجه مشكلة مماثلة. بالأمس قمت بتصحيح إرسال البريد الإلكتروني على مثيل Discourse جديد لمدة ثلاث ساعات تقريبًا، دون أي نجاح. أحاول إرسال البريد الإلكتروني عبر Fastmail باستخدام STARTTLS على المنفذ 587. الخدمات الأخرى تعمل بنفس بيانات الاعتماد.

لا أحصل على استجابة الخطأ “يجب إصدار أمر STARTTLS أولاً” بهذه الإعدادات:

DISCOURSE_SMTP_ADDRESS: 'smtp.fastmail.com'
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: 'myuser@fastmail.fm'
DISCOURSE_SMTP_PASSWORD: 'mypass'
DISCOURSE_SMTP_ENABLE_START_TLS: true

… متبوعًا بـ ./launcher rebuild app، عندما أقوم بتشغيل ./discourse-doctor وأرسل بريدًا إلكترونيًا، أحصل على خطأ 500 5.5.1 Invalid command كرد.

اليوم بدأت في تتبع الاتصال باستخدام tcpdump، ولاحظت أن Discourse لا يبدو أنه يستخدم STARTTLS بالفعل. إليك ما يحدث عند إرسال بريد إلكتروني لاستعادة كلمة المرور من Grafana:

< 220 smtp.fastmail.com ESMTP ready
> EHLO 9b5ba1569f77
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> STARTTLS
< ...[encrypted]

ولكن مع Discourse، يحدث هذا:

< 220 smtp.fastmail.com ESMTP ready
> EHLO localhost
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command

لذا، يبدو أن Discourse يرسل بيانات الاعتماد الخاصة بي عبر الإنترنت كنص عادي، على الرغم من تمكين STARTTLS في الإعدادات؟ هل هذا خطأ؟

لاحظت أيضًا أنه عند تشغيل ./discourse-doctor، يلخص ملخص “YML SETTINGS” في الأعلى العناصر التالية:

==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=forum.[redacted]
SMTP_ADDRESS=smtp.fastmail.com
DEVELOPER_EMAILS=sysadmin@[redacted]
SMTP_PASSWORD=[redacted]
SMTP_PORT=587
SMTP_USER_NAME=[redacted]@fastmail.fm
LETSENCRYPT_ACCOUNT_EMAIL=

ومع ذلك، لا يوجد ذكر لـ DISCOURSE_SMTP_ENABLE_START_TLS، على الرغم من أنه تم تعيينه في app.yml. لست متأكدًا مما إذا كانت هذه المشكلة مرتبطة.

إعجابَين (2)

هذا غريب. لقد أنشأت حساب مستخدم يدويًا (عبر rake admin:create) ثم سجلت الدخول، وفجأة بدأت إشعارات البريد الإلكتروني في العمل. ومع ذلك، لا يزال الإرسال عبر discourse-doctor يفشل.

هل ربما discourse-doctor معطل؟

إعجاب واحد (1)

آسف. أعرف مدى الإحباط الذي يمكن أن يكون عليه الأمر.

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

هناك أيضًا مهمة rake ربما كانت خيارًا أفضل لك.

    rake emails:test[x@y.com]

هل كنت تتبع استكشاف أخطاء البريد الإلكتروني وإصلاحها في تثبيت Discourse جديد؟

إعجابَين (2)

لم أكن على علم بهذا الأمر، يبدو أنه مفيد بالفعل! لكن النتيجة هي نفسها:

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.)

إعجاب واحد (1)

آه. يبدو أن مهمة rake هذه هي نفسها التي تستدعيها discourse-doctor. آسف لذلك.

ربما يمكن لشخص ما إلقاء نظرة على كيفية جعل مهمة rake هذه تشبه العملية الفعلية، أو على الأقل عدم الاستسلام إذا كانت محاولاتها لفهم ما يجري غير دقيقة. ستكون الخطوة الأولى الجيدة هي القول “حسنًا، يبدو أن XXX معطل، لكننا سنحاول على أي حال…”

إعجاب واحد (1)