550 Bad HELO - المضيف ينتحل اسم المضيف

أواجه خطأ Bad HELO بعد إعداد Discourse.

لقد قمت ببعض البحث ووجدت أن هذه المشكلة قد تظهر في بعض الحالات إذا لم يطابق عنوان DNS العكسي اسم المضيف.

في حالتي، يحتوي تكويني على اسم مضيف خادم البريد على خادم DirectAdmin مشترك، لذا أقوم بإعداد Discourse على نطاق يختلف عن نطاق اسم المضيف.

  DISCOURSE_SMTP_ADDRESS: mail.example.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: discourse@example.com
  DISCOURSE_SMTP_PASSWORD: "my_password_without_hash"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (اختياري، الافتراضي true)
  DISCOURSE_SMTP_DOMAIN: 20.example.org #ملاحظة: نطاق DirectAdmin يختلف عن نطاق موقعي.
  DISCOURSE_NOTIFICATION_EMAIL: noreply@example.com

من المرجح جدًا أن المشكلة سببها عدم تطابق إدخال DNS العكسي؛ فمثلًا، عندما تتصل من عنوان IP وتُرسل أمر EHLO باسم domainname.com، يقوم الخادم المستقبل بإجراء بحث عكسي عن ذلك العنوان فيجد www.domainname.com، وهو لا يطابق تمامًا، مما يؤدي إلى رفض الاتصال أو إظهار تحذير. هذا ليس انتهاكًا لمواصفات SMTP، لكنه ممارسة شائعة لمكافحة البريد العشوائي والتزوير.

يقوم PHPMailer بشكل افتراضي باستخلاص عنوان المرسل في غلاف SMTP من عنوان From، لكن يمكنك تجاوز ذلك باستخدام خاصية Hostname (وهي ليست نفس خاصية Host)، على سبيل المثال:

$mail->From = 'user@domainname.com';
$mail->Hostname = 'www.domainname.com';
https://github.com/PHPMailer/PHPMailer/issues/1095

هل يحتوي الأمر التالي

  dig -x your.ip.number

على اسم المضيف الخاص بك؟

مرحبًا جاي،

لا يسمح لي Discourse بنشر الروابط في رد ما زال. لذا سأرد باستخدام النقطة بدلًا من النقطة. آمل أن يظل الأمر واضحًا.

نعم، عندما أشغل هذا الأمر على الخادم الافتراضي الخاص (VPS) الذي يعمل عليه Discourse، أحصل على اسم المضيف الذي يعمل عليه Discourse، أي discourse.example.com.

أما إذا شغّلت الأمر على الخادم المشترك (حيث يوجد خادم البريد)، فالحصول على اسم المضيف الخاص به، أي 20.example.org، وليس example.com. تقنيًا، يحل example.com إلى عنوان IP الخاص بالخادم المشترك. لكن الخادم المشترك لديه اسم مضيف آخر (20.example.org).