Cloudflare Pages Functionsでメールが送信できない場合の対処法

公開日:2024/4/17更新日:2024/4/17

Cloudflare Pagesでは、MailChannelsを通してメール送信できる仕組みがあり、この仕組みを利用してお問い合わせフォームを作ることができます。

しかし、2024年に入ってから、メール送信するための条件が加わり、やや複雑化しています。具体的には以下の設定が必要です。

  • SPF(送信者ポリシーフレームワーク)
    • 送信者ドメインのDNSレコードに公開されている認可された送信ホストと照合して、偽のメール送信を防ぐ
  • Domain Lockdown
    • 特定の送信者やアカウントがドメインからメールを送信することを許可するためにDNS TXTレコードを使用するセキュリティ対策。許可されていない送信元からのメールは拒否される。

これまでは、オプションとしてDKIMの設定が推奨されるだけでしたが、現在は、上記の設定をしないとメール送信ができません。(最近お問い合わせが少ないなぁと思っていましたが、これが原因でした。。)

これらの設定自体は特に難しくもなく、MailChannelsが公開しているヘルプページを見れば大丈夫…かと思いきや、このページを参考にDNS設定しても動作しません。

原因はDomain Lockdownで追加するTXTレコードです。

ヘルプページではcfidxxx.workers.dev(Workers & PagesページのOverviewに記載されているサブドメイン)を指定するように書いているのですが、Cloudflare Pagesで利用する場合はxxx.pages.devの情報を使わなければいけません。(これはアプリを構築する際に割り当てられるサブドメインです)

例えば、GitHubのhogeブランチと紐づけている場合は、hoge.pages.devになります。

そのため、TXTレコードのNameには_mailchannelsを、Contentにはv=mc1 cfid=yoursubdomain.pages.devを、それぞれ指定する必要があります。

※参考リンク:https://www.codeflood.net/blog/2024/02/15/sending-email-cloudflare-pages-functions/