malee
(Matthew Lee)
1
Discourse가 SMTP를 통해 이메일을 보내는 데 문제가 있는 것 같습니다.
이메일 서비스 제공업체와 호스트명을 확인했으며, 호스트 VM에서 Telnet과 sendmail을 통해 이메일을 성공적으로 보냈고, Discourse Docker 컨테이너 내부에서도 Telnet을 통해 성공적으로 보냈습니다.
Docker 컨테이너 내에서 'sendmail’을 통합하는 방법을 살펴보았는데, CLI에서 직접 이메일을 보낼 때 ‘host name could not be resolved’ 오류가 발생했습니다.
이것은 VM과 SMTP 서비스 제공업체 간의 통신에 문제가 없다는 것을 의미합니다.
모든 일반적인 SMTP 포트를 시도해 보았고, app.yml 파일의 구성이 올바르다고 생각합니다. 테스트에는 Linux 20.04, 24.04, 22.04 VM이 사용되었습니다.
암호화는 Let’s Encrypt 인증서를 사용합니다.
DISCOURSE_SMTP_ADDRESS: <smtp_provider>
DISCOURSE_SMTP_PORT: <port>
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_USER_NAME: apikey
DISCOURSE_SMTP_PASSWORD: "<secret>"
DISCOURSE_SMTP_ENABLE_START_TLS: true
Discourse 양식을 통해 보내면 항상 실행 시간 초과(execution expired) 메시지가 표시됩니다.
kuaza
(kuaza)
2
이메일 서비스 제공사의 한도를 확인해 보세요. 할당량을 초과하면 전송이 실패하는 경우가 있습니다. Outlook에서 이메일을 보내는 것을 시도해 보세요. 저에게도 한 번 그런 일이 있었습니다. 문제의 원인은 다를 수 있지만, 다른 분들에게는 도움이 될 수 있습니다.
pfaffman
(Jay Pfaffman)
3
‘호스트 이름을 확인할 수 없음’ 오류가 발생하고 있다면, 호스트 이름을 해석할 수 없다는 뜻으로 이는 문제입니다.
rake emails:test[you@somewhere.com] 명령어가 작동하나요? 또한 새로운 Discourse 설치에서 이메일 문제 해결을 참고해 보세요.
malee
(Matthew Lee)
4
답변해 주셔서 감사합니다. 주말에 살펴봤습니다. Digital Ocean에서 VM을 생성하고 Brevo로 SMTP를 설정했습니다. 모든 것이 정상적으로 작동했습니다. 
즉, Discourse 쪽에는 문제가 없습니다.
Discourse가 NET::smtp 같은 Ruby GEM을 사용해 이메일을 전송하고, 기본적으로 컨테이너 내부에는 SMTP 서버가 설치되어 있지 않다고 파악했습니다. 우리가 겪고 있는 문제는 Azure 테넌트에서 발생하고 있습니다.
제 생각에는 외부 SMTP 서비스로의 요청이 어딘가에서 차단되고 있는 것 같습니다. 테넌트 위에 설치된 어떤 형태의 반스팸(anti-SPAM) 메커니즘에 의해 차단되는 것 같습니다.
이 문제를 좁혀 보기 위해 몇 가지 더 테스트를 진행해야 합니다.
Discourse가 이메일 전송을 어떻게 처리하는지에 대한 정보가 있다면 알려주시면 좋겠습니다
저는 Ruby on Rails 초보자에 가깝습니다.
pfaffman
(Jay Pfaffman)
5
Digital Ocean 인스턴스에서 했던 것처럼 SMTP를 설정했나요?
rake 작업을 실행하면 어떤 일이 발생하나요?
malee
(Matthew Lee)
6
결과는 같습니다: 연결이 되지 않습니다.
각 인스턴스에서 서로 다른 SMTP 릴레이를 사용하고 있습니다.
다음과 같은 테스트를 수행하여 검증하고 있습니다:
- 로컬에서 docker-compose를 사용하여 Discourse 설치
- 다른 구독 아래에 있는 다른 Azure 테넌트에 Discourse 설치
- Brevo와 SendGrid SMTP 릴레이 모두 검증
이 테스트가 완료된 후 이 게시글을 업데이트하겠습니다…
pfaffman
(Jay Pfaffman)
7
연결이 안 된다는 건 연결이 안 된다는 뜻이에요. 방화벽에 차단되고 있는 게 꽤 분명해 보입니다.
포트 2525를 시도해 볼까요? 아니면 원하시는 포트가 프로바이더(예: DigitalOcean)에 의해 차단되고 있는지 물어보세요.
malee
(Matthew Lee)
8
@pfaffman 시간을 내어 주셔서 감사합니다. 결과적으로 문제는 DNS와 관련이 있었습니다.
이제 모든 것이 정상적으로 작동합니다 