supabase에 Customer SMTP Provider 적용하기 (with Resend)

이우길·2024년 3월 26일
0

flutter

목록 보기
5/8
post-thumbnail

Goal

  • supabase에 개발 모드에서 발송 제한걸려 있는 부분 해결하기
  • supabase에 Custom SMTP Provider를 적용하여 authorization 관련 email을 처리할 수 있는 구조 만들기

개요

토이프로젝트에서 Supabase를 이용하여 이메일을 이용한 회원가입 및 인증처리를 구현하다 아쉬운 점을 발견하였다.

그것은 바로 빌트인 되어있는 이메일 서비스는 제한이 있다는 것이다. 그 제한은 생각보다 상당히 강력했다.

시간 당 보낼 수 있는 이메일은 3개로 제한이 되어있다는 것이다. 회원가입을 테스트 하면서 3번의 이메일을 발생하면 다음 테스트까지 3시간을 기다려야한다는 것이다.

추가적으로 Production level에서는 사용할 수 없으며 해당 제한을 변경하고 싶다면 Customer SMTP Provider 연결은 불가피 해보였다.

제한한 횟수를 전부 소진한 이 후 메일을 발송하려 하면 아래와 같은 Error를 볼 수 있다.


Customer SMTP Provider 선택

supabase에서 SMTP Provider로 추천하는 선택지는 3가지가 있다.

필자가 SMTP Provider를 선택하는 기준은 아래와 같았다.

  1. supabase와 연동이 쉽게 이뤄졌으면 좋겠다.
  2. 무료 plan이 존재하며 개발을 진행 할 때 충분히 이용할 수 있었으면 좋겠다.
  3. 발송 한 메일에 대한 이력 및 Log를 보기 간편했으면 좋겠다.

위 조건들을 대입해 본 결과 필자는 Resend를 선택하게 되었다.

Resend를 선택한 이유는 위 3가지를 전부 충족시켰다.

  1. supabase와 연동을 이미 콘솔에서 제공하고 있다.
  2. 무로 plan을 사용할 때 월에 3,000건, 시간당 100건 까지 제공하여 충분했다.
  3. Dashboard를 제공하여 메일의 발송 및 상태를 확인할 수 있었다.

아래는 Resend의 가격 정책이다.


Resend에 도메인 등록하기

필자는 위 과정을 진행하기 전까지 가지고 있는 도메인이 없어 hosting.kr에서 도메인 구매를 진행하였다. (저렴한 도메인 중 하나를 골라 가져왔다.)

Resend에서 도메인을 등록하는 순서는 다음과 같다.

  1. 도메인 등록
  2. DNS 설정하기
  3. 등록 한 도메인 검증

1. 도메인 등록

가지고 있는 도메인 혹은 구메한 도메인을 Resend의 도메인 Tab에 들어가 등록하면 된다.

현재 무료 Plan을 이용하고 있기 때문에 1개의 도메인만 등록이 가능하며 region 또한 ua-east-1로 고정되어 있다.


2. DNS 설정하기

도메인을 등록하면 해당 도메인의 대시보드를 확인할 수 있다. 대시보드에는 MX, TXT 설정을 할 수 있는 정보가 적혀있다.

위에 보여지는 MX 및 TXT를 도메인을 구매한 곳에서 등록을 해주면 된다. Hosting.kr 같은 경우 아래 영역에서 입력이 가능하다.


3. 등록 한 도메인 검증

설정이 전부 완료 되었다면 아까 대시보드에서 우측 상단에 있는 Verifiy DNS Records를 누르면 상태가 전부 Pending 상태로 변경 될 것이다.

이 후 시간이 지나면 유효성 검증이 완료 되고 상태가 Verified로 변경 된 것을 볼 수 있을 것이다.


Resend와 supabase 연결하기

Resend에 가입을 하고 setting 탭에 들어가보면 아래와 같이 Intergrations 라는 탭이 있다.

해당 탭을 누르면 아래와 같이 supabase와 연결할 수 있는 콘솔을 제공한다.

supabase와 연결하기를 누르면 Resend가 어떠한 권한들을 이용할 것인지와 supabase의 어떠한 organization과 연결할 것 인지 선택해주면 된다.

organization 선택이 완료되면 다음으로 넘어가게 되는데 적용할 프로젝트 및 도메인을 선택하게 된다.

마지막으로 SMTP 설정만 정의하면 된다. 여기서 메일 발송하는 발송자의 이름 및 이메일을 정의할 수 있다.

이 후 Configure SMTP integration을 누르면 완료 된다.


supabase SMTP 설정 확인하기

Resend에서 integration이 정상적으로 완료 되었다면 supabase에서는 자동으로 Custom SMTP Provider 사용 옵션이 활성화 되어 있고 Sender email 및 Sender name이 Resend에서 정의 한 대로 보여질 것이다.

추가적으로 시간 당 3건으로 제한되어 있던 메일 발송 건 수도 정의가 가능하다.

Resend에서는 무료 plan을 이용할 때 100건을 제공하니 100건으로 정의해보겠다.


메일 발송 확인 및 Log 보기

메일 발송 건수는 Resend 대시보드에서 아래와 같이 쉽게 확인이 가능하다. 그래프로 제공되며 원하는 범위 지정 또한 가능하다.

로그는 로그 탭으로 들어가면 아래와 같이 리스트를 제공해준다.

메일을 발송할 때 마다 하나의 ROW가 생성되며 들어가면 해당 건에 대한 상세를 확인할 수 있다.


결과

기존에는 위 사진과 같이 왔다면 설정이 끝나고 다시 시도해보면 아래와 같이 정의한 이름과 동이한 발신자에게 메일이 도착한 것을 볼 수 있다.


요약

  1. 도메인 구매 (있을 경우 생략)
  2. DNS 설정하기
  3. Resend에서 supabase integration 설정 (프로젝트, 도메인, 발신자 정보 정의)
  4. supabase limit 변경

REFERENCES

profile
leewoooo

0개의 댓글