はじめに
みなさんこんにちは。サイオステクノロジーのNakayaです。
今回AzureのノーコードソリューションであるLogicAppsを使って簡易的なメールサーバーを作成してみました(厳密に言えばメールサーバと呼べないかもしれないですが…)。
機能としてはLogicAppsにHTTPリクエストを投げればメールが送信される、ただそれだけのシンプルな実装です。
Azure LogicAppsとは
Azure LogicAppsはAzureのiPaaS(Integration Platform as a Service)と呼ばれるサービス群で、特徴としてはプログラミングなしで手軽に色々なサービスを連携させることができます。今回はOffice365のOutlookと連携させます。
Azure Logic Apps: https://azure.microsoft.com/ja-jp/services/logic-apps
Azure LogicApps 公式ドキュメント: https://docs.microsoft.com/ja-jp/azure/logic-apps/logic-apps-overview
作成手順
AzureのPortal画面からLogicAppsを選択し、追加を選択します。


サブスクリプションや、リソースグループ、名前などを入力します。
今回は検証のため、ログ分析は無効、プランは消費としています。

問題なく作成できればLogicAppsのデザイナー画面が表示されます。
今回はトリガーとして「HTTP要求の受信時」を選択します。

すると以下のような画面が表示されますので「HTTP要求の受信時」を選択し、「要求本文のスキーマ」にJSONを貼り付けます。


このJSONでは以下のパラメータを使います。
- address: 送信先メールアドレス
- subject: メールタイトル
- message: メールメッセージ本文
{
"properties": {
"address": {
"type": "string"
},
"subject": {
"type": "string"
},
"message": {
"type": "string"
}
},
"type": "object"
}
その後、「+」ボタンをクリックし、新しいアクションを追加します。

「Office365 Outlook」をクリックし、「メッセージの送信(v2)」を選択します。


サインインをクリックし、送信元にしたいユーザでログインします。

サインインが完了したら宛先、件名、本文を埋めていきます。
宛先部分を選択し、「もっと見る」ををクリックします。

「address」と表示されている部分をクリックします。

同様に「件名」に「subject」、「本文」に「message」を選択します。

左上の「保存」を押して保存します。

確認
今回はcurlコマンドを用いて確認します。
「HTTP要求の受診時」を選択し、「HTTP POSTのURL」の内容をクリップボードにコピーします。

ターミナルから以下のようにcurlコマンドを叩きます。
$ curl -i -X POST \
-H "Content-Type:application/json" \
-d \
'{
"to": "送信したいメールアドレス",
"subject": "テストメール",
"text": "これはLogicAppsからのメールです。"
}' \
'先程コピーしたURL'
すると「to」で指定したメールアドレスにメールが送信されました!

まとめ
今回はLogicAppsを使って簡易的なメールサーバを構築してみました。
HTTPリクエストを投げるだけで使えるため、どんな言語のプログラムでも簡単に組み込めると思います。
ぱぱっと作れるのでぜひお試しください。

