失敗事例から学ぶSendGridの使い方 未然に防げたトラブル編
- 2019年3月29日
- by 菊田 洋一
- Category: ベストプラクティス
SendGridサポートエンジニアの菊田です。前回のブログでは大量送信の失敗事例について書きました。今回のブログでは、事前に準備をしていれば未然に防げたのに…というトラブルの事例を紹介します。
事例1:プランの上限通数を超えるような送信をした覚えはないのに利用料金が先月に比べて高くなっています。料金計算を間違えていませんか?
送信通数をStatsで確認してもらうと「確かに送信していた。」ということがよくあります。意図していない送信は次のようなケースで起きやすいです。プランの上限通数を超過した分は課金の対象となってしまうので、それぞれ事前に備えましょう。
ケース1:新しいWebサービスをローンチして、会員登録の通知などでSendGridを使っている。ある日、ニュースで取り上げられて or インフルエンサーによる拡散で利用者が急増し、多くの会員登録があって、想定以上のメール送信が行われた。
対策:アラートを設定して事前に適切なプランへ変更する
Free以外のプランでは、通数上限を超過した送信が可能です。そのため、プランの上限に達した場合でも、メールが送信できなくなる心配はありませんが、自動的に上位のプランに切り替わることはないため、そのまま放置すると、上限超過料金が多く発生してしまいます。そこで、上限に近づいたことを知るためにアラートを設定して、早めに適切なプランに変えましょう。こうすることで利用料金を抑えることができます。定期的にStatsを確認し、実際にどれくらいメールを送信しているか確認するのも有効です。
ケース2:問合せフォームの通知でSendGridを利用しているが、ボットによる攻撃で大量の投稿が行われて、メールも送信されてしまった。
対策:チェックボックスやreCAPTCHAを設置する
問合せフォームのようなページはボットなどの攻撃対象になりやすいため、自動投稿を防ぐ仕組みが有効です。個人情報取得の同意を得るためのチェックボックスやreCAPTCHAの設置が対策としてあげられます。
事例2:問合せフォームを設置しただけなのに、ある日突然SendGridのアカウントが停止された。何もしていないのになぜ?
原因は、バウンスが急に大量発生したことでした。SendGridではバウンス率が非常に高い場合、送信者のレピュテーションを守るためにアカウントの停止措置をとることがあります。この事例では、メールアドレスの入力欄にバリデーションがなく、その結果、問合せの急増に伴ってメールアドレスの入力ミスが増えてバウンスが発生していました。
対策:メールアドレスのチェックを行う
問合せフォームのようにシンプルな画面でも、メールアドレスのバリデーションは必ず入れましょう。正規表現などを利用した実装が難しい場合でも、最低限、HTML5のinputタグでtype=”email”にするなどの対応が必要です。
メールアドレスの存在有無まで含む厳密なチェックを行いたい場合は、宛先の有効性やリスクを検証してくれるサービス(Kickboxが提供するWeb APIなど)を使ってリアルタイムにチェックするという方法もあります。
事例3:SendGridを利用したソースコードをGitHubにプッシュしたあと、突然アカウントが停止されたのですが、何が起こったのでしょうか?
SendGridでは、APIキーの漏洩による悪用を防ぐため、GitHubの公開リポジトリなどをクローリングして、見つけた場合は即座にアカウントを停止します。
対策:ソースコードに直接、認証情報やAPIキーを書かない
これはSendGridに限った話ではありませんが、認証情報やAPIキーなどの重要な情報は環境変数やコミット対象から外した設定ファイルに記述するようにしましょう。
事例4:WebサーバにあるアプリケーションからAPIを呼び出せたのに、手元のPCでダッシュボードにアクセスできません。なにか障害が起きていますか?
SendGridをセキュアに利用するためにアクセス元IPアドレスを制限できるIP Access Managementという機能があります。この機能を使うと、SendGridへのアクセスを制限できますが、設定が不十分でアクセス拒否されてしまうトラブルがよくあります。
対策:設定前にアクセス元IPアドレスをしっかり洗い出す
設定前には必ずダッシュボード、SMTP、Web APIを利用するアクセス元IPアドレスを洗い出しましょう。アプリケーションの動作環境だけではなく、ダッシュボードを利用する際の会社のネットワークなども忘れずに洗い出してください。また、動的なネットワーク環境を利用している場合やオフィスが移転してネットワーク環境が変わった場合など、IPアドレスが変わるときは注意が必要です。
IP Access Managementの解除は弊社ではできません。解除するには、SendGrid社へお客様ご自身で直接依頼する必要があるのでご注意ください。
以上、事前に準備をしていれば未然に防げたトラブルを4つ紹介しました。今回挙げたトラブルは、言われてみればその通りだけど、ハマってみないと気付きにくいものを選びました。今後の参考になれば幸いです。