Discourse SMTP가 도메인 대신 "EHLO localhost"를 보내 Google smtp-relay가 작동하지 않음

@iwaffles -

이 스레드와 관련 스레드에서 언급된 해결 단계를 시도해 보셨나요?

app.yml 파일에 아래 줄을 추가하세요:

DISCOURSE_SMTP_DOMAIN: [서버의 FQDN]

그 다음 /var/discourse 디렉터리에서 ./launcher rebuild app 명령을 실행하세요.

discourse-doctor는 여전히 실패를 보고할 수 있지만, 관리자 콘솔에서 테스트 이메일을 보내면 작동해야 하며, 정상적인 이메일 흐름이 복구되어야 합니다.

그렇게 되지 않으면 다시 알려주세요. 그렇다면 아직 발견되지 않은 다른 문제가 있다는 뜻이기 때문입니다.

3개의 좋아요

리빌드를 시도해 봤는데 작동합니다!

말씀하신 대로, 제 환경에서는 discourse-doctor가 여전히 실패합니다.

아까 리빌드 대신 discourse를 재시작했던 것 같고, 그래서 변경 사항이 반영되지 않았던 것 같습니다. @Syonyk 님 감사합니다!

2개의 좋아요

localhost가 항상 잘못된 값이라는 것은 분명해 보입니다. 하지만 대부분의 SMTP 서버가 해당 값을 무시하기 때문에 실제로는 문제가 되지 않았습니다.

https://github.com/discourse/discourse에서 smtp_domain이 나타나는 3곳은 모두 2~7년 전의 것입니다. 혹시 어떤 라이브러리가 갑자기 localhost를 보내기 시작한 것은 아닐까 생각했습니다.

@Falco님의 우려에도 불구하고, 가장 좋은 해결책은 다음과 같은 곳에서 실제로 이 문제를 수정하는 것이라고 생각합니다.

RFC에 부합하지 않는다는 점을 알면서도 localhost를 계속 보내기로 합의하든, 그렇지 않든, 위에서 설명한 대로 rake 태스크를 수정하는 것은 필수적입니다. 아, 그리고 그 코드를 작성한 사람은 저입니다. :man_shrugging: 하지만 잠깐, action_mailer.smtp_settings['domain']이 비어 있을 수 있다는 것을 깨달았습니다. 따라서

    Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

은 적어도 당분간은 다음과 같이 되어야 할 것입니다.

     Net::SMTP.start(smtp[:address], smtp[:port], smtp[:domain] || 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

domain 값이 존재하면 그것을 사용하고, discourse_smtp_host가 정의되지 않은 경우 현재(하지만 잘못된?) 동작인 localhost를 사용하도록 하는 것이 적절하다고 생각합니다.

discourse-setup에 이 항목을 추가하는 것은 꺼림칙합니다. 현재 거의 모든 사용자에게 정상적으로 작동하고 있으며, 또 하나의 다소 혼란스러운 질문을 추가하게 되기 때문입니다. (그리고 저는 곧 notification_email에 대한 질문도 추가할 예정인데, 조심하지 않으면 수십 년 전 제가 리눅스 커널을 만들 때의 모습처럼 보일 것입니다.)

혹시 localhost가 여기에서 나오는 것일까요?

2개의 좋아요

이 이슈에 대해 알림을 받았고, 수정이 정상적으로 작동함을 확인했습니다. 평소 트래픽이 적은 인스턴스에서도 sidekiq가 갑자기 폭주했는데, apparently digest 작업이 여러 번 재시도되면서 생긴 문제인 것 같습니다.

해당 에러 메시지가 DoS 거부 시 구글이 출력하는 내용과 동일해서, 구글이 사용량 제한을 새로 도입한 건 아닌지 의심했습니다.

2개의 좋아요

리포트 감사합니다! 곧 discourse setup에 이 문제에 대한 수정 사항을 추가하겠습니다.

2개의 좋아요

이제 다음과 같이 변경되었습니다:

  • 모든 샘플 파일에 예시 환경 설정으로 추가
  • Discourse 신규 설치 설정 시 입력 요청
  • discourse doctor 및 rake 작업에서 수정

모두 감사합니다 :tada:

5개의 좋아요