Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

Google Cloud Platform(GCP)のチュートリアルに沿ってPostfixからSendGrid経由でメール送信する

久しぶりにSendGridネタです。そして初GCP。

teratailに以下の質問があがってたので、実際に自分でも試してみました。

teratail.com

Google Cloud Platform(GCP)にあるSendGridチュートリアルに関する質問です。チュートリアルはこちらです。

teratailにも書いたのですが、自分の場合はうまくいきました。試したとき、サインアップからスクリーンショット撮っていたので手順をまとめておこうと思います。ただし、チュートリアルの「インスタンス上で Postfix を使用してメールを送信する」部分のみです。このあとにはJavaやNode.jsを利用したメール送信のチュートリアルもあるので、アプリでメール送信する方などは最初からそちらをやるほうが良いかと思います。

チュートリアルだと冒頭は次のようにボタンで遷移できます。
f:id:kikutaro777:20170421163324p:plain
が、このエントリではメニューから選択する流れとしています。(ボタンで一気に遷移してくれるのはありがたいですが、意外とどのメニューを辿っていくのかわからなかったりするため)

ではアカウント作成から淡々と書いていきます。

無料トライアル

https://cloud.google.com/ にアクセスして「無料トライアル」ボタンを押します。
f:id:kikutaro777:20170421113133p:plain

(Googleアカウントでログインしていない状態だと、ここで一回ログイン画面を挟みます)

必要情報を入力します。
f:id:kikutaro777:20170421133341p:plain

f:id:kikutaro777:20170421133405p:plain

クレジットカード情報は必須のようです。
f:id:kikutaro777:20170421155255p:plain

入力に問題がなければ「ようこそ」画面となります。
f:id:kikutaro777:20170421150957p:plain

プロジェクト作成

「プロジェクトを作成」を押します。
f:id:kikutaro777:20170421155523p:plain

プロジェクト名を入力します。私は「SendGridTrial」と付けました。
f:id:kikutaro777:20170421155608p:plain

次のような画面となりました。
f:id:kikutaro777:20170421155654p:plain

Compute Engine

コンピューティングの「Compute Engine」から「VMインスタンス」を選択します。
f:id:kikutaro777:20170421155816p:plain

はじめてだと少し準備に時間かかるようです。
f:id:kikutaro777:20170421162456p:plain

しばらく待つと、「作成」ボタンが有効になりました。
f:id:kikutaro777:20170421163448p:plain

インスタンスの名前を「sendgrid-tutorial」として、ブートディスクの変更をクリックします。
f:id:kikutaro777:20170421214802p:plain

デフォルトがDebianなので、チュートリアル的にはこのままでもよいのですが、CentOS7にしてみました。
f:id:kikutaro777:20170421164803p:plain

作成が完了すると一覧に表示されます。
f:id:kikutaro777:20170421164856p:plain

Cloud Launcher

Cloud Launcherを選択して、検索欄に「SendGrid」を入力します。
f:id:kikutaro777:20170421170019p:plain

「SendGrid Marketing Campaigns」と「SendGrid Email API」が出てきます。SendGrid Email APIを選択します。
f:id:kikutaro777:20170421170116p:plain

Marketing Campaignsというのは機能名称の1つで、SendGridのUI上でメールデザインなどしてキャンペーンメールが送れるものです。先日、自分がハンズオンとかやってましたw
sendgrid.kke.co.jp

ここで「SendGrid Marketing Campaigns」と「SendGrid Email API」の2つの選択肢が分かれているのが少し気になったので、どちらも選んでみたのですが、最終的には同じアカウントでした(^^;GCPではMarketing Campaigns使えるのですねー、ほー。

「無料プランで開始」を押します。
f:id:kikutaro777:20170421173632p:plain

1.Subscribeのプラン「Free($0.00/月)」であることを確認して「登録」を押します。
f:id:kikutaro777:20170421173800p:plain

2.Activateの「SendGridに登録」を押します。
f:id:kikutaro777:20170421174009p:plain

SendGridで作成するアカウント情報入力欄が表示されます。
f:id:kikutaro777:20170421174154p:plain

ユーザ名やパスワード、メールアドレスを入力して「Continue」を押します。
f:id:kikutaro777:20170421174216p:plain

権限に関するリクエストで「許可」します。
f:id:kikutaro777:20170421174232p:plain

これで完了です。
f:id:kikutaro777:20170421174427p:plain

SendGrid

Cloud Launcherに戻ると「Manage API keys on SendGrid website」という表示がありますので、こちらをクリックします。
f:id:kikutaro777:20170421182142p:plain

API Keyというのは、SendGridを利用してメール送信するときの認証情報です。認証ではログイン同様にID/Passwordを指定することもできるのですが、設定ファイルやコードに埋め込むのはセキュリティ上好ましくないです。なので、こちらのAPI Key利用を推奨します。ちなみにチュートリアルのPostfixではAPI keyを使わずID/Passwordを使っているので、ここの手順は飛ばしても大丈夫です。が、SMTPの認証でもAPI Keyは利用できるので(後ほど記述)、このまま進めるほうがよいです。

SendGridの管理コンソール画面が立ち上がり、下のように「Hi xxxx」というダイアログが出ます。
メアドを確認して「Send Confirmation Email」を送ってください。
f:id:kikutaro777:20170421182406p:plain

「Please confirm your email address」というタイトルの確認メールが飛ぶので、以下ボタンを押します。
(メールが来ない場合は、迷惑メールフォルダをチェック)
f:id:kikutaro777:20170421182502p:plain

「Create API Key」を押します。
f:id:kikutaro777:20170421182739p:plain

API Key nameを入れてパーミッションの種類を選びます。今回はとりあえずFullにしてます。
f:id:kikutaro777:20170421203755p:plain

API Keyが表示されます。ここは1回だけの表示で、もう2度と確認できないので、必ずコピーしてください!
f:id:kikutaro777:20170421203925p:plain

これでAPI Keyの作成は終わりです。

Postfixの設定

さきほど作成したVMインスタンスにsshで接続します。
f:id:kikutaro777:20170421210003p:plain

普通のクラウド系だと自分のマシンからssh叩きますが、GCP、ブラウザからいけるんですね。なにこれすごい。
f:id:kikutaro777:20170421212335p:plain

f:id:kikutaro777:20170421212344p:plain

ここからはチュートリアル通りです。

sudo su -
umask 077

で、CentOSなので

yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y

f:id:kikutaro777:20170421212354p:plain
と淡々とチュートリアル通りに進めます。

気を付けるところ、というか、自分の知識が足りなくてちょっとハマったところは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

のログは
f:id:kikutaro777:20170421214053p:plain
みたいな感じになります。

メールの受信を確認。
f:id:kikutaro777:20170421213929p:plain

メールをちゃんと届けるためには、Domain Whitelabelの設定などを行ったほうがよいです。

独自ドメイン利用(Whitelabel)および設定時のDNSレコードについて、詳しく教えてください

Postfixは知っておきたいと思ってたので、もうちょっと調べてみないと。

JJUGナイトセミナー Javaクラウドプラットフォーム大特集に参加しました!

今日のJJUGナイトセミナーは超豪華でした!仕事を置いてきてでも参加してホント正解(^^)!会社後輩は1人しか来なかった…のですが、ホントもったいないと思う…。

jjug.doorkeeper.jp

発表は以下順番でした。

  1. Heroku
  2. Amazon Web Service
  3. Microsoft Azure
  4. Oracle Java Cloud Service
  5. Cloud Foundry
  6. Google Cloud Platform
  7. OpenShift
  8. IBM Bluemix

当日のつぶやきは既に@yamadamnさんにてまとめられています!

以下、発表者の方のスライドと、過去に自分が触ったときの記事とか合わせて簡単に。

Heroku

Herokuは前にSalesforce Summer(だったかな?)に参加したときに、セッションを聞いて触ってみてました。当時の自分は、Heroku = Ruby on Railsのイメージが凄く強かったのですが、実際に触ってみると、Javaも簡単に動かせて驚いた記憶があります。

今日の発表でも「Spark」に少しだけ触れられてましたが、Sparkのひな形が用意されていて、そこからPayara Microいけるんじゃ?って思った記憶が。

ということで、以前試したHeroku

kikutaro777.hatenablog.com

とPayara Microについて

なお、タイトルにある「12-Factor App」は以下。

12factor.net

日本語訳もあるですね。

12factor.net

AWS

自己紹介の話を聞いてJavaFXの話が聞きたくなりました(^^)w

AWSのBeanstalkは、Docker + GlassFishが使えると聞いて、前に試してました。これも手軽なんですよねー。

kikutaro777.hatenablog.com

他のPaaSに比べて中身の透明性がある(AWSの仕組みで構成されているという意味で)、というのはなるほどーという感じでした。

Azure

OracleでMicrosoftのてらださんがお話をされるという、聞いてる側もまだ何だか不慣れな感じでした(^^;笑

今のMicrosoftはすごくオープン、と強調されてましたが、色んなニュースが続きますよね。

MSがEclipse Foundationに参画したり
www.publickey1.jp

ASP.NETがLinuxで動くとか、先日なんてMS SQL Server on Linuxとか、「は!?」って感じですよね(^^;

jp.techcrunch.com

Azureは自分も一時期いろいろ触ってました。記事としては古いので注意ですが。

kikutaro777.hatenablog.com

Oracle Java Cloud Service

OracleさんのPaaSはまだ触ったことがないのですが、Java Cloud ServiceとApplication Container Serviceの2種類があるとのこと。両方ともFlight Recorderが使える辺りは便利そうですよね。
無料お試しとかあるのかな…。なんとなく気軽に触ってみることができるのか、気になりました。

あと、Java Cloud ServiceはWebLogicだけなのがちょっと残念。GlassFishがあれば…。

Cloud Foundry

Cloud Foundry、よく名前は聞くのですが、全然触ったことないのと、前提知識が薄かったので、今日の@makingさんの発表で勉強になりました!

個人的には「.NETが動く」というのに驚きました。Azure以外でそんなのあるのか!と

3/31にCloud Foundry Tokyo Meetupイベントがあるとのことです!
www.meetup.com

あと、発表者の@makingさんから教えて頂きましたが.NETまわりの仕組みとか聞けるかもです(^^)これはいってみたい。

ハンズオン形式のワークショップもあるそうです。

connpass.com

connpass.com

Google Cloud Platform

やっぱりGoogleの基盤はすごそうだなーと。そして日本にデータセンターという話もホットだったんですね。

www.nikkei.com

OpenShift

Red HatのOpenShiftは、今、自分の中では一番良く利用するPaaSです。発表にもありましたが、無料で使えるPaaSが減ってる中、Java EEのAPサーバ含めて無償枠があるのが嬉しいです。

OpenShift Onlineは現在v2で、v3からはDockerを主軸としたアーキテクチャでガラっと中身を変えたとのこと。

もうすぐv3版のOnlineもでるとのことで、個人的に超たのしみです。

@nekopさんがブログ書かれていました。

nekop.hatenablog.com

OpenShiftを初めて触ったときのエントリもありました(^^;

kikutaro777.hatenablog.com

ちなみに、最近乃木坂46にどハマりしてる自分なのですが、OpenShift上のWildFly + Twitter4Jで以下アプリのっけてます。

Sakamichi46 Collection

作成動機などは以下(^^;;

nogizaka46.hatenablog.jp

脱線しすぎました。

IBM Bluemix

資料はまだでしたが、Blumixも色々面白そうですよね。話題のWatson君とか、IoT関係なども。


ということで、ホントすごく豪華でした!どのPaaSにするか、やっぱり色々触ってみるのがいいですよね(^^)自分の場合は8個中4個は触ったことありますが、少し前なので、それぞれ色々変わってる気がします。触ったことがない中では、やっぱりCloud Foundryが一番気になりました。

触ってみよー。

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村