أواجه خطأ 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