토이프로젝트에서 Supabase를 이용하여 이메일을 이용한 회원가입 및 인증처리를 구현하다 아쉬운 점을 발견하였다.
그것은 바로 빌트인 되어있는 이메일 서비스는 제한이 있다는 것이다. 그 제한은 생각보다 상당히 강력했다.
시간 당 보낼 수 있는 이메일은 3개로 제한이 되어있다는 것이다. 회원가입을 테스트 하면서 3번의 이메일을 발생하면 다음 테스트까지 3시간을 기다려야한다는 것이다.
추가적으로 Production level에서는 사용할 수 없으며 해당 제한을 변경하고 싶다면 Customer SMTP Provider 연결은 불가피 해보였다.
제한한 횟수를 전부 소진한 이 후 메일을 발송하려 하면 아래와 같은 Error를 볼 수 있다.
supabase에서 SMTP Provider로 추천하는 선택지는 3가지가 있다.
필자가 SMTP Provider를 선택하는 기준은 아래와 같았다.
위 조건들을 대입해 본 결과 필자는 Resend를 선택하게 되었다.
Resend를 선택한 이유는 위 3가지를 전부 충족시켰다.
아래는 Resend의 가격 정책이다.
필자는 위 과정을 진행하기 전까지 가지고 있는 도메인이 없어 hosting.kr에서 도메인 구매를 진행하였다. (저렴한 도메인 중 하나를 골라 가져왔다.)
Resend에서 도메인을 등록하는 순서는 다음과 같다.
가지고 있는 도메인 혹은 구메한 도메인을 Resend의 도메인 Tab에 들어가 등록하면 된다.
현재 무료 Plan을 이용하고 있기 때문에 1개의 도메인만 등록이 가능하며 region 또한 ua-east-1로 고정되어 있다.
도메인을 등록하면 해당 도메인의 대시보드를 확인할 수 있다. 대시보드에는 MX, TXT 설정을 할 수 있는 정보가 적혀있다.
위에 보여지는 MX 및 TXT를 도메인을 구매한 곳에서 등록을 해주면 된다. Hosting.kr 같은 경우 아래 영역에서 입력이 가능하다.
설정이 전부 완료 되었다면 아까 대시보드에서 우측 상단에 있는 Verifiy DNS Records를 누르면 상태가 전부 Pending 상태로 변경 될 것이다.
이 후 시간이 지나면 유효성 검증이 완료 되고 상태가 Verified로 변경 된 것을 볼 수 있을 것이다.
Resend에 가입을 하고 setting 탭에 들어가보면 아래와 같이 Intergrations 라는 탭이 있다.
해당 탭을 누르면 아래와 같이 supabase와 연결할 수 있는 콘솔을 제공한다.
supabase와 연결하기를 누르면 Resend가 어떠한 권한들을 이용할 것인지와 supabase의 어떠한 organization과 연결할 것 인지 선택해주면 된다.
organization 선택이 완료되면 다음으로 넘어가게 되는데 적용할 프로젝트 및 도메인을 선택하게 된다.
마지막으로 SMTP 설정만 정의하면 된다. 여기서 메일 발송하는 발송자의 이름 및 이메일을 정의할 수 있다.
이 후 Configure SMTP integration을 누르면 완료 된다.
Resend에서 integration이 정상적으로 완료 되었다면 supabase에서는 자동으로 Custom SMTP Provider 사용 옵션이 활성화 되어 있고 Sender email 및 Sender name이 Resend에서 정의 한 대로 보여질 것이다.
추가적으로 시간 당 3건으로 제한되어 있던 메일 발송 건 수도 정의가 가능하다.
Resend에서는 무료 plan을 이용할 때 100건을 제공하니 100건으로 정의해보겠다.
메일 발송 건수는 Resend 대시보드에서 아래와 같이 쉽게 확인이 가능하다. 그래프로 제공되며 원하는 범위 지정 또한 가능하다.
로그는 로그 탭으로 들어가면 아래와 같이 리스트를 제공해준다.
메일을 발송할 때 마다 하나의 ROW가 생성되며 들어가면 해당 건에 대한 상세를 확인할 수 있다.
기존에는 위 사진과 같이 왔다면 설정이 끝나고 다시 시도해보면 아래와 같이 정의한 이름과 동이한 발신자에게 메일이 도착한 것을 볼 수 있다.