SendGrid Advent Calendar 2016の18日めの記事です。
Herokuではカスタムドメイン機能を使用することで、アプリケーションを独自ドメインで運用することができます。SendGridのアドオンを使用することで、簡単にSendGridにサインアップし、無料利用の範囲内で、アプリケーションから送信元を独自ドメインにしたメール配信もできるわけですが、この組み合わせでの一連の作業がまとまっている記事を見かけることがない(ような気がする)ので、しゅるっとまとめてみました。
目標
独自ドメインAppから、SendGridを使って、送信元が独自ドメインのメールを送信できるようにする
前提
- この記事では、利用する独自ドメインを
example.com
として話を進めます。 - 無料の範囲(Starterプラン)では、月12,000通までの配信数制限があります。
用意するもの
- Herokuアカウントと、動かそうとしているアプリケーション
- 利用するドメインと、これを管理するネームサーバ
1. Herokuにカスタムドメインを設定する
-
heroku domains:add www.example.com
などとして、アプリケーションのカスタムドメインとして www.example.com を追加します。 -
heroku domains
として、設定済みのカスタムドメインに対応するDNS Targetを確認します。 - ネームサーバの設定を変更し、設定したカスタムドメインのホスト名に対するCNAMEレコードを、確認したDNS Targetに向けるように設定します。
より詳しくは、Herokuが公開している記事を参照してください。
2. SendGrid Addonを利用開始する
-
heroku addons:create sendgrid:starter
として、SendGridアドオンを設定します。 -
heroku config
とし、環境変数に設定されたSendGridの認証情報(SENDGRID_USERNAME
,SENDGRID_PASSWORD
)を確認します。 - 作成したアプリケーションから、上記で確認した認証情報を使用して(またはアプリケーション内から上記の環境変数へアクセスして)、メールを送信できることを確認します。
より詳しくは、Herokuが公開している記事を参照してください。
ここまでやれば、ひとまずメールは送れるようになります。
しかしながら、このまま独自ドメインからのメールを送りますと、受信側メールサーバから見たときに、送信元サーバの正当性が確認できません。Gmailでは、受信メールに以下の図のように "sendgrid.me経由" な文字列が表示されます。
これは、メールのFromは@example.com
なのに、送信元はsendgrid.meのサーバから送られているぞ、という判定がされてしまっているためです。そこで、最後のステップとして、Domain Whitelabelにより、@example.com
なメールがSendGrid経由で送られることを設定することにします。
※ 2016/12/20 16:48更新: 記事初出時は、DMARC判定について言及しておりましたが、Whitelabel設定とDMARC判定とは関係がないため、当該記述については削除しました。
3. Domain Whitelabelを設定する
-
heroku addons:open sendgrid
として、Herokuアプリケーションに設定したSendGridアドオンのダッシュボードを開きます。 - 左側のメニューから Settings > Whitelabels > Domains に進み、 "Add New Domain(Add Whitelabel)" のフォームを開きます。
- メールの送信元となる独自ドメインの情報を入力します。ここで、メールの送信元として @example.com を使用する場合、Domain に example.com と指定します。Subdomain は他のレコードと重複しなければ何を指定してもOKです。
- 設定後に表示されるCNAMEレコードのリストを、自身のネームサーバに設定します。
設定完了後に "Validate Record" ボタンを押して、設定状況を検証します。検証が完了すれば、独自ドメインからのメールの送信元を正しく検証できるようになります。(新しいレコードをすぐに確認できない場合は、手元から設定したレコードのCNAMEが引けるか確認してみたり、少し時間を置いてからリトライしてみましょう。)
より詳しくは、SendGridの日本代理店である構造計画研究所さんがまとめている記事を参照してください。
おわりに
- 既存の記事をまとめただけです。すみません。
- Whitelabel は、この他にEmail Link WhitelabelとIP Whitelabelがあり、よりメールの信頼性を高めるのに効果的です。IP Whitelabelは無料の範囲では使用できませんが、どのようなものかは把握しておいたほうが良いでしょう。
- メールの通数が増えてくる場合や、重要な用途でメールを用いることになる場合は、構造計画研究所さんにコンタクトして、日本でのサポートをいただけるようアカウントを作り直した方が良いと思います。