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