550 Bad HELO - Хост выдает себя за имя хоста

После настройки Discourse я получаю ошибку Bad HELO.

Я провел небольшое расследование и выяснил, что в некоторых случаях это может происходить, если обратный 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 ваш.ip.номер

ваше имя хоста?

Привет, Джей,

Discourse пока не позволяет мне публиковать ссылки в ответе. Поэтому я буду использовать точку вместо точки с запятой. Надеюсь, это сохранит ясность.

Да, когда я запускаю эту команду на VPS, на котором работает Discourse, я получаю имя хоста, на котором работает Discourse, то есть discourse dot example dot com.

Если я запускаю это на общем сервере (где находится почтовый сервер), я получаю его имя хоста, то есть above 20 dot example dot org. Не example dot com. Технически example dot com разрешается в IP-адрес общего сервера. Но у общего сервера есть другое имя хоста (20 dot example dot org).