【GCP】Compute Engineからメール送信する方法 (SendGrid編)

こんにちは。インターステラの阿形です。

Google Cloud Platform(GCP)からの外向きのSMTPはブロックされているので、Compute Engineで自前のSMTPサーバーを使用するのはいろいろ面倒です。
通常のSMTPで使用されるポートと別のポートを使用して、外部にその独自ポートで受け付けるリレーサーバーを立てるか、VPNで外部のSMTPサーバーにリレーさせるぐらいしか方法はありません。
このあたりの詳細は以下のURLに記載されています。
https://cloud.google.com/compute/docs/tutorials/sending-mail/

このような面倒なことをセずにGCPからメール送信するには、
  1. サードパーティのサービス(SendGrid、Mailgun、Mailjet)を使用する
  2. G Suiteの契約がある場合はGoogle AppsのSMTPサーバーを使用する
のいずれかの方法を用います。
インターステラではG Suiteを契約しているので2の方法でもいいんですが、G Suiteは送信数制限があるので万能ではありません。
このため、今回はサードパーティのサービスのSendGridで設定してみました。

SendGridについて

SendGridの詳細は以下のURLにあります。

 https://cloud.google.com/compute/docs/tutorials/sending-mail/using-sendgrid

SendGridの無料枠は12,000通/月まであるので、ちょっとした通知などで使用する程度ならば十分だと思います。
それ以上送信する場合でもそれほど高くないので、自前でサーバー運用するよりいいと思います。(料金はこちらで概算することができます。)

おおまかな設定の流れは以下のとおりです。
  1. SendGridに登録
  2. SMTP用の認証情報を作成
  3. 送信クライアントでSendGridのSMTPサーバーを設定
各ステップを以下で説明します。

SendGridの登録 

登録は以下のURLをブラウザで開き、ページ中央のボタン「Try for Free」をクリックします。 FREEプランであれば、クレジットカードの入力は必要ありません。

https://sendgrid.com

以前はGCP経由での申込みは25,000通まで無料となるキャンペーンがあったんですが、2017年6月現在それは終了しているようです。残念。

登録はユーザー名、メールアドレス、パスワードを入れるだけです。
しばらくすると、メールアドレスの確認のためのリンクが記載されたメールが届きますので、リンクをクリックしてメールアドレスの確認を完了します。
なお、私の場合、最初入力したメールアドレスがなぜかInvalid MXorAと出てうまく登録できなかったので、一旦Gmailのメールアドレス(*@gmail.com)で登録しました。うまくいかない方はGmailで登録してみるといいかもしれません。

あと、登録時のメールは大丈夫だったんですが、メールアドレス変更の確認のメールがGmailで迷惑メール判定されました…。おいおい!
もしメールが届かないという方は迷惑メールフォルダの確認を!

アカウントの登録が完了してもすぐには使用できません。
SendGrid側で準備が完了するとメールが送られてくるので、それまでしばらく待ちます。 (自分が試した時は1時間ほどかかりました)

SendGridの設定 

SMTPとして使用するだけならば認証情報を作成するだけです。 手順は以下のとおりです。
  1.  SendGridのDashboard(https://app.sendgrid.com)を開きます。
  2. 左側のメニューからSettings->Credentialsを選びます。
  3. Add New Credentialを押します。
  4. 表示されるフォームにIDとパスワードを入力、下部のチェックボックスにはMAILの方にチェックを入れます。
以上で認証情報の作成は完了です。
ここで作成した認証情報はSMTPの設定で使用するので忘れないようにしましょう。

クライアントの設定

SMTPでの送信はGCPからの場合は以下のものを使用します。
  • Host: smtp.sendgrid.net
  • Port: 2525
  • SMTPSecurity: TLS
以上の情報と先に作成した認証情報を用い、SMTPクライアントに設定します。

まとめ

以上のように

  1. SendGrideアカウント作成
  2. 認証情報の作成
  3. クライアントの設定

でさくっと設定は完了です。 とっても簡単ですねー。
SendGrid自体はSMTPで使用するよりもAPIを使用してプログラムから使用するのが本来の使い方ですが、今回は既存ツールからの単純な通知用を想定していたのでそのあたりは省いています。
日本の携帯電話キャリアとかのフィルタは考慮されてないようですが、ちょっとした用途でメール送信するだけならこれで十分ですね。
送信しかしないのに自前のメールサーバー立てて運用するのも厄介ですからね。

このブログの人気の投稿

【GCP】Compute EngineでVPNサーバーを立てるときの注意点

【AWS】IAMFullAccessを付与せずIAM Roleの作成とアタッチを行う方法