久しぶりにSendGridネタです。そして初GCP。
teratailに以下の質問があがってたので、実際に自分でも試してみました。
teratail.com
Google Cloud Platform(GCP)にあるSendGridチュートリアルに関する質問です。チュートリアルはこちらです。
teratailにも書いたのですが、自分の場合はうまくいきました。試したとき、サインアップからスクリーンショット撮っていたので手順をまとめておこうと思います。ただし、チュートリアルの「インスタンス上で Postfix を使用してメールを送信する」部分のみです。このあとにはJavaやNode.jsを利用したメール送信のチュートリアルもあるので、アプリでメール送信する方などは最初からそちらをやるほうが良いかと思います。
チュートリアルだと冒頭は次のようにボタンで遷移できます。
が、このエントリではメニューから選択する流れとしています。(ボタンで一気に遷移してくれるのはありがたいですが、意外とどのメニューを辿っていくのかわからなかったりするため)
ではアカウント作成から淡々と書いていきます。
無料トライアル
https://cloud.google.com/ にアクセスして「無料トライアル」ボタンを押します。
(Googleアカウントでログインしていない状態だと、ここで一回ログイン画面を挟みます)
必要情報を入力します。
クレジットカード情報は必須のようです。
入力に問題がなければ「ようこそ」画面となります。
プロジェクト作成
「プロジェクトを作成」を押します。
プロジェクト名を入力します。私は「SendGridTrial」と付けました。
次のような画面となりました。
Compute Engine
コンピューティングの「Compute Engine」から「VMインスタンス」を選択します。
はじめてだと少し準備に時間かかるようです。
しばらく待つと、「作成」ボタンが有効になりました。
インスタンスの名前を「sendgrid-tutorial」として、ブートディスクの変更をクリックします。
デフォルトがDebianなので、チュートリアル的にはこのままでもよいのですが、CentOS7にしてみました。
作成が完了すると一覧に表示されます。
Cloud Launcher
Cloud Launcherを選択して、検索欄に「SendGrid」を入力します。
「SendGrid Marketing Campaigns」と「SendGrid Email API」が出てきます。SendGrid Email APIを選択します。
Marketing Campaignsというのは機能名称の1つで、SendGridのUI上でメールデザインなどしてキャンペーンメールが送れるものです。先日、自分がハンズオンとかやってましたw
sendgrid.kke.co.jp
ここで「SendGrid Marketing Campaigns」と「SendGrid Email API」の2つの選択肢が分かれているのが少し気になったので、どちらも選んでみたのですが、最終的には同じアカウントでした(^^;GCPではMarketing Campaigns使えるのですねー、ほー。
「無料プランで開始」を押します。
1.Subscribeのプラン「Free($0.00/月)」であることを確認して「登録」を押します。
2.Activateの「SendGridに登録」を押します。
SendGridで作成するアカウント情報入力欄が表示されます。
ユーザ名やパスワード、メールアドレスを入力して「Continue」を押します。
権限に関するリクエストで「許可」します。
これで完了です。
SendGrid
Cloud Launcherに戻ると「Manage API keys on SendGrid website」という表示がありますので、こちらをクリックします。
API Keyというのは、SendGridを利用してメール送信するときの認証情報です。認証ではログイン同様にID/Passwordを指定することもできるのですが、設定ファイルやコードに埋め込むのはセキュリティ上好ましくないです。なので、こちらのAPI Key利用を推奨します。ちなみにチュートリアルのPostfixではAPI keyを使わずID/Passwordを使っているので、ここの手順は飛ばしても大丈夫です。が、SMTPの認証でもAPI Keyは利用できるので(後ほど記述)、このまま進めるほうがよいです。
SendGridの管理コンソール画面が立ち上がり、下のように「Hi xxxx」というダイアログが出ます。
メアドを確認して「Send Confirmation Email」を送ってください。
「Please confirm your email address」というタイトルの確認メールが飛ぶので、以下ボタンを押します。
(メールが来ない場合は、迷惑メールフォルダをチェック)
「Create API Key」を押します。
API Key nameを入れてパーミッションの種類を選びます。今回はとりあえずFullにしてます。
API Keyが表示されます。ここは1回だけの表示で、もう2度と確認できないので、必ずコピーしてください!
これでAPI Keyの作成は終わりです。
Postfixの設定
さきほど作成したVMインスタンスにsshで接続します。
普通のクラウド系だと自分のマシンからssh叩きますが、GCP、ブラウザからいけるんですね。なにこれすごい。
ここからはチュートリアル通りです。
sudo su -
umask 077
で、CentOSなので
yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
と淡々とチュートリアル通りに進めます。
気を付けるところ、というか、自分の知識が足りなくてちょっとハマったところはSASLパスワードマップ生成の部分で
echo [smtp.sendgrid.net]:2525 [YOUR_SMTP_LOGIN]:[YOUR_SMTP_PASSWORD] >> /etc/postfix/sasl_passwd
最初認証情報は
[kikuta]:[123456789]
みたいに書くのかと勘違いしてずっと認証がとおらなかったですw
この場合だと
echo [smtp.sendgrid.net]:2525 kikuta:123456789 >> /etc/postfix/sasl_passwd
と書けばよいだけでした。
ちなみにAPI Keyを利用する場合は
echo [smtp.sendgrid.net]:2525 apikey:SGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> /etc/postfix/sasl_passwd
とすればいけます。
あと、認証間違えてて、次にまたechoコマンドを連続して打ってたのですが、そうするとsasl_passswdのファイル内が
[smtp.sendgrid.net]:2525 [kikuta]:[123456789]
[smtp.sendgrid.net]:2525 kikuta:123456789
みたいになっていて、結局1行目が評価されてダメってなってました。直接いじって
[smtp.sendgrid.net]:2525 kikuta:123456789
とかにして進めば問題なしです。
ちょっと脱線しましたが、再びチュートリアル通りに進めて最後に
echo 'Test passed.' | mail -s Test-Email EMAIL@EXAMPLE.COM
で(最後はもちろん実際の送信先を指定)メール送信。
うまくいけば
tail -n 5 /var/log/maillog
のログは
みたいな感じになります。
メールの受信を確認。
メールをちゃんと届けるためには、Domain Whitelabelの設定などを行ったほうがよいです。
独自ドメイン利用(Whitelabel)および設定時のDNSレコードについて、詳しく教えてください
Postfixは知っておきたいと思ってたので、もうちょっと調べてみないと。