مشاكل في إعداد hostmail

مرحباً. آمل ألا تمانع في اختطاف الموضوع.

مزود الاستضافة الخاص بي لا توجد لديه مشاكل مع البريد الإلكتروني. جميع الاختبارات باستخدام أدوات مختلفة تعمل - المنافذ مفتوحة ويجب أن تكون قادرة على إرسال البريد. المشكلة هي - أنها لا تعمل مع Discourse.

https://carlosthomas.net/photos/picture.php?/911/category/8

بغض النظر عن المنفذ الذي أجربه، ما زلت أحصل على نفس الأخطاء.

لقد أنشأت حسابات يدوياً ويمكنني تسجيل الدخول، ولكن البريد الإلكتروني مطلوب للدعوات والتحقق. لقد اختبرت مع MailGun وهي تعمل - ولكن لا يمكنني معرفة سبب عدم عملها مع مزود الاستضافة الخاص بي. لقد اتصلت بهم وقالوا إن كل شيء يجب أن يكون على ما يرام - لذلك أنا في حيرة من أمري.

https://carlosthomas.net/photos/picture.php?/913/category/8

كمستخدم جديد يمكنني نشر رابطين فقط - ولكن يجب أن تأخذك تلك إلى بقية الصور.

أخبرني إذا كانت هناك أي سجلات تود مني سحبها - لدي خبرة محدودة في *NIX، ولكن يمكنني اتباع التعليمات. شكراً مقدماً.

شكراً @JammyDodger على التقسيم/النقل. آمل في الحصول على بعض المساعدة بشأن هذا. الخادم ليس دائماً - إنه للاختبار - لذا يمكن تقديم أي سجلات أو أوامر مطلوبة لإيجاد حل.

بشكل أساسي - البريد الإلكتروني يعمل (في الغالب) مع MailGun ولكن ليس مع مزود الاستضافة. رسائل البريد الإلكتروني من MailGun إلى الخدمات المجانية (GMAIL، إلخ) تعمل بشكل جيد. محاولات الإرسال من MailGun إلى البريد الإلكتروني الخاص بنطاقي/المستضاف تفشل. لست متأكداً مما يحدث. استخدام البريد الإلكتروني الخاص بالنطاق يعمل بشكل جيد في أي تطبيق آخر - OSTicket/InvoiceNinja/Windows Mail/ThunderBird/etc.

أي مساعدة ستكون موضع تقدير. شكراً مقدماً.

من المؤكد أن الأمر غريب، إذا كانت بيانات اعتماد البريد المضيف لديك تعمل في أدوات أخرى وبافتراض أنها تم لصقها بشكل صحيح في تكوين discourse. هل لديك أدوات أمان قد تحظر نطاق البريد المضيف؟

يمكنك أيضًا محاولة النظر في \u003cdiscourse_url\u003e/logs لمعرفة ما إذا كان هناك خطأ مفصل حول ما يحدث.

شكراً على ردك. إليك بعض المعلومات.

Message (12 copies reported)

Job exception: execution expired


Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `initialize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `open'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `tcp_socket'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:641:in `block in do_start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/timeout-0.4.0/lib/timeout.rb:186:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/timeout-0.4.0/lib/timeout.rb:193:in `timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:640:in `do_start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:610:in `start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'

للتوضيح - “hostmail” هو مجرد الاسم الذي أطلقته عليه نظرًا لأنه البريد الإلكتروني لمزود الاستضافة الخاص بي (GlowHost) من النطاق الذي أقوم باختباره - discourse.carlosthomas.net - والذي يعمل بشكل جيد في الغالب مع MailGun - ولكن ليس مع البريد الإلكتروني المستضاف.

لم أكن على علم بـ /logs - يمكنني إعادة تعيين الإعدادات ومسح السجلات ثم محاولة إرسال رسائل البريد الإلكتروني ونشر المعلومات إذا أردت. يمكنني أيضًا مسح السجلات الآن - وإرسالها إلى Gmail - والتي ستنجح - ثم إرسالها إلى بريدي الإلكتروني المستضاف - والتي ستفشل - وإرسال السجلات.

إضافة بعض السياق. الأصدقاء يديرون موقعًا على vBulletin 4.2.5 وأنا أستضيف Discourse مؤقتًا لهم للحصول على فكرة عنه. المشكلة هي رسائل البريد الإلكتروني - يمكنني اتباع التعليمات لإنشاء الحسابات يدويًا، ولكن إذا قرروا استخدام Discourse، فسيحتاجون إلى رسائل البريد الإلكتروني لإضافة المستخدمين. هناك أيضًا جزء الاستيراد - والذي وجدت هذا الرابط الذي أعتقد أنه قد يساعد.

لكن يجب حل مشكلة البريد الإلكتروني. أنا فقط سأحتفظ بالصندوق الذي يحتوي على Discourse حتى نحل هذه المشكلة. وأنا أحاول عرض كيف هو الدعم. تجربتي مع التفاصيل في المنتديات وما رأيته يشير إلى أن الاستخدام/الهجرة/الدعم يجب أن يكون سهلاً للغاية بمجرد تلبية متطلبات استضافة المنصة. وبمجرد استخدام الطرق الرسمية، يجب أن يكون الحصول على الدعم سهلاً بما فيه الكفاية.

لكن نعم - هذا هو وضعنا الحالي. ننتظر التعليقات.

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

مرحباً بالجميع. سأحاول القيام ببعض الأشياء خلال عطلة نهاية الأسبوع إذا سارت الأمور على ما يرام. أعتزم مسح/إعادة تثبيت ونشر التقدم. إذا كان لدى أي شخص اقتراحات قبل ذلك - فيرجى إخباري.

بمجرد وصولي إلى تلك النقطة، أعتزم سحب أي سجلات يمكن العثور عليها ونشرها هنا. سأستخدم بعض كلمات المرور التي تم إنشاؤها عشوائيًا للعملية للسماح للأشخاص الذين يرغبون في المساعدة بالوصول. دعنا نرى كيف ستسير الأمور.

جارٍ إجراء فحوصات وتغييرات على ملف app.yml - تم مسح السجلات مسبقًا - سأحاول إرسال رسائل البريد الإلكتروني وأبلغكم.

تعديل
لذلك، فإن مسح السجلات وإرسال رسائل البريد الإلكتروني إلى Gmail أو إلى نطاقي الخاص لا يُظهر أي أخطاء. أحصل على رسائل بريد إلكتروني على Gmail ولكن لا شيء على نطاقي.

تسجل MailGun تقول هذا بشكل أساسي:

{
	"recipient": "me@mydomain",
	"id": "SCBCSJxDSqupdU9Da29rRw",
	"envelope": {
		"sender": "postmaster@mg.mydomain",
		"targets": "me@mydomain",
		"transport": "smtp",
		"sending-ip": "192.168.0.1"
	},
	"timestamp": 1697462206.8430145,
	"user-variables": {},
	"message": {
		"headers": {
			"from": "Discourse Test Forum <postmaster@mg.mydomain>",
			"message-id": "9d3b190d-bcbd-4378-8eb6-fc90cd57fe35@discourse.mydomain",
			"to": "me@mydomain",
			"subject": "[Discourse Test Forum] Email Deliverability Test"
		},
		"attachments": [],
		"size": 4546
	},
	"storage": {
		"region": "us-west1",
		"key": "BAABAQUOTl3y4PtvsqlN5Z2OvaxXslLlZA",
		"env": "production",
		"url": "https://storage-us-west1.api.mailgun.net/v3/domains/mg.mydomain/messages/BAABAQUOTl3y4PtvsqlN5Z2OvaxXslLlZA"
	},
	"reason": "generic",
	"delivery-status": {
		"enhanced-code": "",
		"mx-host": "mydomain",
		"description": "",
		"certificate-verified": true,
		"attempt-no": 1,
		"code": 550,
		"message": "Verification failed for <bounce+674b6a.be6180c-me=mydomain@mg.mydomain>\nThe mail server does not recognize bounce+674b6a.be6180c-me=mydomain@mg.mydomain as a valid sender.\nSender verify failed",
		"session-seconds": 40.878,
		"tls": true
	},
	"campaigns": [],
	"severity": "permanent",
	"tags": [],
	"recipient-domain": "mydomain",
	"flags": {
		"is-routed": false,
		"is-authenticated": true,
		"is-test-mode": false,
		"is-system-test": false
	},
	"log-level": "error",
	"event": "failed"
}

أحصل على هذا فقط إذا حاولت على نطاقي الخاص. إذا حاولت على أي نطاق آخر، فلا بأس - بريد مجاني أم لا.

الإعدادات الحالية في app.yml هي:

## هذا هو قالب حاوية Discourse المستقل والمتكامل
##
## بعد إجراء تغييرات على هذا الملف، يجب عليك إعادة البناء
## /var/discourse/launcher rebuild app
##
## كن حذرًا جدًا عند التحرير!
## ملفات YAML حساسة جدًا للأخطاء في المسافات البيضاء أو المحاذاة!
## قم بزيارة http://www.yamllint.com/ للتحقق من صحة هذا الملف حسب الحاجة

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## قم بإلغاء التعليق على السطر التالي لتمكين مستمع IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## قم بإلغاء التعليق على هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## ما هي منافذ TCP/IP التي يجب أن تعرضها هذه الحاوية؟
## إذا كنت تريد أن تشارك Discourse منفذًا مع خادم ويب آخر مثل Apache أو nginx،
## انظر https://meta.discourse.org/t/17247 للحصول على التفاصيل
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## قم بتعيين db_shared_buffers إلى 25٪ كحد أقصى من الذاكرة الإجمالية.
  ## سيتم تعيينها تلقائيًا بواسطة bootstrap بناءً على ذاكرة الوصول العشوائي المكتشفة، أو يمكنك تجاوزها
  db_shared_buffers: "2048MB"

  ## يمكن أن يحسن أداء الفرز، ولكنه يضيف استخدام الذاكرة لكل اتصال
  #db_work_mem: "40MB"

  ## ما هو إصدار Git الذي يجب أن تستخدمه هذه الحاوية؟ (الافتراضي: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en

  ## كم عدد طلبات الويب المتزامنة التي يتم دعمها؟ يعتمد على الذاكرة وأنوى وحدة المعالجة المركزية.
  ## سيتم تعيينها تلقائيًا بواسطة bootstrap بناءً على وحدات المعالجة المركزية المكتشفة، أو يمكنك تجاوزها
  UNICORN_WORKERS: 8

  ## TODO: اسم النطاق الذي ستستجيب له هذه النسخة من Discourse
  ## مطلوب. لن تعمل Discourse برقم IP عارٍ.
  DISCOURSE_HOSTNAME: mydomain

  ## قم بإلغاء التعليق إذا كنت تريد بدء تشغيل الحاوية بنفس
  ## اسم المضيف (-h option) كما هو محدد أعلاه (الافتراضي "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: قائمة بالبريد الإلكتروني مفصولة بفواصل سيتم جعلها مسؤولاً ومطورًا
  ## عند التسجيل الأولي مثال 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'me@mydomain'

  ## TODO: خادم البريد SMTP المستخدم للتحقق من الحسابات الجديدة وإرسال الإشعارات
  # عنوان SMTP واسم المستخدم وكلمة المرور مطلوبة
  # تحذير الحرف '#' في كلمة مرور SMTP يمكن أن يسبب مشاكل!

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@mg.mydomain
  DISCOURSE_SMTP_PASSWORD: "mailgunpassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true             # (اختياري، الافتراضي صحيح)
  #DISCOURSE_SMTP_FORCE_TLS: true
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: postmaster@mg.mydomain


  ## إذا قمت بإضافة قالب Lets Encrypt، قم بإلغاء التعليق أدناه للحصول على شهادة SSL مجانية
  LETSENCRYPT_ACCOUNT_EMAIL: freemailaccount

  ## عنوان CDN http أو https لهذه النسخة من Discourse (تم تكوينه للسحب)
  ## انظر https://meta.discourse.org/t/14857 للحصول على التفاصيل
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## مفتاح عنوان IP الخاص بـ maxmind geolocation للبحث عن عنوان IP
  ## انظر https://meta.discourse.org/t/-/137387/23 للحصول على التفاصيل
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## الحاوية Docker عديمة الحالة؛ يتم تخزين جميع البيانات في /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## الإضافات هنا
## انظر https://meta.discourse.org/t/19157 للحصول على التفاصيل
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-docs.git
## أي أوامر مخصصة لتشغيلها بعد البناء
run:
  - exec: echo "Beginning of custom commands"
  ## إذا كنت ترغب في تعيين عنوان البريد الإلكتروني 'من' للتسجيل الأول، قم بإلغاء التعليق والتغيير:
  ## بعد الحصول على البريد الإلكتروني الأول للتسجيل، أعد التعليق على السطر. يحتاج فقط إلى التشغيل مرة واحدة.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

حقًا - التغييرات الوحيدة التي تم إجراؤها على هذا ستكون:

  DISCOURSE_SMTP_ADDRESS: smtp.mydomain
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: email@mydomain
  DISCOURSE_SMTP_PASSWORD: "mydomainmailpassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true             # (اختياري، الافتراضي صحيح)
  #DISCOURSE_SMTP_FORCE_TLS: true
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: email@mydomain

بمجرد أن أتلقى ردًا من شخص ما، سأقوم بإجراء تلك التغييرات والتحقق مرة أخرى في السجلات. أو… ربما أقوم بذلك فقط - أنشر السجلات - وأنتظر ردًا. لا ينبغي أن يستغرق الأمر وقتًا طويلاً. سنرى.

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

بصراحة، لا أعرف. :thinking: لا يبدو أن هذه مشكلة في Discourse. أعني، تم إرسال البريد الإلكتروني بواسطة Discourse بشكل صحيح، لكن Mailgun فشل في تسليمه إلى عنوان البريد الإلكتروني.

الخطأ 550 يعني “لم يكن صندوق بريد المستخدم متاحًا (مثل - لم يتم العثور عليه)

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

شكراً على ردك. لا أعرف ما المشكلة - البريد الإلكتروني يعمل بشكل جيد. فقط لا يحب نطاقي على ما أعتقد.

لقد غيرت الإعداد لاستخدام بريدي الإلكتروني الخاص بالنطاق للإرسال. سأتحقق من السجلات الآن وأرى ما هي الأخطاء التي أحصل عليها.

تعديل
لا يوجد خطأ في السجلات - لكنني حصلت على هذا.

سأحاول من ./discourse-doctor - لكن السجلات فارغة تمامًا في /logs.

وأحصل على نفس الأخطاء المذكورة في البداية.

عنوان البريد الإلكتروني المستخدم يعمل. أقوم بنسخ ولصق التفاصيل بما في ذلك كلمة المرور. لقد اختبرت نفس البريد الإلكتروني على ThunderBird / Windows Mail دون أي مشاكل على الإطلاق. لذا…

لقد اتصلت بدعم مزود الاستضافة الخاص بي سابقًا - وكان هذا هو الرد.

لذا لا أعرف. ربما هناك شيء أفتقده؟ رسائل البريد الإلكتروني التجريبية تعمل مع 465 / 587 ولا توجد مشاكل. لقد نفدت حيلتي.

هل هناك أي أحرف خاصة يمكن حظرها أو تسبب مشكلة في إعدادات البريد الإلكتروني؟

تم تغيير الإعدادات إلى المنفذ 465 ولا يظهر هذا إلا في /logs.

لا شيء ذي أهمية كبيرة أعتقد.

أود أن أرسل الثناء والشكر لـ @Arkshine على المساعدة حتى الآن. يبدو أن الخادم الافتراضي الخاص (VPS) لا يمكنه الوصول إلى النطاق المستضاف - وهذا هو سبب عدم عمل رسائل البريد الإلكتروني. هذا غريب جدًا، ولكني أتواصل مع مزود الاستضافة للتحقق من ذلك. سأقوم بالتحديث.

لقد كان الأمر سريعًا وسهلاً جدًا. أدى اختبار ping بسيط للنطاق المستضاف من جلسة SSH إلى الخادم الافتراضي الخاص الذي يشغل Discourse إلى توضيح المشكلة. دعنا نرى كيف ستسير الأمور.

تعديل
كنت أتمنى لو أن @Arkshine قد رد حتى أتمكن من تحديد ذلك كحل. على أي حال - لقد تلقيت ردًا من مزود الاستضافة. يبدو أن خوادمهم قامت بحظر عنوان IP الخاص بالخادم الافتراضي الخاص تلقائيًا بسبب محاولات SMTP فاشلة. لست متأكدًا مما كان يحدث - سأقوم بتغيير الإعدادات وتشغيل الاختبارات مرة أخرى وسأرى. يجب أن يكون الأمر جيدًا الآن - يمكن الوصول إلى عنوان IP المستضاف عبر ping من الخادم الافتراضي الخاص الآن. اختبرت إعدادات البريد الإلكتروني ونحن جاهزون للانطلاق!

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

مرة أخرى - شكرًا جزيلاً لـ @Arkshine على كل المساعدة. استمر في العمل الجيد!

إعجابَين (2)

أتفق معه، فهو يساعد ويقدم موارد قيمة. :slight_smile:

3 إعجابات

أود أيضًا أن أذكر أن صورة ملفه الشخصي وصورة خلفية ملفه الشخصي رائعتان حقًا. تعجبني.

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

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