이메일을 보낼 수 없습니다

계정을 생성할 때 이메일이 수신되지 않아서 제가 잘못한 것이 있는지 궁금합니다. SMTP 주소와 SMTP 도메인의 차이점이 무엇인가요?

SMTP 주소: user@example.com
SMTP 도메인: example.com

혹시 도와주실 수 있을까요? 온라인 SMTP 도구를 사용해 보니 모두 정상적으로 작동하는데, 가입할 때 Discourse에서 이메일이 발송되지 않는 것 같습니다..

안녕하세요, @ethhaqn 님을 환영합니다 :slight_smile:

문제 해결 가이드를 확인해 보셨나요?

telnet mail.theapi.tech 25을 실행했는데 220 myhelper.tech ESMTP Postfix가 반환되었습니다. 이 도메인은 이 시스템을 테스트할 때 사용했던 오래된 도메인입니다. 이메일 전송에 영향을 미치고 있다고 생각하시나요? 그렇다면 이 도메인을 변경할 수 있는 곳이 어디일까요? 다시 말하지만, 이는 오래된 도메인이지만 telnet mail.theapi.tech 25를 실행할 때 이 도메인이 반환되도록 설정했을 위치가 어디인지 확실하지 않습니다.

또한 ./discourse-doctor를 실행했을 때 일반적인 오류가 아니라는 메시지를 받았고, 제 문제를 해결하지 못했습니다.

그리고 포트 80이 이미 사용 중이어서 ./discourse-setup을 사용하여 Discourse를 설치하지 않았습니다. 대신 containers/app.yml을 수동으로 편집한 후 ./launcher rebuild app을 실행했습니다.

tail shared/standalone/log/rails/production.log를 사용했는데, 로그에는 다음과 같이 표시됩니다:

Processing by FinishInstallationController#confirm_email as HTML
  Rendered finish_installation/confirm_email.html.erb within layouts/finish_installation (Duration: 0.7ms | Allocations: 255)
  Rendered layout layouts/finish_installation.html.erb (Duration: 6.7ms | Allocations: 2103)
Completed 200 OK in 8ms (Views: 7.4ms | ActiveRecord: 0.0ms | Allocations: 2735)
start
  Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 34)
Delivered mail 0e5b023a-90f9-4c23-ae2b-488b4d70d907@theapi.tech (39.6ms)
Job exception: hostname "mail.theapi.tech" does not match the server certificate

fail

openssl s_client -connect mail.theapi.tech:25 -starttls smtp -showcerts

Verification error: self signed certificate

따라서 app.yml 파일에서 DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none을 설정해야 합니다.

그러면 이메일 인증이 필요 없게 되는 거 아닌가요?

아니요. 이 방법은 현재 실패하고 있는 검증을 Discourse가 건너뛰게 합니다.

아, 이제야 맞네. SSL 인증서를 어떻게 발급받나요? 참고로 제 app.yml에는 이렇게 되어 있어요:

image

직접 메일 서버를 설정하는 부분은 이 포럼의 범위를 벗어난다고 생각합니다.

아니, 제 메일 서버에서는 안 돼. 제 실제 Discourse 사이트에서 말이야.

Run other websites on the same machine as Discourse 를 참고해 주시고, 그래도 문제가 해결되지 않으면 새로운 주제를 개설해 주세요.

안녕하세요, 로컬 Discourse 인스턴스를 2.9.0.beta4로 업그레이드하고 containers/app.yml 파일에 DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: "none"을 추가한 후(앱을 다시 빌드했음에도) 여전히 다음과 같은 오류가 발생하고 있습니다:

  Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 34)
Delivered mail 31c5b9eb-1077-4155-b040-314c4a8566cb@taverne.colorfulminis.com (11.3ms)
Job exception: SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate)

이로 인해 제 Discourse 인스턴스에서 이메일을 보낼 수 없게 되었습니다.
이와 관련하여 알려진 문제가 있나요?
참고로, 2.8.0.beta9을 실행 중인 preprod 인스턴스에서는 동일한 구성으로 이메일이 정상적으로 전송되고 있습니다.

도움 주셔서 감사합니다.

알렉시스님,

저도 VM(Ubuntu 22.04, Docker 기반 2.9.0.beta4 Discourse 인스턴스)에서 동일한 문제를 겪고 있습니다. container/app.yml에 DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none을 설정하고, Docker 환경 변수인 $DISCOURSE_SMTP_OPENSSL_VERIFY_MODE도 none으로 지정해 두었음에도 certificate verify failed (self signed certificate) 오류가 계속 발생하고 있습니다.

수정: 참고로, 안정 버전(2.8.3)에서는 정상적으로 동작합니다.

기록을 위해: DISCOURSE_SMTP_ENABLE_START_TLS: true를 활성화한 후 내 환경에서는 문제가 해결되었습니다.

답을 찾지 못해 이 주제에 온 분들을 위해:
새로 설치한 VPS에서 먼저 아웃바운드 메일 포트 활성화가 필요하다는 걸 방금 깨달았습니다. 원래 알고 있었지만, 밤을 한숨 자고 나서야 떠올랐네요 :wink:
즐거운 호스팅 되세요! :smiley: