メール配信サービスMailgunでメール送信するための手順をまとめてみた

こんにちは コバヤシです。
今回は、とある案件でMailgunを使うことがあったので、備忘録的に設定手順を書いていきたいと思います。

Mailgunとは

Mailgun はメール配信を行うクラウドサービスです。 無料で毎月10,000通まで利用できます。
(Google パートナー ページからの申込みだと、30,000通になるようです)
転送の設定も可能なので、メールの受信サーバーが無くてもメールを受けることが可能です。

https://www.mailgun.com/

ドメイン登録

最初にドメインの登録を行います。 サイドメニューからSending > Domainsに移動し、「Add New Domain」ボタンをクリックするとドメイン登録画面になります。

f:id:hide_san99:20191208205011p:plain

・Domain name

メール送信に使用するドメインを入力します。

・US/EU

USのままで良いと思います。

・Create DKIM Authority

チェックのままで良いと思います。

・1024/2048

DKIMのキーの長さです。
1024のままで良いと思います。

入力が終わったら、「Add Domain」ボタンをクリックします。

DNS設定

ドメインの登録が終わったら、DNSにSPFとDKIMの設定を行います。

Dashboardに設定したドメインが表示されているので、その横にある「Domain settings」をクリックします。DNS recordsタブをクリックすると、DNSに設定する情報が表示されます。

f:id:hide_san99:20191208212104p:plain

Sending recordsにある2つのTXTレコードを、DNSに登録します。
メールの転送を行う場合は、Receiving recordsにあるMXレコードも登録します。
メールのトラッキングを行いたい場合は、Tracking recordsにあるCNAMEレコードも登録します。

DNSが浸透したあたりで、「Check DNS Records Now」ボタンを押すと、すぐにDNSチェックのチェックを行ってくれます。 早ければ数時間ほどで利用できるようになるはずです。

Mailgunからの質問に答える(場合によって)

上記のDNSのチェックが通れば使えるようになるはずなのですが、以下のようにいつまでも✗のまま変わらない場合があります。

f:id:hide_san99:20191208213535p:plain

その時は、SupportからTicketを作成して、問い合わせをしましょう。

私が問い合わせをした時には、以下のような質問が返ってきました。

  1. What types of emails will you be sending - transactional or marketing? Please tell us briefly about how your business uses email.

  2. How do you obtain the email addresses for your recipients? Please provide any available links to your signup page(s).

  3. Are all of your email addresses double-opt in? (This means that the user has requested your emails through sign-up and then confirmed via email that they want to receive your communication).

  4. What is your expected monthly volume of messages?

  5. Have you read our Email Best Practices document?

  6. Please provide a link to your Privacy Policy, Terms of Service, and Sign-up link (if applicable).

  7. Please provide a sample email you would typically send to your users.

Google翻訳レベルの英語でも大丈夫だったので、一つ一つ丁寧に答えていけば問題ないかと思います。

特にプライバシーポリシーあたりを気にしているようで、これが無いと利用できない感じです。 私の場合は、2・3回のやり取りで無事使えるようになりました。

アプリケーションへの設定

Mailgunの設定が終わったら、今度はアプリケーションでMailgunを使用する設定を行います。
今回はLaravelで設定していきます。

Domain settingsからSMTP credentialsタブを開くと、設定情報の画面が開きます。

f:id:hide_san99:20191208221726p:plain

.envを開き以下のように書き換えます。

MAIL_DRIVER=mailgun
MAIL_USERNAME=postmaster@xxxxxxxxxxxxxxxxx.com
MAIL_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

MAILGUN_DOMAIN=xxxxxxxxxxxxxxxxx.com
MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
・MAIL_DRIVER

mailgunにします。

・MAIL_USERNAME

SMTP credentialsのloginを記述します。

・MAIL_PASSWORD

Reset Passwordボタンを押すとパスワードが表示されるので、そのパスワードを記述します。

・MAILGUN_DOMAIN

MAIL_USERNAMEの@以降を記述します。

・MAILGUN_SECRET

Settings > API Keysで表示される、Private API keyを記述します。

以上の設定だけで、LaravelではMailgunが使えるようになりました。
とても簡単ですね。

まとめ

サポートと連絡しなければならない場合は若干手間がかかりますが、そうでなければ比較的簡単に設定が可能でした。 今までSendGridしか使ってこなかったのですが、条件によりSendGridが利用できない時など積極的にMailgunを使っていきたいと思います。