공식 Digital Ocean droplet에서 Discourse 설정 시 이메일이 발송되지 않음

공식 Digital Ocean droplet을 통해 공식 지원되는 Discourse 설치 방식을 사용하고 있습니다. 첫 번째 사이트(jordanviolet.dev)는 성공적으로 설정했고, 현재 두 번째 사이트(violetfamily.com)를 설정 중입니다.

  • 도메인은 Google Domains를 통해 구매했지만, 네임서버는 Digital Ocean에 설정되어 있습니다.
  • 두 사이트 모두 각 도메인 이메일을 사용하며, 이는 Google Workspace 계정입니다(각각 @jordanviolet.dev와 @violetfamily.com).
  • 두 사이트 모두 Google Workspace에서 110%의 인증 설정(identity configurations)을 완료했습니다. 도메인 등 관련 사항을 수십 번 확인했습니다.

jordanviolet.dev는 설정이 잘 되었고 이메일도 정상적으로 발송되었습니다!

violetfamily.com에서는 이메일 오류가 발생했는데, 이 가이드에 따라 비보안 애플리케이션을 허용하도록 설정하여 해결했습니다(jordanviolet.dev에서는 이 방법으로 잘 작동했었죠):

이메일이 한 통은 발송되었지만, 이후 등록이 만료되었고 그 이후로는 이메일이 발송되지 않고 있습니다. tail -f shared/standalone/log/rails/production.log를 실행한 뒤 이메일을 발송하면 로그에서 200 OK가 표시되는 것으로 보아 요청은 처리되고 있는 것 같습니다. 이때 다음과 같은 로그가 출력됩니다:

Started HEAD "/" for 13.57.1.58 at 2024-05-18 18:39:43 +0000
Processing by FinishInstallationController#index as */*
  Rendered finish_installation/index.html.erb within layouts/finish_installation (Duration: 0.9ms | Allocations: 187)
  Rendered layout layouts/finish_installation.html.erb (Duration: 23.7ms | Allocations: 2771)
Completed 200 OK in 61ms (Views: 25.3ms | ActiveRecord: 0.0ms | Allocations: 8607)
Started GET "/" for 13.57.1.58 at 2024-05-18 18:39:43 +0000
Processing by FinishInstallationController#index as */*
  Rendered finish_installation/index.html.erb within layouts/finish_installation (Duration: 0.6ms | Allocations: 187)
  Rendered layout layouts/finish_installation.html.erb (Duration: 9.4ms | Allocations: 2575)
Completed 200 OK in 14ms (Views: 10.5ms | ActiveRecord: 0.0ms | Allocations: 3736)

하지만 이메일을 전혀 받지 못하고 있습니다. 혹시 해결책이 있을까요? 현재로서는 제가 할 수 있는 방법을 모두 시도해 본 것 같습니다.

수정:

잠시 아무것도 변경하지 않고 기다렸더니, 기이하게도 이메일이 하나 도착했지만 타임스탬프는 약 10분 전 것이었습니다(그리고 이메일 인증 링크도 이미 만료된 상태였죠).

어딘가 SMTP 릴레이에 무언가 멈춰 있는 것 같고, 그냥 기다려야 할 것 같습니다.

구글이 곧 이메일 플랫폼에서 보안이 낮은 앱의 사용을 중단할 것 같습니다:

OAuth를 사용하여 구글 이메일로 새 설치를 구성하는 방법에 대한 현재 Discourse 가이드가 있는지 조사해 봐야 할 것 같습니다.

이 문제를 겪고 계신 다른 분들을 위해, 결국 제게 효과가 있었던 방법(그렇지만 왜 그런지는 모르겠지만)을 공유합니다:

MX 서버를 비활성화했다가 다시 활성화하니 해결되었습니다.