البريد و smtp.office365.com

أعمل على فهم المشكلة عبر Troubleshoot email on a new Discourse install - #2 لمعرفة سبب عدم خروج البريد من مثيل Discourse جديد.

أستطيع إرسال البريد من الجهاز باستخدام swaks.

يمكنني الاتصال عبر بروتوكول Telnet بخادم البريد smtp.office365.com على المنفذ 587 (بعد تعيين اسم نطاق كامل الصلاحية).

يبدو أنه لا توجد أخطاء في سجل الإنتاج.

tail -f shared/web_only/log/rails/production.log
Started POST "/u/action/send_activation_email" for 115.64.14.90 at 2019-12-23 08:20:28 +0000
Processing by UsersController#send_activation_email as */*
  Parameters: {"username"=>"csmu"}
  Rendering text template
  Rendered text template (Duration: 0.1ms | Allocations: 1)
Completed 200 OK in 36ms (Views: 1.0ms | ActiveRecord: 0.0ms | Allocations: 4557)

أرى أشياء مثل هذا:

Cannot open main log file "/var/log/exim4/mainlog"

عند تشغيل الأمر tail -f shared/web_only/log/var-log/mail.log.

هل لديكم أي أفكار حول سبب منع الوصول إلى “/var/log/exim4/mainlog” ووجود مرجع إليه في shared/web_only/log/var-log/mail.log؟

كان ذلك السجل إيجابيًا كاذبًا.

المشكلة الرئيسية كانت في الاتصال بـ smtp.office365.com

  1. كان يجب تعيين الجهاز لاستخدام اسم نطاق كامل صالح. قبل ذلك، فشل الأمر:
    telnet smtp.office365.com 587
  2. كان يجب ضبط الإعدادات الصحيحة في ملف yaml، خاصةً DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: discourse@domain
  DISCOURSE_SMTP_PASSWORD: "validPassword"
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  1. كان يجب تعيين SiteSetting.notification_email
./launcher enter web_only
root@discourse-web-only:/var/www/discourse# rails console
[1] pry(main)> SiteSetting.notification_email = "discourse@domain"
[2] pry(main)> exit
root@discourse-web-only:/var/www/discourse# exit

  1. إعادة تشغيل الحاوية
./launcher destroy web_only
./launcher start web_only
  1. المهمة مكتملة!