إرسال رسائل البريد الإلكتروني لا يعمل

لا يمكن لديسكورد في DigitalOcean إرسال رسائل البريد الإلكتروني. الخطأ الذي أحصل عليه هو:

تم تسليم البريد الإلكتروني d8f9bf03-a3ce-4b42-8226-fc4f40a9c724@foo.barbar.com (5099.4ms)

استثناء المهمة: 504 5.7.4 نوع المصادقة غير معترف به [BL0PR0102CA0036.prod.exchangelabs.com]

إعداداتي هي:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: foo@bar.com
  DISCOURSE_SMTP_PASSWORD: "mypassword"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)

لقد جربت telnet من droplet ولم تظهر أي أخطاء:
telnet smtp.office365.com 587

ما الذي قد يكون المشكلة؟ لقد جربت مجموعة إعدادات SMTP محليًا من Python وهي تعمل، لذا أفترض أن هذه ليست المشكلة.

مرحبًا،
حاول إضافة:

  DISCOURSE_SMTP_AUTHENTICATION: login

وفي نهاية ملف app.yml:

 - exec: rails r "SiteSetting.notification_email='foo@bar.com'"

مرحبًا ميك
فشل تنفيذ الأمر exec:

FAILED

--------------------

Pups::ExecError: فشل تشغيل `rails r "SiteSetting.notification_email='foo@bar.com'"` مع إرجاع #<Process::Status: pid 2229 exit 2>

موقع الفشل: /pups/lib/pups/exec_command.rb:112:in `spawn'

فشل exec مع المعاملات "rails r \"SiteSetting.notification_email='foo@bar.com'\"`

9628e31c775b74ad0f3a555b6af27701aa40b1f8b86419fa44a7c389cc5e34ae

** فشل التمهيد ** يرجى التمرير للأعلى والبحث عن رسائل الخطأ السابقة، فقد يكون هناك أكثر من خطأ واحد.

قد يساعد ./discourse-doctor في تشخيص المشكلة.

تحديث بإسقاط أمر exec وإضافة:

  DISCOURSE_SMTP_AUTHENTICATION: login

لا يُرجع خطأ، بل أحصل فقط على:
Delivered mail be6d8718-5445-48cc-a120-6d6d1eab9eb7@discourse.bar.com (4307.2ms)

ولكنني لا أزال لا أستلم بريدًا إلكترونيًا في صندوق الوارد (لقد تفقدت مجلد البريد العشوائي أيضًا)

يمكنك تجربة هذا للعثور على التكوين الصحيح وربما الحصول على رسالة خطأ:

docker exec -t -i id_of_your_container /bin/bash

ثم داخل الحاوية:

apt install s-nail
echo "This is the message body and contains the message" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

يمكنك تغيير القيم المختلفة (مثل: smtp-auth=login) لمحاولة العثور على القيمة الصحيحة. وربما ستحصل على رسالة خطأ أكثر دقة.

echo "هذا هو جسم الرسالة ويحتوي على الرسالة" | s-nail -r "foo@bar.com" -s mysubject -S "smtp=smtp.office365.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="foo@bar.com" -S smtp-auth-password="xxxxxxxx" -S ssl-verify=ignore youremail@example.com

نجح الأمر وتلقّيت الرسالة! لكن كان عليّ تغيير smtp-auth-password="xxxxxxxx" إلى علامات اقتباس مفردة لأن كلمة المرور تبدأ بعلامة التعجب ‘!’.

الفرق الوحيد الذي أستطيع رؤيته في تكويني هو هذا العلم:
-S ssl-verify=ignore

هل يجب عليّ إضافته أيضًا؟
شكرًا على مساعدتكم!

حاول إضافة:

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

في إعداداتك، وهذا يعادل ssl-verify=ignore.

لا توجد أخطاء، لكن لا يزال لا يوجد بريد إلكتروني في صندوق الوارد :frowning: للتذكير، هذا هو تكويني الحالي:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: info@foo.com
  DISCOURSE_SMTP_PASSWORD: 'xxx'
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

يرجى المحاولة في الإضافة مرة أخرى (إنها نفسها خيار “-r” في اختبار سطر أوامر s-nail:

  - exec: rails r "SiteSetting.notification_email='foo@bar.com'"

يجب أن تكون البريد الإلكتروني نفس بريد حسابك.

وتحقق من المسافة البادئة في ملف app.yml، ولا تنسَ علامة “-” في البداية. هناك مسافتان ثم علامة “-” ثم مسافة ثم “exec…” :slight_smile:

أواجه هذه المشكلة أيضًا. قمت بتشغيل Droplet مع Discourse على Digital Ocean. استخدمت الأمر sudo ./discourse-doctor بعد تجربة جميع هذه الاقتراحات وإعادة البناء في كل مرة (sudo ./launcher rebuild app).

504 5.7.4 نوع المصادقة غير معترف به [BL0PR01CA0015.prod.exchangelabs.com]

عملت أداة s-nail من داخل الحاوية بالنسبة لي أيضًا دون أي مشكلة. وجربت ذلك بدون بند “-S ssl-verify=ignore”، وعمل بشكل جيد. هل يمكن لأحد التحقق مما إذا كان ما يتم تثبيته على Droplet في Digital Ocean يرسل البريد الإلكتروني بشكل صحيح؟

اكتشف من مسؤولي البريد الإلكتروني الخاص بكم القيم الصالحة لـ smtp_authentication، ثم قم بتعيين DISCOURSE_SMTP_AUTHENTICATION إلى إحدى القيم التي تعمل.

شكرًا لك على كل المساعدة، لقد استسلمت وانتقلت إلى حل منتدى آخر.

إنها شركة Microsoft، وإرشاداتهم كالتالي، لم يتم تحديد smtp_authentication؛

  • اسم خادم SMTP: smtp.office365.com
  • منفذ SMTP: 587
  • طريقة تشفير SMTP: STARTTLS

هل لا تدعمون هذا النوع من الخوادم؟ هل يمكنكم ببساطة إنشاء حساب، والاتصال به، وإخبارنا بما يجب أن تكون عليه الإعدادات؟

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

هذا حل مشكلة أنا، شكراً لك!