株式会社Infigate

Blog

SupabaseAuthで使われるSMTPサーバーをbuilt-inからsend gridに変更する方法


投稿日2024/6/25 更新日2024/6/25 システム

はじめに

supabaseを使ってサーバーレスのシステムを構築する場合、supabaseが提供する様々な機能を、開発段階中ならほぼほぼ無料で使うことができます。

Supabaseは、オープンソースのFirebaseの代替として設計されたバックエンド・アズ・ア・サービス(BaaS)プラットフォームです。Supabaseは、リアルタイムのデータベース、認証、ストレージ、サーバーレス機能を提供し、開発者が迅速に完全なアプリケーションを構築するのを支援します。

ただしフリープランでの利用範囲には制限があり、特にAuthを使ってEmail認証を実装する場合には開発段階中でも厳しい制限があります。

Supabaseのbuilt-inで利用できるSMTPサーバーは、1時間以内に3通まで、1日30通までという制約があります。

上記の条件であれば、開発段階中でも頻繁にロックがかかってしまったり、運用を始める際にもどのみち対応する必要があります。

そこで、Sendgridを利用して独自のSMTPサーバーを設定することで快適な開発環境、運用準備を始めようというのが本記事の趣旨となります。

Supabase側の設定

Supabaseのプロジェクトの作成やプログラムとの接続はすでにできている前提とします。

SupabaseのダッシュボードのAuthentication>SMTP Settingsを開きます

Enable Cutom SMTPというスイッチがありますので、こちらをオンにします(defaultはオフ)

続いて以下の項目を設定するフォームがでてくるので、内容を設定します。

★Sender email
Sender name
★Host
★Port number
Minimum interval between emails being sent
★Username
★Password

星印がついている部分は全てSend Gridの情報を設定する必要がありますので、この画面は開いた状態で一旦次に進みます。

Send Gridのアカウント作成の設定

Send Gridのアカウントを作成します
https://sendgrid.kke.co.jp/

Send Gridは基本的に企業での利用を推奨しています。

TwillioのアカウントからSend Gridの機能を使う方法もあるようですが、私の場合はなぜか利用ができませんでしたので、上記から申込みを行いました。

Send Gridのほうからアカウント解説のメールが届いたらダッシュボードへのログインが可能になります。

Send GridのAPIキーの取得

アカウント開設時のメールに記載されているアカウントIDと、申込時に設定したパスワードを入力してダッシュボードにアクセスします。

左のメニューバー>API Keys>Create API Keyをクリックします。

API Key Nameはなんでもいいですが、結合するプロジェクトのものと明確にわかる命名が良いです。

続いてPermissionsはRestricted Accessとしておきます。

Access Detailsの項目から、Mail Sendの項目を有効化します。

Create & Viewをクリックすると、API Keyが作成されます。

このKeyはセキュリティ上の理由から再び表示することができないため、確実にコピーをしておきます。

APIキーが作成されたら、次は左のメニューバーのEmail API > Integration Guide > SMTP Relayをクリックします。

このように、設定すべきホスト名やポート番号が表示されますので、これをSupabase側に設定します。

さいごに

ここまで終了したら、プロジェクトに戻り、ログインやサインアップなどの操作をしてみましょう。

これまでbuilt-inから送信されていた認証用のメールが、SendGridで設定したSMTPサーバーから届くようになっているのが確認できると思います。

また、SMTPサーバーをSendGridに変更したにも関わらず1時間3通までの制限が解除されない、という場合はSupabase側での設定を見直す必要があります。

少しだけわかりにくいページにあるため見落としがちなポイントになります。

Anthentication > Rate Limitという項目にRate limit for sending emailsという項目がありますので、こちらの数値を変更することで一時間あたりの送信可能回数の設定が可能です。

私はSendGridのリミットと合わせて100に設定しました。

この記事を書いた人

Infigate

北海道札幌市のシステム開発会社、株式会社Infigateです。 活動内容やシステム開発技術に関するTips、DX化に関連する記事やその他地域活性化に繋がる情報等を発信していきます。

お問い合わせ

Contact

お見積ご相談は無料です。
どうぞお気軽にご相談くださいませ。