이메일이 전혀 작동하지 않아요

안녕하세요. 지난 며칠 동안 Discourse 포럼을 설정하는 데 어려움을 겪고 있었는데, 그 모든 문제가 이메일 설정에서 발생했습니다. 이메일 가입 과정을 건너뛰어 포럼은 띄울 수는 있었지만, 사람들이 가입할 수 있도록 이메일 기능이 정상적으로 작동해야 합니다. 같은 결과를 계속 얻고 있으며, 여러 가지를 시도해 보았지만 아무것도 해결되지 않았습니다. 매번 두 가지 중 하나가 발생했습니다:

  1. 테스트 이메일 오류 메시지에 "호스트명 . . . 이(가) 서버 인증서와 일치하지 않습니다"라고 표시됩니다.
  2. 테스트 이메일 오류 메시지에 "502"라고 표시되고, Sidekiq에서는 Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)> 오류가 발생합니다.

각 오류가 언제 나타나는지 말씀드리자면, 첫 번째 오류는 모든 시나리오에서 발생합니다. 두 번째 오류는 포트 465를 사용할 때 나타났습니다. "테스트 이메일 보내기"가 완료되는 데 시간이 걸린 후 해당 오류가 나타났습니다. 방금 SSL을 비활성화하여 포트 587을 사용할 수 있게 했는데, 이제 오류 1이나 2가 발생하는 대신 “테스트 이메일 전송 중” 상태로 멈춰 있습니다.

이 시점에서 어떻게 해야 할지 모르겠고, 며칠째 이 문제로 고생하고 있지만 아직 해결책을 찾지 못했습니다. 도움이 정말로 절실합니다. 시간 내어 도와주셔서 감사합니다.

업데이트: curl --ssl-reqd 명령을 사용하여 포트 465, 587, 25, 2525를 테스트했습니다. 결과는 다음과 같습니다:
25: 작동하지 않음 (Curl 오류 35, 잘못된 버전 번호)
465: 의도대로 작동하며 빠른 이메일 응답
587: 작동하지 않음 (Curl 오류 35, 잘못된 버전 번호)
2525: 실패하지는 않았지만 이메일이 전송되지 않음 (전송 중 시간이 계속 올라가고 멈추지 않음)

도움이 된다면, 현재 설정은 다음과 같습니다 (502 오류 발생 시):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (선택 사항, 기본값 true)

템플릿:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Lets Encrypt(https)를 추가하려면 아래 두 줄의 주석을 해제하세요
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

그리고 expose:

expose:
  - "80:80"   # http
  - "443:443" # https

이것이 이메일 정보 이미집니다:

권장 이메일 제공자 중 하나를 사용 중이신가요?

Discourse 서버는 어디에 설치되어 있나요?

그렇지 않다고 생각합니다. 도움이 된다면, 이메일은 VoltHosting에서 제공하는 것입니다.

또한, Discourse 서버는 var/discourse 아래에 설치되어 있으며, 정상적으로 작동합니다(이메일을 건너뛰고 만든 관리자 계정으로 웹사이트에 접속하여 둘러볼 수 있습니다). 이메일 테스트도 이 방식으로 수행합니다(이메일 > 설정과 이메일 > 미리보기 요약에서 테스트 이메일을 보내보며, 여기서 해당 오류가 발생합니다). 도움을 주셔서 감사합니다.

권장 제공업체 중 하나를 사용해 보십시오. 이렇게 하면 문제가 Discourse 설치에 있는지, 아니면 통신하려는 메일 서버에 있는지를 빠르게 파악하는 데 도움이 됩니다.

권장 제공업체 목록이 존재하는 이유는, 해당 제공업체들이 Discourse와 함께 작동하는지 검증되었기 때문입니다. SMTP는 가장 좋은 경우에도 골칫거리일 수 있으며, 권장 설정을 사용하지 않는 경우라면 그로 인해 발생하는 추가적인 기술적 부담을 스스로 감당한다는 것이 일반적으로 전제됩니다.

답변 주셔서 감사합니다. 추천하신 제공업체 중 하나를 사용할 수 없을 것 같습니다. 플랜을 만든 사람이 해당 회사로 이메일을 더 많이 보내야 하기 때문에, VPS 자체 비용에 추가 비용이 발생하게 되며, 지금은 그렇게 할 수 있을 것 같지 않습니다. 매번 포럼을 다시 구축하지 않고 이메일 서비스를 더 효율적으로 테스트할 수 있는 다른 방법이 있을까요? 도움 주셔서 감사합니다.

이메일 설정을 변경하려면 재빌드가 필요하지 않습니다. 다음을 실행하면 됩니다:

./launcher destroy app
./launcher start app

이메일 설정을 편집한 후 - 새 설정이 적용됩니다. 모든 환경 변수에도 동일하게 적용됩니다.

서버 인증서가 호스트 이름과 일치하지 않는 경우, 이는 Discourse의 문제가 아니라 VoltHosting이 해결해야 할 문제입니다. 이메일 시스템 관련 지원이 필요하면 VoltHosting에 문의하는 것이 좋습니다. 유효한 대안 호스트 이름이 있을 수도 있습니다.

어쨌든, 위에서 링크한 페이지에서 제공하는 무료 트라이얼 중 하나를 사용하여 Discourse 자체가 이메일을 올바르게 처리하는지 확인하는 것을 권장합니다. Discourse가 정상적으로 작동하는 것을 확인한 후에는 언제든지 VoltHosting SMTP로 되돌릴 수 있습니다.

확인 차원에서, 인스턴스가 이 가이드에 따라 설치된 것이 맞나요?

감사합니다. 앞으로는 분명히 그렇게 하겠지만, 여전히 가능한 해결책을 찾고 있습니다. 도움이 된다면, 여기 Sidekiq 오류에 대한 스크린샷입니다:

image

물론 무료 체험판을 사용할 수는 있지만, 결국 무료 체험판이라 몇 가지 제한 사항이 있습니다. 그리고 네, 공식 가이드를 따라 Discourse 포럼을 설치했습니다. 서버는 정상적으로 작동하고 있지만, 이메일만 작동하지 않습니다. 도움을 주셔서 감사합니다.

이 시점에서 선택지는 권장 제공업체를 사용하여 테스트하거나 VoltHosting에 문의하는 것입니다. 오류 메시지는 SMTP 서버가 제공한 인증서가 연결에 사용된 호스트 이름에 대해 유효하지 않음을 나타냅니다.

권장 서비스 중 하나를 사용하여 테스트하여 반증이 불가능한 한, 이 문제는 Discourse 설치와 관련이 있을 가능성이 매우 낮습니다.

해당 타임아웃 오류는 메일 서버에 연결할 수 없음을 의미합니다. Digital Ocean이 접근을 차단하고 있거나, 다른 요인이 차단하고 있을 수 있습니다.

다음 명령을 실행해 볼 수 있습니다.

telnet server.hostname server-port

메일 서버를 설정하거나 관리하는 사람의 도움이 필요할 가능성이 높습니다.

답변해 주셔서 감사합니다. 방금 해당 명령어를 실행했고, 결과는 다음과 같습니다:


AUTH LOGIN을 허용하도록 설정되어 있는지 확실하지 않습니다. 허용되어야 한다면, 그것이 문제인 것으로 추정해도 될까요? 도움 주셔서 감사합니다.

음. 서버 레벨에서는 아니었어요. 다음으로 의심되는 건 도커 네트워크 문제인데, 다른 원인일 수도 있어요.

답변해 주셔서 감사합니다. 가능하다면, 이 문제에 대해 더 깊이 조사하려면 어떻게 해야 할까요? 테스트를 실행하고 출력을 확인할 수 있는 도커 명령어가 있거나, 다른 방법이 있을까요? 어딘가에서 테스트를 수행하여 문제의 출력을 얻을 수 있는 방법이 있을까요? 만약 그런 방법이 없다면, 그것도 충분히 이해합니다. 도움을 주셔서 감사합니다.

업데이트: curl --ssl-reqd 명령을 사용하여 포트 465, 587, 25, 2525를 테스트했습니다. 결과는 다음과 같습니다:
25: 작동하지 않음 (Curl 오류 35, 잘못된 버전 번호)
465: 의도대로 작동했으며 이메일 응답이 빨랐습니다
587: 작동하지 않음 (Curl 오류 35, 잘못된 버전 번호)
2525: 실패하지는 않았지만 이메일이 전송되지 않았습니다 (전송 중 시간 카운트가 계속 올라갔지만 이메일은 전송되지 않았습니다)

도움이 된다면, 현재 설정은 다음과 같습니다 (502 오류 발생 중):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (선택 사항, 기본값 true)

템플릿:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Lets Encrypt(https)를 추가하려면 아래 두 줄의 주석을 해제하세요
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

그리고 expose:

expose:
  - "80:80"   # http
  - "443:443" # https

이것은 이메일 정보가 포함된 이미지입니다:


원인이 Discourse가 SSL/TLS로 연결하지 않기 때문인지, 아니면 다른 이유인지 확실하지 않습니다. 이 정보가 유용하고 문제 해결에 도움이 되기를 바랍니다.

이것을 추가해서 작동하는지 확인해 보세요.

DISCOURSE_SMTP_ENABLE_START_TLS: False

답변해 주셔서 감사합니다. 안타깝게도 해결되지 않았습니다. 여전히 동일한 502 오류가 발생하고 있습니다.

도움이 될지 확실하지는 않지만, VPS에서 curl --ssl-reqd 명령을 실행하여 이메일을 성공적으로 전송할 수 있었습니다(이 답변에서 언급했듯이). 뿐만 아니라 앱 내부에서도 해당 명령을 실행(./launcher enter app 입력)하여 동일한 결과(465 포트는 작동, 25와 587 포트는 작동하지 않음, 2525 포트는 타임아웃 오류 발생)를 얻었지만, 포럼 자체에서(테스트 이메일을 사용하여) 실행할 때는 여전히 502 오류가 발생합니다. 이 추가 정보가 도움이 되기를 바랍니다. 도움을 주셔서 감사합니다.

해결 방법을 찾았나요?