Estou recebendo um erro Bad HELO após configurar o Discourse.
Fiz algumas investigações e descobri que isso pode ser um problema se o DNS reverso não corresponder ao nome do host em alguns casos.
No meu caso, minha configuração tem o nome do host do servidor de e-mail em um servidor DirectAdmin compartilhado, então estou configurando o Discourse em um domínio que difere do domínio do nome do host.
DISCOURSE_SMTP_ADDRESS: mail.example.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: discourse@example.com
DISCOURSE_SMTP_PASSWORD: "minha_senha_sem_hash"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, padrão true)
DISCOURSE_SMTP_DOMAIN: 20.example.org #note que o domínio do DirectAdmin difere do meu domínio.
DISCOURSE_NOTIFICATION_EMAIL: noreply@example.com
É bem provável que o servidor esteja rejeitando porque sua entrada de DNS reverso não corresponde. Por exemplo, você se conecta de um IP e diz EHLO domainname.com; o servidor receptor faz uma consulta reversa nesse IP e encontra www.domainname.com, que não é uma correspondência exata, e por isso ele reclama/rejeita. Não é uma violação da especificação SMTP, mas é uma prática comum de anti-spam e anti-falsificação.
O PHPMailer, por padrão, deriva o endereço do remetente do envelope SMTP a partir do endereço From, mas você pode sobrescrevê-lo usando a propriedade Hostname (que não é a mesma coisa que Host), por exemplo:
$mail->From = 'user@domainname.com';
$mail->Hostname = 'www.domainname.com';
https://github.com/PHPMailer/PHPMailer/issues/1095