# لا تُرسل رسائل SMTP وتفشل الاتصال، لكن openssl يعمل

**URL:** https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608
**Category:** Support
**Created:** [18 أكتوبر 2024، 10:18م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608 "2024-10-18T22:18:51Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![Trancos](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@Trancos](https://meta.discourse.org/u/Trancos)
#### Post date: [18 أكتوبر 2024، 10:18م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/1 "2024-10-18T22:18:51Z")

</div>

مرحباً! أنا آسف إذا كانت هذه المشكلة لها حل واضح بالفعل؛ لقد بحثت حقًا ولم أجد حلاً واضحًا لمشكلتي.

لذلك، قمت باستضافة نسخة ديسكورد بنفسي وبعد بعض التعديلات حصلت على التكوين الصحيح لـ SMTP، ولكن رسائل البريد الإلكتروني للمستخدمين الجدد لا تُرسل (حتى للمسؤول الأولي؛ انتهى بي الأمر بإنشاء واحد باستخدام أمر rake داخل الحاوية).

في البداية، اعتقدت أنه لن يتمكن من الاتصال بـ SMTP بسبب بعض مشاكل نظام أسماء النطاقات (DNS)، حيث عند العبث بـ ./discourse-doctor وفي النهاية الدخول إلى shell الحاوية، فإنه يُرجع:

```plaintext
Testing sending to xxxx@gmail.com using smtp-relay.brevo.com:587, username:xxxxxxx@smtp-brevo.com with plain auth.
======================================== ERROR ========================================
Connection to port 587 failed.
====================================== SOLUTION =======================================
The most likely problem is that your server has outgoing SMTP traffic blocked.
If you are using a service like Mailgun or Sendgrid, try using port 2525.
=======================================================================================

```

ومع ذلك، فإن أمر openssl الموصى به في [دليل استكشاف أخطاء SMTP وإصلاحها](https://meta.discourse.org/t/troubleshoot-email-on-a-new-discourse-install/16326) لم يتصل فحسب، بل تمكنت أيضًا، باستخدام أوامر EHLO و AUTH LOGIN وجميع تلك الأوامر (التي لم أكن أعرف بوجودها حتى الآن، هه ^^') من إرسال بريد إلكتروني اختباري إلى نفسي من داخل الحاوية نفسها. لذلك لا أعتقد أن المشكلة هي أن الحاوية غير قادرة على الاتصال بخادم SMTP.

> **تحديث للتوضيح**  
> تمكنت من القيام بذلك _من داخل الحاوية_: سجلت الدخول إلى الحاوية باستخدام الأمر `./launcher enter container`. من هذا الموجه، قمت بتنفيذ الأوامر السابقة.

إليك إعدادات SMTP الخاصة بي، إذا كان ذلك يساعد. لقد قمت بتحرير معلومات تسجيل الدخول، بالطبع.

```plaintext
  DISCOURSE_SMTP_ADDRESS: 'smtp-relay.brevo.com'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: 'xxxxxxxx@smtp-brevo.com'
  DISCOURSE_SMTP_PASSWORD: 'xxxxxxxxxxxx'
  #DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
  #DISCOURSE_SMTP_DOMAIN: discourse.example.com # (required by some providers)
  DISCOURSE_NOTIFICATION_EMAIL: 'noreply@mydomain.xyz' # (address to send notifications from)
  #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

```

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

على أي حال، أنا تائه حقًا هنا، آمل أن يتمكن شخص ما من مساعدتي، وأنا آسف حقًا إذا كانت هذه مشكلة تم حلها ولم أجدها!

---

<div class="post-metadata">

### Author: ![Firepup650](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/firepup650/32/465200_2.png) [@Firepup650](https://meta.discourse.org/u/Firepup650)
#### Post date: [18 أكتوبر 2024، 10:42م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/2 "2024-10-18T22:42:22Z")

</div>

هل يمكنك تجربة ما يقترحه الخطأ، لمعرفة ما إذا كان يعمل بالصدفة؟

> [@Trancos](#):
>
> `إذا كنت تستخدم خدمة مثل Mailgun أو Sendgrid، فحاول استخدام المنفذ 2525.`

---

<div class="post-metadata">

### Author: ![Trancos](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@Trancos](https://meta.discourse.org/u/Trancos)
#### Post date: [18 أكتوبر 2024، 11:13م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/3 "2024-10-18T23:13:32Z")

</div>

مرحباً! لقد جربت ذلك بالفعل، ولم ينجح الأمر ☹

لقد تمكنت من إرسال بريد اختبار باستخدام openssl، ولكن عبر المنفذ 587. ولكن من خلال واجهة discourse (سواء من خلال زر البريد الإلكتروني التجريبي في الواجهة الرسومية أو الأمر `rake tests:email[mail]`) لم أتمكن من القيام بذلك، سواء عبر المنفذ 287 أو 2525.

في ملاحظة أخرى، وجدت خطأ sidekiq للبريد غير المرسل:

```plaintext
Jobs::HandledExceptionWrapper: Wrapped Net::OpenTimeout: execution expired

```

---

<div class="post-metadata">

### Author: ![Trancos](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@Trancos](https://meta.discourse.org/u/Trancos)
#### Post date: [18 أكتوبر 2024، 11:53م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/4 "2024-10-18T23:53:29Z")

</div>

تم العثور على الأسطر ذات الصلة في `shared/standalone/log/rails/production.log`:

```plaintext
Started POST "/admin/email/test" for 192.168.0.206 at 2024-10-18 23:49:02 +0000
Processing by Admin::EmailController#test as */*
  Parameters: {"email_address"=>"jggalindez@gmail.com"}
Completed 422 Unprocessable Entity in 5201ms (Views: 0.4ms | ActiveRecord: 0.0ms | Allocations: 12487)

```

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [19 أكتوبر 2024، 1:19ص UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/5 "2024-10-19T01:19:04Z")

</div>

> [@Trancos](#):
>
> _كنت_ قادرًا على إرسال بريد اختبار باستخدام openssl، ولكن عبر المنفذ 587، رغم ذلك

هل يمكنك الاتصال بالمنفذ 587 من _داخل الحاوية_؟

يبدو أنك تستطيع الاتصال بالمنفذ 587 _من المضيف_ ولكن قد لا تتمكن من القيام بذلك من _داخل الحاوية_ مما يعني وجود مشكلة في الشبكة على الخادم الخاص بك.

---

<div class="post-metadata">

### Author: ![Trancos](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@Trancos](https://meta.discourse.org/u/Trancos)
#### Post date: [19 أكتوبر 2024، 4:24ص UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/6 "2024-10-19T04:24:09Z")

</div>

مرحباً! عذراً، لم أكن واضحاً قليلاً. تمكنت من الاتصال بالمنفذ 587 _من داخل الحاوية_، على الأقل حسب فهمي، حيث قمت بما يلي:

- سجلت الدخول إلى الحاوية باستخدام `./launcher enter containername`.
- من داخل الحاوية، قمت بتشغيل أمر openssl.
- من داخل موجه telnet الزائف (لست متأكداً حقاً مما هو عليه في الواقع)، قمت بالمصادقة مع خادم SMTP (مع القيام بكل تحويل اسم المستخدم وكلمة المرور إلى base64) وأرسلت بريداً إلكترونياً.

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

---

<div class="post-metadata">

### Author: ![Trancos](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@Trancos](https://meta.discourse.org/u/Trancos)
#### Post date: [19 أكتوبر 2024، 4:00م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/7 "2024-10-19T16:00:36Z")

</div>

إذًا، لقد نجحت في تشغيله. يبدو أنه _كان_ مشكلة في نظام أسماء النطاقات (DNS)، بطريقة ما (لأنه _كان_ قادرًا على حل عنوان URL عند استخدام أوامر `getent` و `openssl`). لذلك قمت بتشغيل `getent` للحصول على عنوان IP الخاص بخادم البريد الإلكتروني SMTP وقمت بتشغيل الحاوية عن طريق تغيير عنوان الخادم إلى عنوان IP الخام. أدى ذلك إلى خطأ مختلف، [الذي في هذا الموضوع](https://meta.discourse.org/t/email-not-working-ssl-connect-returned-1/229934). الحل المشار إليه هناك، بإضافة السطر `DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none` إلى ملف yaml، جعله يعمل في النهاية.

لا أعرف حقًا ما إذا كانت مشكلة نظام أسماء النطاقات (DNS) ستسبب مشاكل في المستقبل، آمل ألا يحدث ذلك، شكرًا لكما على مساعدتكما!

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [21 أكتوبر 2024، 4:27م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/8 "2024-10-21T16:27:02Z")

</div>

إذًا، أنت _تواجه_ مشكلة في الشبكة داخل الحاوية، ولكنها تنبع من نظام أسماء النطاقات (DNS) وليس من اتصال IP.\n\nهل يمكنك الاتصال باستخدام `openssl s_client` إلى اسم المضيف _من داخل الحاوية_؟\n\nيجب أن تكون قادرًا على تشغيل:\n\n`\nopenssl s_client -connect smtp-relay.brevo.com:587 -starttls smtp\n`\n\nوالحصول على:\n`\n…\nVerify return code: 0 (ok)\n…\n`\n\n[quote="Trancos, post:7, topic:331608"]\nلقد قادني ذلك إلى خطأ مختلف\n[/quote]\n\nهذا متوقع لأنك تتصل بعنوان IP ولن يكون عنوان IP هذا موجودًا في الشهادة.\n\n[quote="Trancos, post:7, topic:331608"]\nلا أعرف حقًا ما إذا كانت مشكلة نظام أسماء النطاقات ستسبب مشاكل في المستقبل\n[/quote]\n\nستفعل.

---

<div class="post-metadata">

### Author: ![Trancos](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@Trancos](https://meta.discourse.org/u/Trancos)
#### Post date: [21 أكتوبر 2024، 8:18م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/9 "2024-10-21T20:18:04Z")

</div>

> [@supermathie](#):
>
> سيحدث ذلك.

نعم، لقد افترضت ذلك، لذا انتهى بي الأمر بإضافة علامة `docker_args` في ملف التكوين وتحديد بعض خوادم DNS مباشرةً.

لمن يتساءل (اضطررت للبحث عن مكان علامة `docker_args`)، إليك جزء من ملف app.yml:

```plaintext
*******Omitted lines above*********
## كن *حذرًا جدًا* عند التحرير!
## ملفات YAML حساسة للغاية للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة

docker_args: "--dns 1.1.1.1 --dns 8.8.4.4 --dns 8.8.8.8"

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## قم بإلغاء التعليق على السطر التالي لتمكين مستمع IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
*******Omitted rest of file below*********

```

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [20 نوفمبر 2024، 8:18م UTC](https://meta.discourse.org/t/smtp-mails-dont-send-and-connection-fails-but-openssl-works/331608/10 "2024-11-20T20:18:46Z")

</div>

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