• #cloudflare
  • #email-routing
  • #brevo
  • #smtp
  • #インフラ
  • #ドメイン
  • #日記
開発misc-devメモ

独自ドメインメール環境をCloudflare + Brevoで無料構築した話

フッターの著作権表示を作り始めたら、利用規約とプライバシーポリシーのページが必要になり、連絡先メールアドレスを書く段になって「独自ドメインのメールがない」と手が止まった。そこからCloudflare Email RoutingとBrevoのセットアップに流れ込み、気づけばドメイン戦略の棚卸しまで一気に片付けていた。

フッターと法的ページの整備

フッター作成

サイトのフッターに利用規約・プライバシーポリシーへのリンクと、著作権表示を追加した。年表示はnew Date().getFullYear()で動的に取得する形式。

privacy.vue / terms.vue の作成

プライバシーポリシーと利用規約を独立したVueページとして作成した。Chrome DevToolsで表示を確認しながら、レイアウトの崩れやリンク切れがないことをチェック。


Cloudflare Email Routing(受信)

[email protected] 宛のメールを [email protected] へ転送する設定を入れた。

設定手順

  1. Cloudflareダッシュボードでinfo-accounting.comのEmail Routingを有効化
  2. 転送先として個人Gmailアドレスを登録し、確認メールを承認
  3. Catch-allルールまたは個別アドレスルールでinfo@宛を転送

ポイント

  • 受信は無制限・無料。何通届いても課金されない
  • MXレコードはCloudflareが自動設定してくれる
  • DNSをCloudflareで管理していれば数クリックで完了

Brevo(旧Sendinblue)でSMTP送信環境

受信はCloudflareで解決したが、[email protected] からメールを送る手段がなかった。ここでBrevoを導入。

セットアップ

  1. Brevoアカウント作成、送信ドメインにinfo-accounting.comを登録
  2. SPF・DKIMレコードをCloudflare DNSに追加(Brevoが指定する値をそのまま貼る)
  3. Brevoの管理画面でSMTPキーを発行

GmailからBrevo経由で送信

Gmailの設定 > 「他のメールアドレスを追加」で、BrevoのSMTPサーバー情報を入力。これで、Gmailの送信元プルダウンから[email protected]を選べるようになった。受信も送信もGmail一画面で完結する。

無料枠

  • 1日300通まで送信可能
  • 個人〜小規模の用途なら十分すぎる量

Google Workspace不要という結論

当初はGoogle Workspaceの契約を検討していたが、以下の構成で同等の機能を無料で実現できた。

機能手段費用
受信Cloudflare Email Routing → Gmail転送無料
送信Gmail → Brevo SMTP → info@として送信無料(300通/日)
管理画面Gmail既存

Google Workspace(月額680円〜/ユーザー)を契約する必要がなくなった。

Cloudflareアカウントのメールは個人Gmailのまま

独自ドメインメールでCloudflareにログインすると、DNS設定→メール転送→Cloudflareログインの循環依存が生まれる。Cloudflareが落ちたときにメールもログインも両方失う。アカウントのメールは個人Gmailのまま据え置きにした。


ドメイン戦略の整理

複数ドメインの用途がぼんやりしていたので、この機会に整理した。

ドメイン用途インフラ
info-accounting.comメインのサービスサイトCloudflare Pages(Nuxt 4)
app.eurekapu.com現行Herokuアプリの移行先Cloudflare Workers
www.eurekapu.comWordPress(現状維持)現行ホスティング
eurekapu.comルートはWordPressへ現行のまま

Heroku → Cloudflare Workers 完全移行

app.eurekapu.com で動いているHerokuアプリは、Cloudflare Workersへ完全に移行する方針を決めた。Herokuの有料Dynoを止められるのでランニングコストが下がる。

連絡先メールの統一

各サイトの問い合わせ先を [email protected] に統一。窓口が一つになることで、どのサービスからの問い合わせかをメール本文やsubjectで判別する運用にした。


今日の学び

  • Cloudflare Email Routingは受信側をDNS設定だけで片付けてくれる。MXレコードを手動で書く必要がなく、有効化ボタンを押した瞬間にメールが届き始めた
  • 送信側はBrevoのSMTPキーをGmailに登録するだけ。SPF・DKIMのDNSレコードを2本追加して、送信テストが通るまで15分で終わった
  • 「Google Workspaceを契約しなきゃ」と思い込んでいたが、受信と送信を別サービスで組み合わせるだけで同じことができた。月額コストがゼロになるのは地味に大きい
  • ドメインの用途を表にして並べたら、eurekapuのHeroku依存が浮き彫りになった。移行の優先度を上げる判断材料になった

次のステップ

  • Heroku → Cloudflare Workersの移行計画を具体化する
  • Brevoの送信ログを確認し、SPF/DKIMが正しくパスしているか検証する
  • 各サイトのフッター・問い合わせページの連絡先を[email protected]に更新する