Cloudflare Pages Functionsでメールが送信できない場合の対処法
Cloudflare Pagesでは、MailChannelsを通してメール送信できる仕組みがあり、この仕組みを利用してお問い合わせフォームを作ることができます。
しかし、2024年に入ってから、メール送信するための条件が加わり、やや複雑化しています。具体的には以下の設定が必要です。
- SPF(送信者ポリシーフレームワーク):
- 送信者ドメインのDNSレコードに公開されている認可された送信ホストと照合して、偽のメール送信を防ぐ
- Domain Lockdown:
- 特定の送信者やアカウントがドメインからメールを送信することを許可するためにDNS TXTレコードを使用するセキュリティ対策。許可されていない送信元からのメールは拒否される。
これまでは、オプションとしてDKIMの設定が推奨されるだけでしたが、現在は、上記の設定をしないとメール送信ができません。(最近お問い合わせが少ないなぁと思っていましたが、これが原因でした。。)
これらの設定自体は特に難しくもなく、MailChannelsが公開しているヘルプページを見れば大丈夫…かと思いきや、このページを参考にDNS設定しても動作しません。
原因はDomain Lockdownで追加するTXTレコードです。
ヘルプページではcfid
にxxx.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/