SMARTCAMP Engineer Blog

スマートキャンプ株式会社(SMARTCAMP Co., Ltd.)のエンジニアブログです。業務で取り入れた新しい技術や試行錯誤を知見として共有していきます。

SendGridでメールを配信するまでに知っておきたいことをまとめてみた

こんにちは、スマートキャンプでBiscuetを開発している井上です。
今回はSendGridでメール配信をするときにやったこと、知っておきたいことなどをまとめてみました!

SendGridとは?

sendgrid.kke.co.jp

SendGridは全世界で利用されているメール配信サービスです。
月間600億通以上の配信実績があり、メール配信するにあたって必要な機能を提供してくれます。

SendGridでメールを配信する理由

様々なメールサービスがある中で、SendGridを選ぶ理由は以下の通りです。

メールに必要な機能が充実している

メールに関する基本的な機能が一通りそろっており、機能がなく困ることはほとんどありません。

主な機能

  • オプトアウト機能
  • カスタムドメインの設定
  • メールの開封チェック機能
  • 迷惑メール・バウンスの管理
送信実績

メール配信システムを選ぶ際、どのくらいの送信実績があるかは、メールを送信した際の到達率や、送信したメールが迷惑メールに入ってしまうか否か、などに影響するため大事なポイントです。

日本語ドキュメントの充実感

メールのような低レイヤーな技術を扱うサービスにおいて、トラブル時の対応や設定周りのドキュメントがまとまっていることはとても助かります。

実際に自分もわからないことだらけだったのでこの辺りはかなり助けられました !

料金プランについて検討する

価格 | SendGrid

SendGridのページにプラン料金の表がありますが、その表を見た際に送信上限以外にそこまで違いが無いように見えます。
大きな違いはメールを送信するにあたって共有IPと固定IPのどちらを使用するかで、これにより初期の工数が大きく変わります。

共有IPと固定IPの違い

Freeプランは共有IPで、Proでは固定IPが割り振られるという違いがあります。
どちらも送信時に送信元で使用されるIPです。

このIPの信頼性の高さによってメールが受信者に到達するかが左右されます!

共有IPの場合

メールを配信する際、共有IPでは他のユーザと共通でIPアドレスを使用することになります。
そのため、他のユーザーのメール配信の影響を受ける可能性があります。

固定IPの場合

メールを配信する際、使用する自分たちの専用IPアドレスになり、他のユーザーの影響を受けることはありません。

共有IPと固定IPでの作業の違い

大きく違う点としてはIPを育てる必要があるか否かという点です。
作業としては一つですが、これにより工数が大きく変わってきます。

IPを育てる

なぜ, IPを育てる必要があるのか?

送信元IPの信頼性によってメールが受信拒否になるなど不利益を被る可能性があり、それを防ぐためです。

そのためにはメールの レピュテーション を上げる必要があります。
固定IPの場合はレピュテーションがゼロからスタートするので、育てる必要があります。

レピュテーションとは?

ISPなどが評価する指標のことです。
これは、メール送信側が信頼あるメールシステムなのか?というのをISPなどの第三者が判定しているもので、具体例でいうとGoogleやMicrosoftなどが評価者になります。

この指標が低いと受信拒否やスパム判定をされることがあり、
送信実績や迷惑メール対策をちゃんとしているかなどで評価が決まってきます。

ただ、ISPごとに評価基準が異なるようなので、完璧に対策するというよりはマイナス要素を減らしていくのを頑張る、というイメージです。

詳しくはこちらの記事が参考になります。
qiita.com

IPウォームアップ とは?

大量のメールを送信するには、送信実績を積み、レピュテーションを上げる必要があります。
そのため、段階的にメールの送信量を増やしていき、送信実績を作りあげることでレピュテーションを上げるのがIPウォームアップです。

IPウォームアップのやり方
  • 実在のメールアドレスに送信する

    実在のメールアドレスに送らないとIPウォームアップにならないためです。

  • コンテンツはちゃんとしたものにする

    コンテンツの内容も、迷惑メールになるかどうかの指標の1つになります。

  • 送信数は徐々に増やす

    送信数はIPの信頼性をあげないとメールがユーザーに到達しない可能性があります。
    実際に送信数をどのくらいのペースで増やせばいいのかは、SendGridの出しているスケジュール例が参考になりました。

    https://sendgrid.com/docs/assets/IPWarmupSchedule.pdf

レピュテーションを維持するための宛先のクリーニング

レピュテーションはスパムや受信拒否などが発生するとで下がります。
そして、SendGrid内でもレピュテーションの参考数値を持っており、一定まで下がるとアカウント停止の恐れがあるとのことなので、しっかり対応することをおすすめします。

宛先のクリーニングとは?

送ってはいけない・送ることができない宛先にメールを送らないように除外することです。

宛先のクリーニング対応方法

私たちのチームではKickboxというサービスを使用して宛先クリーニングを行うことにしました。

kickbox.com

UI上からクリーニングしたいメールアドレス一覧のCSVをuploadすることでクリーニング結果が返ってきます。

また、クリーニング結果の理由など詳細についてもある程度知ることが出来ます。
無料で100件まではクリーニングできるので、一度試してみてもいいかと思います。

SendGrid側でやってくれる対応

また、SendGridが自動でレピュテーション維持のために下記のようなことを行っています。

  • 迷惑メール報告があった宛先にはメールを送らない
  • 存在しない宛先にはメールを送らない
  • 配信停止機能で配信を希望しないユーザーにメールを送らない

SendGridの画面上のReport機能でどのくらい迷惑メール報告されたかなども確認できます。

オプトアウトの対応をする

オプトアウトとは?

受信者がメールを受け取りたくない場合に配信停止をする機能のことです。
特定電子メール法にも記載されています。

SendGridのオプトアウト機能

SendGridでもオプトアウトの機能があり、タグを埋め込むことでオプトアウトが可能です。
作成したグループごとにオプトアウトをすることも可能で、キャンペーンごとのオプトアウト対応といった作業も可能になります。

sendgrid.kke.co.jp

メールイベントログを取得できるようにする

メール配信後、メールの到達・開封・クリック率を見たいといったことがあると思います。
SendGridでは画面上でイベントログのダウンロードなどはできず、後から過去のイベントを取得することも出来ないため、SendGrid側が提供しているEvent WebHook機能を利用してメールのイベントを取得することをおすすめします。

メールイベントログで知れること

SendGridでは下記のようなことをイベントとして取得してくれます!

  • 迷惑メールになってるか
  • メールが送られているか
  • メールが開封されたか
  • メール内のリンクがクリックされたか

また、カスタム情報をメールに追加できるので、自社のDBの情報とメール情報を紐付けることも可能です。

メールイベントログのインフラ構成

メール1通に対して2~3イベントほどが発生するため、ある程度大量にメールを送る場合、かなりのRequestに耐えられる構成にする必要があります。
具体的なインフラ構成や設定は以下を参考にしました。

sendgrid.kke.co.jp

最後に

今回は自分たちで事前に知っておきたかったSendGridでメール配信するまでの内容を書いてみました。
この対応で全て網羅できるわけではないですが、少しでも参考になれば幸いです!