Gmail을 이용한 알림 메일 전송 개발 입문

안녕하세요,

저는 Ruby와 Docker는 처음이지만, 그 외에는 개발 경험이 있습니다. 현재 개발용 Discourse 인스턴스와 프로덕션 인스턴스가 모두 정상적으로 작동하고 있으므로, 의존성 문제는 없는 것으로 보입니다. no-reply@discourse.example.com에 OAuth 2.0 기능을 추가하여 Google Workspace 사용자를 통해 알림을 보내고 싶습니다.

다음 사항에 대해 도움을 요청드립니다:

  • discourse git 저장소에서 docker 이미지를 생성하는 방법은 무엇인가요?
  • no-reply의 SMTP 인증 및 알림 전송을 담당하는 코드는 어떤 부분에 위치해 있나요?

이 작업이 순조롭게 진행된다면, ./discourse-setup 스크립트에서 선택 가능하도록 구성하여, 대부분의 메일 제공업체에는 웹마스터 계정을, 메일 제공업체가 Google인 경우에는 OAuth 2.0을 사용할 수 있도록 하려고 합니다. 도움이 된다고 판단하시면 결과를 보내드리고 검토를 요청할 수 있습니다.

감사합니다

아래 링크에서 이 내용을 읽어보시는 것이 좋습니다:

표준 설치 방법을 사용하는 것을 강력히 권장합니다.

빠른 답변 감사합니다. 저는 ./discourse-setup 스크립트를 사용하려 하지만, SMTP 클라이언트가 아니라 OAuth 클라이언트로 discourse를 설정해야 하므로 먼저 소스에 추가 작업이 필요합니다. discourse_docker 저장소에서 discourse 소스를 찾을 수 없습니다. 이 경우 discourse 소스를 수정한 후 ./discourse-setup 스크립트를 실행하는 방법이 있을까요? ./launcher 사용을 권장하지 않으신다면, 그 방향으로 더 진행하지 않아도 괜찮습니다.

현재 제 환경에는 discourse와 discourse_docker 저장소가 모두 있습니다.

로컬 리포지토리를 업스트림 대신 런처/discourse-setup 스크립트로 가져오는 방식으로 하면 어떨까요?

Basic 인증 대신 OAuth 인증을 사용하는 SMTP를 말씀하시는 건가요? 아니면 다른 경로를 통해 이메일을 전송하고 싶으신 건가요?

Discourse는 SMTP OAuth 인증을 지원하지 않으므로, 가장 간단한 방법은 필요한 인증 정보를 포함하여 메일을 제출하도록 구성된 로컬 메일 서버로 Discourse가 이메일을 전달하도록 하는 것입니다.

Google에서 이를 위해 지원하는 메커니즘은 다음과 같습니다:

제 경우를 말씀드리면, Discourse가 SMTP가 아닌 OAuth 2를 통해 메일 제공업체와 연결되기를 원합니다. 불행히도, 대형 메일 제공업체를 사용하지 않으면 메일이 스팸으로 분류될 가능성이 높다는 것을 발견했기 때문에, Discourse가 사용하는 no-reply 계정에 대해 OAuth 2 인증을 추가하고 Google Workspace에 연결하기로 결정했습니다. 또한 Mailgun도 시도해 보았지만, IMAP 지원도 필요했을 것입니다(이것은 no-reply가 아닌 다른 사용자 계정을 위한 것이었습니다).

시간이 있고 직접 만져볼 수 있으니, 처음에 조금만 도와주시면 감사하겠습니다 :slight_smile: (나중에 더 도움이 필요할 수도 있겠지만)

이를 올바르게 표현하는 방법은 다음과 같습니다:

Basic 인증 대신 oAuth2 인증을 사용하여 SMTP 서버에 인증하도록 Discourse를 설정하고 싶습니다.

이것은 사용자 회신/수신 메일을 위한 것인가요?

이 기능을 위한 mailgun 플러그인이 있다는 점은 이해하고 있지만, 저는 아직 사용해 본 적이 없습니다.

네, 제가 원하시는 거예요 :slight_smile: Google Workspace에 이미 가입했는데, 최대한 활용하고 싶어요.

Google Workspace는 트랜잭션 이메일을 위한 것이 아닙니다. 다른 도구를 사용해야 합니다.

포럼에서 메일을 수신하려면 자체 호스팅 사이트의 Mail-Receiver를 사용한 직접 전달 수신 메일 구성을 참조하세요.

일반적으로 noreply@forum.example.com에서 발송하도록 트랜잭션 메일 서비스를 구성하고, 메일 리시버는 수신된 메일을 받아 discourse에 전달합니다.

정말 감사합니다. 지금 바로 시도해 보고 있습니다.