550 Bad HELO - Host suplantando el nombre de host

Estoy recibiendo un error de Bad HELO después de configurar Discourse.

He investigado un poco y descubrí que esto puede ser un problema si la DNS inversa no coincide con el nombre de host en algunos casos.

En mi caso, la configuración tiene el nombre de host del servidor de correo en un servidor DirectAdmin compartido, por lo que estoy configurando Discourse en un dominio que difiere del dominio del nombre de host.

  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           # (opcional, valor predeterminado true)
  DISCOURSE_SMTP_DOMAIN: 20.example.org #nota que el dominio de DirectAdmin difiere de mi dominio.
  DISCOURSE_NOTIFICATION_EMAIL: noreply@example.com

Es muy probable que esté rechazando tu entrada de DNS inversa porque no coincide; por ejemplo, te conectas desde una IP y dices EHLO domainname.com, el servidor receptor realiza una búsqueda inversa en esa IP y encuentra www.domainname.com, lo cual no es una coincidencia exacta, y por eso se queja o rechaza. No es una violación de la especificación SMTP, pero es una práctica común contra el spam y la falsificación.

PHPMailer derivará la dirección del remitente del sobre SMTP de la dirección From de forma predeterminada, pero puedes sobrescribirla usando la propiedad Hostname (no es lo mismo que Host), por ejemplo:

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

¿Tiene el nombre de tu host?

dig -x tu.ip.número

Hola Jay,

Discourse aún no me permite publicar enlaces en una respuesta. Así que responderé usando “punto” en lugar de un punto final. Espero que esto mantenga las cosas claras.

Sí, cuando ejecuto este comando contra el VPS donde está Discourse, obtengo el nombre de host donde se está ejecutando Discourse, es decir, discourse punto example punto com.

Si lo ejecuto contra el servidor compartido (donde está el servidor de correo), obtengo su nombre de host, es decir, above 20 punto example punto org. No example punto com. Técnicamente, example punto com se resuelve a la dirección IP del servidor compartido. Pero el servidor compartido tiene otro nombre de host (20 punto example punto org).