نوع مصادقة غير معترف به في SMTP مع Office 365

أواجه هذه الرسالة الخطأ وقد جربت العديد من الخيارات المختلفة. أستخدم Office 365

خطأ: 504 5.7.4 نوع المصادقة غير معروف [MN2PR20CA0010.namprd20.prod.outlook.com]

الإعدادات هنا:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: البريد الإلكتروني
  DISCOURSE_SMTP_PASSWORD: "كلمة المرور"
  DISCOURSE_SMTP_ENABLE_START_TLS: true

try your configuration using openssl tool first

  1. Encode your office365 user
echo -n "your email here " | openssl enc -base64
xxx_encoded_email_xxx

2.Encode your password

echo -n "your password here" | openssl enc -base64
xxx_encoded_password_xxx

3.Open a connection

openssl s_client -connect SMTP.office365.com:587 -starttls smtp -quiet -crlf

4.Test authentification

  • wait for the message 250 SMTPUTF8
  • send EHLO SMTP.office365.com
  • wait for response
    250-PR3P189CA0029.outlook.office365.com Hello [88.138.0.68]
    250-SIZE 157286400
    250-PIPELINING
    250-DSN
    250-ENHANCEDSTATUSCODES
    250-AUTH LOGIN XOAUTH2
    250-8BITMIME
    250-BINARYMIME
    250-CHUNKING
    250 SMTPUTF8
    
  • send AUTH LOGIN
  • wait for 334 VXNlcm5hbWU6
  • send your encoded user login xxx_encoded_email_xxx
  • wait for 334 UGFzc3dvcmQ6
  • send your encoded password xxx_encoded_password_xxx
  • wait for response 235 2.7.0 Authentication successful
3 إعجابات

So if the openssl test works but the connection test run by discourse-doctor still fails when using those settings what is next? Even though the openssl test works my discourse connection still fails with 504 5.7.4 Unrecognized authentication type… Presumably it is not recognizing the LOGIN auth method. I tried adding DISCOURSE_SMTP_AUTHENTICATION: login to the app.yml file, but that has not helped.

FWIW, here is what I have found. I went into the docker image and started monkeying around with the lib/tasks/emails.rake script and the config/discourse.conf file. Several hours later, after trying every possible combination of smtp.office365.com and .mail.protection.outlook.com AUTH login and AUTH plain I uncommented the block above the STMP start.

# We would like to do this, but Net::SMTP errors out using starttls
#Net::SMTP.start(smtp[:address], smtp[:port]) do |s|
#  s.starttls if !!smtp[:enable_starttls_auto] && s.capable_starttls?
#  s.auth_login(smtp[:user_name], smtp[:password])
#end

Running that as-is resulted in a read timeout.
Modifying it like this - calling new rather than start resulted in a successful send.

Net::STMP.new(smtp[:address], smtp[:port]) do |s|
    s.enable_starttls
    s.auth_login(smtp[:user_name], smtp[:password])
end

This is my first exposure to Ruby, rake and friends. I can’t explain why it works or if is a ‘good thing’ for general cases.
J.

Oh, also I never was able to get it to work to the my_domain.mail.protection.outlook.com on either 25 or 587, what worked was smtp.office365.com:587.

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

أستخدم socketlabs.com كخدمة تسليم بريد إلكتروني، وواجهت مشكلة مماثلة. في حالتي، كان الحل هو تعديل ملف lib/tasks/emails.rake على النحو التالي:
تغيير السطر:
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password])
إلى
Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

بدون هذا التغيير، لا يتم تمرير DISCOURSE_SMTP_AUTHENTICATION: login إلى كود SMTP على المستوى الأدنى.

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

3 إعجابات

يمكنني تأكيد أن إضافة
smtp[:authentication]
إلى استدعاء Net::SMTP.start وتعيين
DISCOURSE_SMTP_AUTHENTICATION: login
في ملف app.yml يحل المشكلة في صفحة اختبار البريد الإلكتروني.

أعتقد أن رسائل البريد الإلكتروني العادية تُرسل عبر مكتبة mail، وأن تعيين
DISCOURSE_SMTP_AUTHENTICATION: login
في ملف app.yml كافٍ لعمل المكتبة بشكل صحيح.

ومع ذلك، أعتقد أنه يجب تعديل lib/tasks/emails.rake لاستخدام إعداد DISCOURSE_SMTP_AUTHENTICATION. هذا سيوفر بعض عمليات التصحيح غير الضرورية.

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

يبدو لي أن هناك :bug:. لقد قدمت طلب سحب:

3 إعجابات

مرحبًا،

تم تطبيق التصحيح أعلاه في نسختي الحالية، لكنني ما زلت أحصل على نفس النتيجة.

الخطأ: 504 5.7.4 نوع المصادقة غير معترف به مع smtp.office365.com.

هل لدى أي شخص أي أفكار؟

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

كيف يمكنني تعديل سكريبت lib/tasks/emails.rake لجعل هذا يعمل؟

كتحديث عام حول هذه القضية، تقوم مايكروسوفت (MS) حاليًا بإزالة المصادقة القديمة لبروتوكولي SMTP وPOP3، وهو ما سيُصعّب الأمور إذا كنت تستخدم Office 365 كمزود للبريد الإلكتروني. السياسة الافتراضية المطبقة حاليًا تمنع مصادقة SMTP (SMTP AUTH)، وتحتاج إلى تمكينها لكل صندوق بريد على حدة. آمل أن يكون هذا مفيدًا — لقد قضيت صباح أمس وأنا أضرب رأسي بالحائط بسبب هذه المشكلة.

إنها خسارة حقيقية خاصة فيما يتعلق بـ POP، لأن إعداد البريد الوارد سيصبح أكثر صعوبة بكثير ما لم يضيف Discourse دعم بروتوكول IMAP لصناديق البريد الواردة.

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

هناك حل سهل للبريد الوارد الذي يتضمن حاوية لاستقباله. كان يُسمى سابقًا “مباشر”، لكن شخصًا ما اعترض على الاسم وتم تغييره، ولم أعد أستطيع العثور عليه.

هناك أيضًا دعم IMAP لصناديق الوارد الجماعية. لكن الدعم يغطي في الغالب Gmail فقط.

3 إعجابات

حسنًا، يجب اعتبار تشغيل خادم بريدك الخاص وسيلة ملاذ أخير في أي حال. أعتقد أنه كان يُشار إليه بـ

إعجابَين (2)

اعتبارًا من عام 2023، لم يعد مصادقة بروتوكول POP3 ممكنة في Exchange.

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

إذا كنت تستخدم PHPMailer
فحاول عن طريق التعليق/إزالة السطر ومحاولة: //$mail->isSMTP(true);