今回はSendGridと並んで有名なメール系サービスのMailgunに関して書いていきます!

Domainの登録

まず最初にメールで利用するドメインを登録します。
[Domains]メニューの[Add New Domain]をクリックします。

mailgun-domainlist

利用するメールドメインを登録します。

mailgun-addyourdomain

登録後は利用するサービスに応じてDNSレコードを登録する必要があります。メールを送信する場合はTXTレコード(SPF、DKIM)、メールを受信する場合はMXレコード、開封やクリック等のトラッキングをする場合はCNAMEレコードをそれぞれ登録します。

Routesの設定

Routesとは受信したメールをどのような捌くかを定義する設定になります。メール受信に関する機能なのでMXレコードの登録は必須です。

まず、[Routes]メニューから[Create New Route]ボタンをクリックします。

mailgun-routes

Priorityは複数のRoutes定義があった場合の処理の優先順位です。Filter Expressionは受信したメールの条件になり、ここでマッチしたものに対して、Actionsで定義した処理が実行されることになります。
以下の例では、admin@mailtest.freedom-man.comへのメールをxxx@hotmail.co.jpに転送する設定になります。

mailgun-routes-setting-forward

Actionsは複数定義でき、メールの転送(forward)以外に、Mailgunのストアに最大3日間保持しつつ、受信結果をWebhookで任意のURLに通知する”store”の機能も利用できます。こちらはSendGridのInbound Parse Webhookと似てる感じです。

設定後は[Test Your Routes]のところで設定したRoutesのテストをすることが可能です。任意のメールアドレスを入力して[Test]をクリックすると、Filter条件に合致するRoutesが抽出されます。

mailgun-routes-test

また、[Send A Sample POST]のところで、storeで利用するWebhookのURLに対するテスト送信をすることも可能です。

mailgun-routes-test-webhook

Logsの表示

[Logs]タブで受信メールのRoutesに関するログを閲覧することが可能です。

mailgun-logs

メーリングリストの設定

[Mailing Lists]メニューからメーリングリストを設定することができます。

mailgun-mailinglists

Access Levelの意味はそれぞれ以下のようになっています。

  • Read-only→管理者の送信(HTTP API or SMTP APIを利用した送信)でのみ利用可能
  • Members→メーリングリストのメンバーであれば利用可能(Fromアドレスを見ているっぽい)
  • Everyone→メーリングリストのメンバー以外でも利用可能

mailgun-new-mailinglist1

次にメーリングリストのメンバーの設定(Recipients)を行います。
まずは、[Create Recipient]をクリックします。

mailgun-mailinglists-recipients1

Recipient Addressesに受信アドレスをカンマ区切りで入力して、[Update]をクリックします。Unsubscribedにチェックを付けると、メールを受信させないUnsubscribedの状態で受信アドレスを追加できます。ファイル取り込みによる一括登録も可能です。

mailgun-mailinglist-addrecipients

設定が完了すると、こんな感じに登録されます。

mailgun-mailinglists-recipients2

あとは、対象のメールアドレスにメールを投げると、送信者以外の受信アドレスにメールが一斉送信されます。

Webhookの設定

[Webhooks]メニューで各イベント発生時にイベント情報を任意のURLに送信するWebhookの設定が出来ます(SendGridと同様の機能です)

mailgun-webhooks

トラッキングが有効な場合、Mailgun経由でメールを送信したときに、メール本文に含まれているURLがemail.{domain}のURLに書き換わり、email.{domain}の開封検知用のURLの画像(ビーコン)がセットされます。ユーザがメールを開封したり、メール本文のURLをクリックするとemail.{domain}のURLにリクエストが飛ぶので、OpenやClickのWebhookの設定をしている場合、受け取ったリクエストを設定したURLに流す、という仕組みです。OpenやClickを利用する際はCNAMEレコードの設定をしていることを確認してください。

メール送信

HTTPとSMTPの2つのAPIがあります。

各APIで利用する情報は[Domains]メニューの対象ドメインの[Domain Information]から確認することができます。

mailgun-domain-information

SMTP APIではSMTP Hostname、Default SMTP Login、Default Passwordを、HTTP APIではAPI Base URLとAPI Keyをそれぞれ利用します。

詳細はリファレンス参照。

所感

SendGridと比較して、Routesの機能が使いやすいです。インバウンドのメールをwebhookで流すだけでなく、単純にメール転送できますし、storeでは一定期間メッセージを保持してくれるのも良い感じです。個人的にはSalesforceの組織のメールアドレスを送信専用アドレスとして設定する場合、Routeで転送設定をして転送先のメールアカウントでメールアドレスのベリファイをする、といった利用用途に使っていたりします。