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 と宣言すると、受信サーバーはその IP に対してリバーシルックアップを行い、www.domainname.com という結果を得ます。これは完全な一致ではないため、サーバーがエラーを報告したり拒否したりします。これは SMTP 仕様の違反ではありませんが、一般的なスパム対策およびなりすまし防止の慣行です。
PHPMailer はデフォルトで From アドレスから SMTP エンベロープ送信者アドレスを導出しますが、Hostname プロパティ(Host とは異なります)を使用して上書きできます。例えば:
$mail->From = 'user@domainname.com';
$mail->Hostname = 'www.domainname.com';
https://github.com/PHPMailer/PHPMailer/issues/1095