لا يمكن إرسال البريد الإلكتروني - مشكلة في المنفذ 465

أود تغيير مزود SMTP، لكن يبدو أنه لا يعمل على الرغم من أنني متأكد من أن الخادم يمكنه إرسال رسائل البريد الإلكتروني.

لدي هذا في app.yml:

  DISCOURSE_SMTP_ADDRESS: <<SMTP SERVER>>
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: <<USER>>
  DISCOURSE_SMTP_PASSWORD: <<PASSWORD>>

باستخدام telnet <<SMTP SERVER>> 465 يتصل بشكل جيد، ولكن عندما أحاول إرسال رسائل البريد الإلكتروني، يعود Discourse بـ:

ERROR - Net::ReadTimeout with #<Socket:(closed)>

هل لدى أي شخص أي مؤشرات حول ما أحتاج إلى تعيينه؟

لقد تفحصت الخادم بناءً على هذا الموضوع: Troubleshoot email on a new Discourse install

يبدو أنه يتصل بالخادم ويرسل بريدًا إلكترونيًا تجريبيًا بشكل صحيح إذا قمت بذلك يدويًا:

> sudo ./launcher enter app
root@support-app:/var/www/discourse# openssl s_client -connect mail.xxxxxxxx.com:465
  :
  :
  كمية هائلة من البيانات غير الهامة
  :
  :
220 xxxxxxx.com Anti-spam GT for Coremail System (mispb-6da2110f-64b0-4d67-acf1-2d302bd594f9-xxxxxxx.com[20220915])
EHLO mail.xxxxxxxxx.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrpDiNKUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
235 Authentication successful
mail from: <xxx@xxxxxx.com>
250 Mail OK
rcpt to: <xxxx@xxxxxxx.com>
250 Mail OK
data
354 End data with <CR><LF>.
content

.
250 Mail OK queued as AQAAfwBXr9nSGHdj3hEgAA--.7073S2

كم من الوقت يستغرق ظهور المخرجات؟

فورًا تقريبًا بعد إرسال الأمر.

تحرير: هل هناك طريقة للحصول على سجلات أكثر تفصيلاً لاكتشاف الخطوة التي تسببت في الخطأ؟

من المحتمل أن يكون المنفذ الصادر محظورًا بواسطة موفر الاستضافة الخاص بك. إذا كنت تستخدم خدمة مثل mailgun (أو أي خدمة أخرى تقريبًا) ، فيجب أن يعمل المنفذ 2525. إذا كان خادم بريد تديره بنفسك ، فيمكنك جعله يستمع إلى منفذ آخر (مثل 2525).

أو (ربما الأصعب) يمكنك فتح تذكرة مع من يستضيف خادمك واطلب منهم فتح المنفذ.

حسنًا، بالنظر إلى أنني أستطيع تشغيل ./launcher enter app ثم استخدام openssl للاتصال بخادم البريد، وتسجيل الدخول عبر SMTP وإرسال بريد إلكتروني بنجاح من داخل حاوية discourse، أشك في أن المنفذ هو الذي لا يعمل…

إعجابَين (2)

لقد تتبعت الكود ويبدو أن EHLO لم يتم الوصول إليه على الإطلاق. الخادم SMTP متصل ولكن يبدو أن مصافحة SSL مفقودة، لذلك يخرج الخادم ولا يتلقى Discourse أي استجابة، وبالتالي يحدث الخطأ.

لذلك، اشتبهت في أن دعم المنفذ 465 يبدو أنه يحتوي على خطأ (افتراضيًا هو SSL، ولكن لا أعتقد أن Discourse يتعرف على ذلك) لذلك ربما لم يتم إنشاء اتصال SSL أبدًا.

التبديل إلى المنفذ 25 يبدو على الأقل أنه يزيل الخطأ، على الرغم من أنني لا أتلقى أي بريد إلكتروني مرسل بعد…

تحرير: يمكنني التأكيد على أن المنفذ 25 يعمل بشكل صحيح (كما ينبغي أن يعمل المنفذ 587 ولكن للأسف خادم SMTP الخاص بي لا يكشف عن المنفذ 587).

لم أستلم أي رسائل بريد إلكتروني من قبل بسبب حقيقة أن عنوان IP لخادم Discourse تم وضعه مؤقتًا في القائمة السوداء بواسطة خادم SMTP بسبب كثرة المحاولات الفاشلة.

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

أعتقد أنك على حق.

واتضح أنك لست الأول… عند البحث عن DISCOURSE_SMTP_PORT 465 وجدت مجموعة كاملة من المشكلات المماثلة.

الأخير يحتوي على رابط للحل (المحتمل؟).

مع هذه الرقعة، من الممكن تعيين
DISCOURSE_SMTP_FORCE_TLS=true لاستخدام TLS الضمني على المنفذ 465
3 إعجابات

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

هل هناك شيء يمكننا إضافته إلى ذلك لمساعدة الأشخاص؟

إعجابَين (2)

حسنًا، إذا تمكن @schungx من تأكيد أن DISCOURSE_SMTP_FORCE_TLS=true هو بالفعل حل، فيمكننا إضافته.

5 إعجابات

سأجرب على الفور!

تعديل: @RGJ يمكنني تأكيد أن DISCOURSE_SMTP_FORCE_TLS: true في app.yml يحل المشكلة بنجاح! :champagne:

أقترح تحذيرًا جريئًا يقول إذا كنت تستخدم المنفذ 465، فاضبط DISCOURSE_SMTP_FORCE_TLS: true، أو ألا يجب أن يكون Discourse ذكيًا بما يكفي لاكتشاف ذلك؟

4 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.