Cloudflare Email Routing を試す
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マネージメントコンソールで管理しているドメインをクリックした後、Email
→Email Routing
をクリックします。
Routes
タブで`Create addressを押します。
受信したいメールアドレス、転送したいメールアドレスをそれぞれ設定しSave
を押します。
この図だとtest@harunobukameda.labrat.online
あてに送信されたメールがharunobu@cloudflare.com
へ転送されます。
Status
がPending 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