AzureのMarketplaceからSendGridを利用してみる

#はじめに
Azureは不特定多数が利用するパブリッククラウドであるため、独自にIaaSでメールサーバを立ててメール送信することは推奨していないようです。
こちらはAzureテクニカルサポートチームのBlogにも書かれており、メール送信にはSendGridを推奨しています。
https://blogs.technet.microsoft.com/jpaztech/2016/06/09/smtp-on-azurevm/

このリンク先にもAzureからSendGridのサービスを利用する方法が書かれているのですが、クラシックポータルからの利用であるため(2016/09/12現在)、今回は現行のポータル( https://portal.azure.com/ )で試してみます。

今回はメール送信クライアントとしてOutlook 2016とPowerShellを使ってみます。

#SendGridのデプロイ

Azureポータルから「新規」を押して、検索フィールドに「sendgrid」と入力して、「SendGrid Email Delivery」を見つけて選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3f73053d-4dee-4e58-2b03-5522d21a344d.png)

「作成」ボタンを押して表示された「Create a New Sendgrid」ブレード内の情報を入力します。
Name,Passwordは適当に、サブスクリプションはデプロイを行うものを選択、Resource Groupは今回は新規で「QIITASENDGRIDRG」としました。 

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/7b968e60-7e3c-091c-0c5d-f70c0ad479b7.png)

(つづき)
Pricing Tierは「F1 Free」を選びます。無料でも月間25,000通のメールが送信できるようです。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/8b0c45bf-2e69-cb9f-c9e2-b6cc6168f417.png)

(つづき)
Contact Informationには利用者自身の情報を入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/ce0e7021-ce01-7686-de35-0cb8264b53c0.png)

(つづき)
法律条項の確認を行います。前に入力したPricing Tierがちゃんと無料プランになっていて課金されないことをしっかり確認して「購入」を押します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/bfdd688b-bac6-f157-c91d-5a95cd5a100f.png)

最後に「作成」を押してデプロイ開始します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/38c14d92-902f-95b2-c1f3-55591deda440.png)

しばらく(数分)待つとデプロイ完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/a439d532-3cd9-201f-35b9-c0e9bc77732a.png)

#メール送信(SMTP)パラメータの確認
作成したSendGridのSettingブレードから「Configurations」を押すと新たなブレードが開いて、SMTPサーバの認証用ユーザと接続先ホストの情報が表示されますので控えておきます。
パスワードはデプロイ時に設定したものを使います。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/0b8158fa-189a-daa4-f054-afbe38f49560.png)

#Outlookの設定とメール送信確認
今回はOutlook 2016を使います。
Outlook 2016はメールアカウントを新規追加する際に送信サーバ(今回はSendGrid)だけを設定することはできなくて、必ず受信サーバ(POP3やIMAP)も設定する必要があります。
今回は手近にある適当なメール受信サーバを使いました。

さて、Outlook 2016でのアカウント追加手順ですが、「ファイル」メニューから「＋アカウントの追加」ボタンをクリックして始めます。
アカウントの設定方法は手動設定を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/da974568-b2e9-ece8-b57a-870b4918c078.png)

サービスの選択では「POPまたはIMAP」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/033689d4-7ff5-4e4a-fcde-4b4422a3ee62.png)

アカウント設定では、電子メールアドレスは実際に自分が受信可能な正しいメールアドレスを入力します。
サーバ情報のアカウントの種類、受信メールサーバは別途用意した(若しくは既にある)サーバの種類・情報を設定します。
メールサーバへのログオン情報も受信メールサーバに関するものなので適宜設定します。
送信メールサーバの欄は先程デプロイしたSendGridのSMTP SERVERを設定します。
続いて「詳細設定」を押します。

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/0e758864-51d8-1a4f-3706-e55ebcbfa9b5.png)

送信メールサーバの設定タブを開いて、「次のアカウントとパスワードでログインする」をチェック後、アカウント名とパスワードに先ほどデプロイしたSendGridの情報を設定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/f2ce33cd-ba96-aa95-4617-8a245432b1f0.png)

最後にメール送受信チェックが行われて、メールアカウントの追加は完了です。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/cacc4b68-4e54-2a0a-f815-49a8843473ef.png)

それではメールをOutlook 2016から送信しましょう。今回は私個人のicloud.comに対して送ってみます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/3d079289-674f-881c-a8d9-9e845c6bc04a.png)

はい、無事メールがicloud.comも私のアカウントに送られてきました。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/ddb02cc0-bb59-f743-2d3f-d50c603f124b.png)

#PowerShellからのメール送信(追記)
Windows標準のPowerShellを使ってSendGrid経由でメールを送信するサンプルも用意しました。
以下のスクリプトの前半部分の変数を適当に書き換えて使用します。

```ps1:sendmail.ps1
$SmtpServer = 'smtp.sendgrid.net'
$Port = 587
$UserName = 'azure_XXXXXXXXXXXXXXX@azure.com'
$Password = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

$MailFrom = 'XXXXXXXXXX@example.com'
$MailTo = 'XXXXXXXXXXXXXX@icloud.com'
$Subject = 'Test Mail'
$Body = 'This is test'

$pwd = ConvertTo-SecureString -String $Password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $UserName,$pwd

Send-MailMessage -UseSsl -From $MailFrom -To $MailTo -Subject $Subject -Body $Body -SmtpServer $SmtpServer -Port $Port -Credential $cred
```

スクリプト実行後、無事にメールが届きました。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/22649dd3-5f53-731d-6790-905cb6fa2af6.png)


#SendGridの管理画面
SendGridの各種ステータス確認や諸々の設定はAzureポータルではなく、外部のサイトで行います。

ポータルのSendGridのブレード上に「Manage」ボタンがあるのでこちらを押すと別ウインドウでSendGridの管理画面が開きます。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/20fad1ba-6cfb-b62c-342b-aff473c871d7.png)

今回はこちらの設定画面の説明は除きますが、画面左下に本日のメール送信件数が表示されています。
(今回このBlog執筆時には2通SendGrid経由でメール送信を行いました)
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/18aef72c-ec63-b6fe-7487-4762777deab2.png)

#おわりに
今回はSendGridを個人用途のMUAであるOutlookから利用しました。
SendGridはダイレクトメール等の大量配信を行う際に有効な機能と性能をもつサービスですが、そういったサービスを企業で本格利用する前のとっかかりとして、先ずは簡単に使ってみるのが良いかと思います。