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을 보내면 수신 서버가 해당 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

Does

  dig -x your.ip.number

Have your host name?

제이, 안녕하세요.

현재 Discourse에서 답변에 링크를 붙여넣을 수 없습니다. 그래서 마침표 대신 점을 사용할게요. 내용을 명확하게 전달할 수 있기를 바랍니다.

네, Discourse가 실행 중인 VPS에 대해 이 명령을 실행하면 Discourse가 실행 중인 호스트네임이 반환됩니다. 예를 들어 discourse dot example dot com 같은 형태죠.

이 명령을 공유 서버(메일 서버가 있는 곳)에 대해 실행하면 해당 서버의 호스트네임, 즉 above 20 dot example dot org가 반환됩니다. example dot com이 아닙니다. 기술적으로 example dot com은 공유 서버의 IP로 해석되긴 합니다. 하지만 공유 서버에는 다른 호스트네임(20 dot example dot org)이 지정되어 있습니다.