こんにちは。インターステラの阿形です。
Google Cloud Platform(GCP)からの外向きのSMTPはブロックされているので、Compute Engineで自前のSMTPサーバーを使用するのはいろいろ面倒です。
通常のSMTPで使用されるポートと別のポートを使用して、外部にその独自ポートで受け付けるリレーサーバーを立てるか、VPNで外部のSMTPサーバーにリレーさせるぐらいしか方法はありません。
このあたりの詳細は以下のURLに記載されています。
https://cloud.google.com/compute/docs/tutorials/sending-mail/
このような面倒なことをセずにGCPからメール送信するには、
のいずれかの方法を用います。
インターステラではG Suiteを契約しているので2の方法でもいいんですが、G Suiteは送信数制限があるので万能ではありません。
このため、今回はサードパーティのサービスのSendGridで設定してみました。
SendGridの詳細は以下のURLにあります。
https://cloud.google.com/compute/docs/tutorials/sending-mail/using-sendgrid
SendGridの無料枠は12,000通/月まであるので、ちょっとした通知などで使用する程度ならば十分だと思います。
それ以上送信する場合でもそれほど高くないので、自前でサーバー運用するよりいいと思います。(料金はこちらで概算することができます。)
おおまかな設定の流れは以下のとおりです。
各ステップを以下で説明します。
登録は以下のURLをブラウザで開き、ページ中央のボタン「Try for Free」をクリックします。 FREEプランであれば、クレジットカードの入力は必要ありません。
以前はGCP経由での申込みは25,000通まで無料となるキャンペーンがあったんですが、2017年6月現在それは終了しているようです。残念。
登録はユーザー名、メールアドレス、パスワードを入れるだけです。
しばらくすると、メールアドレスの確認のためのリンクが記載されたメールが届きますので、リンクをクリックしてメールアドレスの確認を完了します。
なお、私の場合、最初入力したメールアドレスがなぜかInvalid MXorAと出てうまく登録できなかったので、一旦Gmailのメールアドレス(*@gmail.com)で登録しました。うまくいかない方はGmailで登録してみるといいかもしれません。
あと、登録時のメールは大丈夫だったんですが、メールアドレス変更の確認のメールがGmailで迷惑メール判定されました…。おいおい!
もしメールが届かないという方は迷惑メールフォルダの確認を!
アカウントの登録が完了してもすぐには使用できません。
SendGrid側で準備が完了するとメールが送られてくるので、それまでしばらく待ちます。 (自分が試した時は1時間ほどかかりました)
SMTPとして使用するだけならば認証情報を作成するだけです。 手順は以下のとおりです。
以上で認証情報の作成は完了です。
ここで作成した認証情報はSMTPの設定で使用するので忘れないようにしましょう。
SMTPでの送信はGCPからの場合は以下のものを使用します。
以上の情報と先に作成した認証情報を用い、SMTPクライアントに設定します。
以上のように
でさくっと設定は完了です。 とっても簡単ですねー。
SendGrid自体はSMTPで使用するよりもAPIを使用してプログラムから使用するのが本来の使い方ですが、今回は既存ツールからの単純な通知用を想定していたのでそのあたりは省いています。
日本の携帯電話キャリアとかのフィルタは考慮されてないようですが、ちょっとした用途でメール送信するだけならこれで十分ですね。
送信しかしないのに自前のメールサーバー立てて運用するのも厄介ですからね。