حسنًا، للبدء، هذا بيئة إنتاجية، ولا يمكنني إرسال بريد التسجيل الأول.
أنا متأكد من أن إعدادات SMTP الخاصة بي صحيحة.
أستطيع عمل ping و telnet لخادم البريد الخاص بي باستخدام المنفذ المستخدم، ولكن بمجرد أن أقوم بـ “EHLO mailserver” يتم إغلاق الاتصال من قبل المضيف البعيد.
وحاولت التأكد من صحة إعدادات SMTP الخاصة بي، لذا شغّلت /var/discourse/discourse-doctor، لكنه لا يمكنه التحقق من إعداداتي. يقول:
==================== YML SETTINGS ====================
awk: not an option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: not an option: --field-separator=:
SMTP_ADDRESS=
awk: not an option: --field-separator=:
DEVELOPER_EMAILS=
awk: not an option: --field-separator=:
SMTP_PASSWORD=
awk: not an option: --field-separator=:
SMTP_PORT=
awk: not an option: --field-separator=:
SMTP_USER_NAME=
awk: not an option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=
لكن ملف YAML الخاص بي (./containers/app.yml) يبدو منسقًا بشكل مثالي.
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
DISCOURSE_SMTP_ADDRESS: mail.redacted.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: redacted@redacted.com
DISCOURSE_SMTP_PASSWORD: "redacted"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: redacted@redacted.com
@irwinstar، قمت بإزالة خادم البريد الفعلي تجنبًا لكشف خادم بريدي على منتدى عام. لكنني أستطيع أن أضمن صحته لأنني نسخت الإعدادات من عميل بريدي (يعمل بشكل صحيح) وقارنتها أيضًا بإعدادات SMTP الخاصة بخادم بريدي الفعلي.
شكرًا لك على عرضك للمساعدة. أعتقد أن المشكلة تكمن في سجلات SPF/DKIM، لذا أنا أحاول إصلاحها.
ومع ذلك، يجب أن يستمر discourse-doctor في تحليله بشكل صحيح. لست متأكدًا مما يحدث هناك، حيث لم أقوم أنا بتعديل الملف بنفسي باستخدام vim/nano. للتوضيح، تم إنشاء ملف YAML باستخدام discourse-setup.
وأعتقد أن Discourse لا يدعم البروتوكول على المنفذ 465 حاليًا. إذا كان خادم البريد الخاص بك يدعم المنفذ 587، فيمكنك تغييره إلى 587 بدلاً من ذلك. للأسف، لا يمكن لخادم بريدي استخدام المنفذ 587، لذا أضفت وكيل بريد خارجي لـ Discourse.
لست متأكدًا بشأن ذلك، لكنني جربت المنفذ 465 عدة مرات.
في النهاية، استخدمت صورة Docker “hieulq/mailproxy” كوكيل بريد.
واستخدمت إعدادات app.yml هذه لـ Discourse.
قد يبدو هذا الاستخدام غير مثالي، لكنه يعمل.
حاولت اليوم العثور على إضافة بريد، لكنني لم أعثر على أي منها.
أحاول تجنب شراء أي خوادم بريد سحابية، أو استخدام الوكلاء (لأنه لو أردت حلاً غير نظيف، لكنت أخذت حساب مسؤول في هذه المرحلة) بينما لدي بالفعل خادم بريد على HostGator.
أنا متأكد من أن سجلات SPF مُعدة لعنوان IP الخاص بخادم Discourse الخاص بي. أنا أحاول فقط التحقق من سجلات DKIM الآن.
إذا كان بإمكان شخص ما تأكيد أن المنفذ 465 غير مسموح به، فستكون هذه أخباراً رائعة، لأنها ستوقفني من المضي بعيداً في متاهة مشكلة غير موجودة. كان المنفذ 465 مشكلة، وقد تم ذكر ذلك في المنشور أدناه.
باستخدام المنفذ 587، يمكنني الاتصال عبر telnet بنجاح لإرسال بريد إلكتروني كامل والمصادقة بشكل صحيح. لذا قمت بالتبديل.
الآن، عند إرسال البريد الإلكتروني، أستلم الخطأ التالي:
تم تسليم البريد d86b48cc-b0f4-4df3-8960-ab5ff96613a0@discourse.imbleau.com (251.0ms)
استثناء المهمة: اسم المضيف "mail.redacted.com" لا يطابق شهادة الخادم
لكن ما لاحظته هو أن هذا لم يعد خطأً في مهلة الاتصال (الذي يُثار بعد 60 ثانية كاملة)، بل هو استثناء مختلف يتم استلامه خلال 250 مللي ثانية.
كان هذا هو السبب. تضمن الحل تغيير مفاوضة SSL، مما منحني الحدس لتعطيل هذا الإعداد في ملف app.yml DISCOURSE_SMTP_ENABLE_START_TLS: false # (اختياري، الافتراضي true)
سيؤدي هذا إلى تعطيل تشفير TLS، بينما المشكلة “الوحيدة” هي أنك تستخدم اسم مضيف غير صحيح، أي أن خادم البريد يعرض شهادة تقول شيئًا آخر غير mail.redacted.com. تميل العديد من خوادم البريد إلى أن تكون معروفة بأسماء مضيف متعددة مختلفة، كل ما عليك فعله هو معرفة الاسم الذي تستخدمه لشهادتها.
يمكنك محاولة معرفة الاسم الذي تعلنه نفسه وضبط تكوينك وفقًا لذلك.