Cloudflareにおけるメール・ソリューションとしてのMailgun

Value Domainで取得したドメインをCloudflareの提供するネームサーバーでGitHub Pagesに向けてやるのは、低コストでウェブサイトをホスティングする優れた手段だ。問題はメールだ。Cloudflareではメール関係の機能はまったく用意されていない。またValue Domainで無料で取得できるXREAのアカウントはメールだけの利用は禁止されている。本道としては別にメール・サーバーを用意するわけだが、転送だけで良いのなら無料枠内で利用することができるMailgunを使うのが良さそうだ。

Mailgunではアカウントを取得後、まずドメインを追加する。すると計5つのDNSレコードが提供される。

これらDNSレコードをCloudflareのコントロール・パネルから設定する。転送のみの場合はトラッキングのためのCNAMEレコードは必要ないが、素直に設定しておくべきだろう。ただしOff Cloudflareにし、トラフィックをバイパスさせておくのは忘れないようにしたい。

Mailgunで提供される5つのDNSレコードをCloudflareのコントロールパネルから設定した様子。
DNS Settings on Cloudflare

次にMailgun側でドメインの照合を行うわけだが、その前にMailgunで設定しようとしているドメインのDomain SettingsでInbound Spam FilterをBlock Detected Spamに変更しておくと良い。こうしないとスパムメールをちょくちょく受信するようなメールアドレスをMailgunで処理しようとする場合、即座にDisabledにされてしまう。もしDisabledにされた場合は、まだメールの送信はしていないことなどを添えてサポートから連絡すれば簡単に復活させてはくれる。

続いて改めてドメインの照合を行う。Domain Settingsと同じページにあるCheck DNS Record Nowというボタンを押して照合させる(待っていても自動で照合してはくれない)。うまくいくと各DNSレコードのアイコンが緑の四角に白でチェックマークが描かれたものに変わる。

Mailgunでドメインの認証用TXTレコードの照合に成功した様子。
Domain Verification on Mailgun

次に受信メールの転送を設定する。これはMailgunのRoutesという機能を使って行う。

Mailgunで独自ドメインのアドレスからGmailへのメール転送を設定している様子。
Mail Forwarding Setting on Mailgun

Filter Expressionでmatch_recipient()を使って利用したいメールアドレスを指定し、Actionsでforward()を使って自分のGmailのメールアドレスを指定する。Priorityは他に何もしないのなら0のままで良い。Descriptionはわかりやすい名前を付けておくべきだろう。Filter Expressionでcatch_all()を使うといわゆるキャッチオール的な転送も可能だ。

ネームサーバーの切り替えが終了済みなら直ぐに転送が可能になっている。適当なメール・クライアントから実験してみると良い。うまくいっているとメールが転送された上、MailgunではLogsで転送の様子が確認できる。

Mailgunで正常にメールが転送されていることを確認している様子。
Viewing Logs on Mailgun

Mailgunはクレジットカード情報を登録しない場合、常にFreeアカウントでの運営になる。その場合、いくつかの制限があるが、送信せず転送のみならば問題ない制限だろう。


今のところは動いているようだが、何回かDisabledになったので継続運営にはまだかなり不安がある。サポートといろいろ話したところ、既存のメールアドレスをそのまま運用するのはなかなか難しいという話なので、僕は別の手段を探した方が良さそうだ。

日頃からスパムが来ないように注意を払っている人達には十分に機能する手段ではあるだろう。