설치 후 이메일 오류

Discourse를 설치했고 이제 관리자 권한도 있지만, 초대장이나 테스트 이메일을 보내려 하면 완전히 실패합니다.

postmaster@mydomain.com 계정이 있는 메일 서버(mail.mydomain.com)가 있습니다. 지원 관련 질문과 답변을 몇 가지 읽어본 결과, mydomain.com 도메인에 SPF와 DKIM DNS 레코드가 필요할 것 같습니다. 설치 설명서에 이 부분이 빠져 있었나요?

SPF 레코드를 찾아 테스트해 봤는데, 문제없는 것 같습니다.
개인 이메일에서 postmaster@mydomain으로 이메일을 보내면 정상적으로 수신됩니다.

하지만 Discourse에서 테스트 이메일을 보내면 수신되지 않습니다. DKIM이 필요한 건가요? 그렇다면 DKIM을 어떻게 설치하나요? 다시 한번 묻지만, 이 단계를 어딘가에서 놓친 건가요?

감사합니다…

SPF와 DKIM이 Discourse에서 메일 서버로 나가는 메일을 차단하는 원인은 아닙니다. 포럼의 /logs와 메일 서버 로그를 확인하여 오류 메시지가 있는지 점검해 주세요.

해당 레코드에 대한 문서는 이메일 서비스 제공업체에서 제공하며, 설정 방법은 다양합니다. 하지만 언급했듯이, 이것이 메일 전송 실패의 원인일 가능성은 매우 낮습니다.

모두 감사합니다. 지연된 점 사과드립니다. 발신 이메일 테스트가 블랙홀에 빠지는 것 같습니다. 이제 SPF와 DKIM 레코드는 필요하지 않다는 것을 이해했습니다. 관리자 계정으로 로그인했을 때 제가 확인한 내용은 다음과 같습니다:

/emails/settings에서 아무 이메일 주소(제 주소든 초대된 사용자의 주소든, 호스트 도메인이든 아니든)를 입력하면 다음 오류 메시지가 표시됩니다:

테스트 이메일을 보내는 중 문제가 발생했습니다. 이메일 설정을 다시 확인하고, 호스트가 이메일 연결을 차단하지 않는지 확인한 후 다시 시도해 주세요.

제가 이해한 바에 따르면 Discourse의 이메일 설정은 정확하다고 생각하지만, 명확한 정의는 찾지 못했습니다. 제 개인 주소에서 이메일을 보낼 수 있으므로 호스트 도메인이 차단을 하고 있지는 않습니다. Discourse 드롭렛의 UFW를 확인해 보니 비활성화되어 있다고 보고되었습니다.

/logs/error 로그는 비어 있습니다. 명백한 오류(위 참조)가 발생했는데도 로그가 남지 않았습니다! 모든 이메일 처리 실패를 [/logs]에 기록하도록 설정되어 있습니다(확인 완료). 호스트 도메인에서 오류를 찾을 수 없습니다.

추가로, WP Discourse 플러그인이 설치되어 있지만 활성화되지 않은 WordPress 사이트가 있습니다. 이 플러그인이 어떻게든 도움이 될 수 있을까요?

미리 감사드립니다.

수정…
대시보드로 돌아갔더니 다음과 같은 메시지가 보였습니다:

실패한 이메일 작업이 7건 있습니다. app.yml을 확인하고 메일 서버 설정이 올바른지 확인하세요. [Sidekiq에서 실패한 작업 보기](https://talk.thesturdytree.com/sidekiq/retries)

Sidekiq을 클릭하니 7건의 항목이 표시되었는데, 이들은 다음 항목들의 중복입니다:

[3시간 후](https://talk.thesturdytree.com/sidekiq/retries/1585096899.6700559-58d9041788be7dd98d743894) 15 [default](https://talk.thesturdytree.com/sidekiq/queues/default) Jobs::InviteEmail {"invite_id"=>2, "current_site_id"=>"default"} Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

[3시간 후](https://talk.thesturdytree.com/sidekiq/retries/1585097052.665957-fc6f06d948e7d37ec15354cc) 15 [critical](https://talk.thesturdytree.com/sidekiq/queues/critical) Jobs::CriticalUserEmail {"type"=>"email_login", "user_id"=>1, "email_token"=>"da467ec8590f0ecb0220d3aed5b33c61", "current_site_id"=>"default"} Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

해당 관리자 대시보드 페이지에는 "최신 상태입니다!"라고 표시되어 있지만, 드롭렛에 ssh로 접속하면 "55개의 패키지를 업데이트할 수 있습니다."라고 알려줍니다. 이에 대해 어떤 조치를 취해야 하나요?

서로 무관한 문제입니다. 관리자 대시보드는 Discourse 자체의 최신 상태를 알려주는 것이고, 드롭렛에 로그인할 때 나타나는 메시지는 업데이트 가능한 시스템 소프트웨어가 있음을 알려주는 것입니다. 이 시스템에 대해 자동 업데이트를 설정하는 방법을 조사해 보시는 것이 좋습니다.

이것은 Discourse 인스턴스가 지정된 포트의 지정된 메일 서버에 연결할 수 없는 것처럼 보입니다. 설정이 올바른지, 그리고 DO가 사용하려는 포트의 아웃바운드 연결을 차단하지 않는지 확인하십시오.

https://github.com/discourse/discourse/blob/master@{2020-03-24}/docs/INSTALL-cloud.md#post-install-maintenance

Ubuntu에서는 dpkg-reconfigure -plow unattended-upgrades 명령을 사용하세요.

실행 순서에 따른 제안:

  1. telnet을 사용하여 드롭렛이 메일 서버에 연결할 수 있는지 확인하세요.
  2. 드롭렛과 무관하게 SMTP 자격 증명이 정상적으로 작동하는지 확인하세요.

1번이 실패하면 네트워크 문제입니다. DigitalOcean은 특정 아웃바운드 포트가 차단되는 것으로 알려져 있으며, 이것이 85%의 경우에서 원인이 됩니다.

1번과 2번 모두 성공한다면 app.yml 파일을 확인하세요. 비밀번호에 제대로 파싱되지 않는 문자가 포함되어 있을 가능성이 높습니다(약 5%의 경우), 또는 비밀번호를 올바르게 입력하지 않았을 수 있습니다.

메일 서버와 관련하여, 권장되는 메일 제공업체를 사용하는 대신 자체 메일 서버를 호스팅하는 경우 SPF와 DKIM은 전달률 향상에 확실히 도움이 되지만, 메일 문제의 측면에서는 빙산의 일각에 불과할 가능성이 큽니다.

모두의 도움에 감사드립니다.
문제가 GoDaddy에서 제공하는 제 이메일 서버 때문인 것 같습니다. 문제의 원인은 끝까지 정확히 파악하지 못했습니다. GoDaddy는 공유 계정에서 여러 문제가 있는 것 같습니다. 결국 그만한 번거로움은 감당하기 어렵다고 판단하여, 추천되는 이메일 제공업체를 검색한 끝에 mailjet.com을 선택했습니다. Mailjet 무료 계정을 만들고 app.yml 파일을 그에 맞게 수정했습니다. Mailjet 설정을 추가로 해야 하는 부분이 있었습니다. 다시 Discourse 이메일 테스트를 해보니 성공했습니다. 제 Discourse 커뮤니티는 규모가 작으므로, Mailjet의 무료 이메일 제한으로 인한 문제는 없을 것으로 보입니다. 현재까지는 모든 것이 잘 작동하는 것으로 보이지만, 앞으로 해야 할 설정이 아직 많이 남아 있는 것 같습니다.
다시 한번 감사드립니다…