localhost가 항상 잘못된 값이라는 것은 분명해 보입니다. 하지만 대부분의 SMTP 서버가 해당 값을 무시하기 때문에 실제로는 문제가 되지 않았습니다.
https://github.com/discourse/discourse에서 smtp_domain이 나타나는 3곳은 모두 2~7년 전의 것입니다. 혹시 어떤 라이브러리가 갑자기 localhost를 보내기 시작한 것은 아닐까 생각했습니다.
@Falco님의 우려에도 불구하고, 가장 좋은 해결책은 다음과 같은 곳에서 실제로 이 문제를 수정하는 것이라고 생각합니다.
RFC에 부합하지 않는다는 점을 알면서도 localhost를 계속 보내기로 합의하든, 그렇지 않든, 위에서 설명한 대로 rake 태스크를 수정하는 것은 필수적입니다. 아, 그리고 그 코드를 작성한 사람은 저입니다. 하지만 잠깐, action_mailer.smtp_settings['domain']이 비어 있을 수 있다는 것을 깨달았습니다. 따라서
domain 값이 존재하면 그것을 사용하고, discourse_smtp_host가 정의되지 않은 경우 현재(하지만 잘못된?) 동작인 localhost를 사용하도록 하는 것이 적절하다고 생각합니다.
discourse-setup에 이 항목을 추가하는 것은 꺼림칙합니다. 현재 거의 모든 사용자에게 정상적으로 작동하고 있으며, 또 하나의 다소 혼란스러운 질문을 추가하게 되기 때문입니다. (그리고 저는 곧 notification_email에 대한 질문도 추가할 예정인데, 조심하지 않으면 수십 년 전 제가 리눅스 커널을 만들 때의 모습처럼 보일 것입니다.)