🍣

Cloudflare Email Routing を試す

2023/05/16に公開

Cloudflareはオリジンを保護する際、DNS Proxyモードを提供しており、ドメインに対する名前解決の結果としてオリジンではなくCloudflareのIPアドレスがAレコードとして戻ってきます。これによりクライアントからの通信はCloudflareのエッジを経由してオリジンへ転送されることとなり、Cloudflareネットワークの中でセキュリティや高速化、最適化等様々な機能が動作します。

このコンセプトをSMTPプロトコルに適応しているものがCloudflare Email Routingになります。

Cloudflare Email Routing

この機能は、Freeプランで利用可能ですが、Cloudflareがそのドメインを管理している必要があります。その場合マネージド型SMTPサーバが提供されます。POPに対応していないため、受信したメールは任意のメールアドレスに転送されます。その際、転送前にメールに対する様々な処理をWorkersで実装したり、フィルタリングしたりすることが可能です。

ところで話は脱線しますが、メールを送信するプロトコルはSMTPですが、クライアントがメールを受信するプロトコルはPOPです。なぜ2つに分かれているのでしょうか。送信されたメールはだれかが受信することを前提としているので、プロトコルが2つに分かれているのは不思議な話です。

SMTPはRFC821として1982年に定義され、一方、POPはRFC918として1984年に定義されています。ということは最初の2年間はメールを受信するプロトコルが存在しなかったため、送られたメールはどこへ行ったのでしょうか。当初のSMTPではメールの一時送信を想定しておらず、クライアントはメールサーバへの常時接続でメールを受信していました。しかしながらこれでは相手にメールが届かない等が発生し不便なため、メールを一時的に保存し受信するPOPが生まれました。余談でした。

やってみる

それでは早速設定していきます。
Cloudflareマネージメントコンソールで管理しているドメインをクリックした後、EmailEmail Routingをクリックします。

Routesタブで`Create addressを押します。

受信したいメールアドレス、転送したいメールアドレスをそれぞれ設定しSaveを押します。

この図だとtest@harunobukameda.labrat.onlineあてに送信されたメールがharunobu@cloudflare.comへ転送されます。
StatusPending verificationとなっています。

転送先に指定したharunobu@cloudflare.comを見るとメールが届いています。

Verify email addressを押すと承認が完了します。以下の通りStatusがVerifiedになっています。

まだこの状態ではtest@harunobukameda.labrat.onlineからharunobu@cloudflare.comへの転送は可能となったもののtest@harunobukameda.labrat.onlineでメールの受信は行えません。DNSにMXレコードが追加されていないからです。SettingsのタブでEnable Email Routingを押します。

Add records and enableボタンを押します。

ステータスが緑に代わりました。

DNSレコードを見ると、MXおよびTXTレコードが追加されていることがわかります。

この状態でtest@harunobukameda.labrat.onlineにメールを送るとharunobu@cloudflare.com
へ転送されます。
受信したメールのヘッダーを見てみましょう。

オリジナルの送信者情報は保持されており、宛先情報もtest@harunobukameda.labrat.onlineとして保持されています。
S/MIME環境などでは問題が生じる可能性がありますので注意してください(メーラーの実装に依存します)
ダッシュボードでは以下の情報が取得可能です。


メール本文の情報が残っていないことに留意してください。

Catch-all address

Catch-all addressモードというオプションがあります。ドメインはあっているものの本来存在しないメールアドレスへメールが送信された場合の挙動をセットできます。
例えば、testをtetsとタイプミスしたメールが届いた場合、そのままharunobu@cloudflare.comへ転送するのか、Dropさせるのか、別の指定したアドレスへ送信するのか、Workersで処理するのか、4つから選択できます。

WorkersのEmailモードについては別の機会にご紹介したいと思います。

Discussion