クラウドエンジニアブログ

Azure App Service ドメインを Azure CLI で取得してカスタムドメインでメール送受信を試してみた

佐藤 実

佐藤 実

こんにちは。 CI/CD を含むクラウドインフラの構築や技術支援を担当している、クラウドエンジニアの佐藤です。

Azure の検証にも使える Microsoft 365 開発者プログラムの E5 ライセンスを無料で手に入れてみた
Visual Studio サブスクリプション特典の Azure を Microsoft 365 開発者プログラムのテナントに追加してみた
GitHub Codespaces を使って無料で Azure CLI を実行する環境を整えてみた
の続きです。

E5 ライセンスと Azure サブスクリプションと Azure CLI の実行環境が無料で手に入り、この検証環境を使って様々な検証結果をお届けしていきます。

まずは、今後の検証にも大いに活躍するであろう、検証環境用の カスタムドメインを Azure で取得 します。それから DNS を設定して、ユーザー作成して、E5 ライセンスを付与して、Outlook on the web でメール送受信を試します。

私がお届けする検証内容は、なるべく Azure CLI を使ってリソース作成を行い、実行結果を Azure ポータルなどで確認していく流れとなります。リソース作成を Azure CLI にしておけば、パラメーターを変更するだけで別の Azure 環境での再現性も高く、作ったり変更したり削除したりが容易です。


App Service ドメインを Azure CLI で取得

前回 Azure CLI 環境を整えた、GitHub Codespaces を使用します。
「 az account show 」を実行して作業対象の Azure サブスクリプションである事を確認します。

az account show

GitHub Codespaces 上で Azure CLI を実行した結果です。


リソースグループを作成します。

az group create \
  --name ceblog-rg \
  --location japaneast

リソースグループが作成された事を確認します。


カスタムドメイン取得者情報用のテンプレート JSON をダウンロードします。

wget https://raw.githubusercontent.com/AzureAppServiceCLI/appservice_domains_templates/master/contact_info.json

必要に応じて JSON の中身を書き換えます。


事前に調べておいた、使われていないドメイン「 ceblog.com 」でカスタムドメインを取得します。
az appservice domain create

az appservice domain create \
  --resource-group ceblog-rg \
  --hostname ceblog.com \
  --contact-info=@contact-info.json \
  --accept-terms

エラーメッセージを見ると「 ceblog.com 」は利用不可との事です。


先ほどとは異なるドメイン「 ceblog.net 」でカスタムドメインを取得します。

az appservice domain create \
  --resource-group ceblog-rg \
  --hostname ceblog.net \
  --contact-info=@contact-info.json \
  --accept-terms

今度は、エラーメッセージなくコマンドが正常終了しました。

Azure ポータルで作成されたリソースを確認します。
「 App Service ドメイン」と、カスタムドメインの DNS を管理する「 DNS ゾーン」が作成されました。


「 App Service ドメイン」の有効期限は 1 年後、自動更新は有効、プライバシー保護も有効である事が確認できます。


「 DNS ゾーン」に NS レコードと SOA レコードが自動登録されている事が確認できます。


App Service ドメインは毎年 11.99 ドルの利用料金が発生します。
私の検証環境は Visual Studio サブスクリプション特典の Azure クレジットが適用されるので、とても助かります。
App Service の価格

Microsoft Graph API を使ってカスタムドメインの追加と設定

Microsoft 365 の認証基盤である Azure AD にカスタムドメインを追加します。
ドメインを作成する

az rest \
  --method post \
  --url https://graph.microsoft.com/v1.0/domains \
  --body '{
    "id": "ceblog.net"
  }'

コマンドの実行結果に JSON が返ってきたので、正常にカスタムドメインを追加できたようです。

追加できたカスタムドメインを Azure ポータルで確認します。

追加できたカスタムドメインを Microsoft 365 管理センターで確認します。
Microsoft 365 管理センター


未確認のカスタムドメインを確認済みにするための DNS 登録情報を取得します。
リストの検証DnsRecords

az rest \
  --method get \
  --url https://graph.microsoft.com/v1.0/domains/ceblog.net/verificationDnsRecords

実行結果の JSON に TXT レコードと MX レコードの情報が出力されました。
カスタムドメインの確認には、TXT レコードもしくは、MX レコードのどちらかの名前解決ができれば良いようです。


私の場合は TXT レコードを DNS ゾーンに登録しカスタムドメインの確認を進めます。
az network dns record-set txt add-record

az network dns record-set txt add-record \
  --resource-group ceblog-rg \
  --record-set-name @ \
  --value "MS=ms54820428" \
  --zone-name ceblog.net

TXT レコードが正常に登録されました。

Azure ポータルで DNS ゾーンに登録された TXT レコードを確認します。


GitHub Codespaces 上で名前解決できるか確認します。

host -t txt ceblog.net

host コマンドがインストールされていないようです。

host コマンドが使用できるように Ubuntu のパッケージ「 dnsutils 」をインストールします。

sudo apt install -y dnsutils

host -t txt ceblog.net

TXT レコードの名前解決ができました。


カスタムドメインの所有権を検証します。
ドメインを確認する

az rest \
  --method post \
  --url https://graph.microsoft.com/v1.0/domains/ceblog.net/verify

isVerified が true になりました。

Azure ポータルでカスタムドメインの状態が「確認済み」になっているのを確認します。


カスタムドメインをプライマリ(デフォルトドメイン)にします。
ドメインを更新する

az rest \
  --method patch \
  --url https://graph.microsoft.com/v1.0/domains/ceblog.net \
  --body '{
    "isDefault": true
  }'

ceblog.net のプライマリ列にチェックマークが移動しました。


デフォルトドメインをクエリーに指定してカスタムドメインが取得できるか確認します。

az rest \
  --method get \
  --uri https://graph.microsoft.com/v1.0/domains \
  --query "value[?isDefault].id" \
  --output tsv

ceblog.net が取得できました。


Microsoft 365 管理センターでカスタムドメインの状態を確認します。
Azure AD 側では確認済みとなりましたが、Microsoft 365 側では追加の DNS 登録が必要なため「セットアップ未完了」となっています。


カスタムドメインをクリックし、下記の画面で「セットアップを続ける」をクリックします。


「続行」をクリックします。


DNS ゾーンに登録する MX CNAME TXT レコードが表示されます。


MX レコードを DNS ゾーンに登録します。

az network dns record-set mx add-record \
  --resource-group ceblog-rg \
  --record-set-name @ \
  --exchange "ceblog-net.mail.protection.outlook.com" \
  --preference 0 \
  --zone-name ceblog.net

MX レコードが登録できました。


CNAME レコードを DNS ゾーンに登録します。

az network dns record-set cname set-record \
  --resource-group ceblog-rg \
  --record-set-name autodiscover \
  --cname "autodiscover.outlook.com" \
  --zone-name ceblog.net

CNAME レコードが登録できました。


TXT レコードを DNS ゾーンに登録します。

az network dns record-set txt add-record \
  --resource-group ceblog-rg \
  --record-set-name @ \
  --value "v=spf1 include:spf.protection.outlook.com -all" \
  --zone-name ceblog.net

TXT レコードが登録できました。


Azure ポータルで DNS ゾーンに登録された MX CNAME TXT レコードを確認します。


Microsoft 365 管理センターに戻って「続行」をクリックします。


「完了」をクリックします。


ドメインの状態が「セットアップ未完了」と表示されたままなので「更新」をクリックします。


ドメインの状態が「正常」と表示されました。

新規ユーザーを作成し E5 ライセンスを割り当て

デフォルトドメインで新規ユーザー「 testuser 」を作成します。
ここで表示しているパスワードは Microsoft のオンラインドキュメントにも記載されているサンプルのパスワードです。

domain=$(az rest \
  --method get \
  --uri https://graph.microsoft.com/v1.0/domains \
  --query "value[?isDefault].id" \
  --output tsv)

echo $domain

az ad user create \
  --display-name testuser \
  --password st0r0nGp@ssw0rd \
  --user-principal-name testuser@$domain

新規ユーザーが作成されました。

Azure ポータルで「 testuser 」が作成されていることを確認します。


E5 ライセンスを割り当てる前に「 testuser 」の利用場所を日本に設定します。

az rest \
  --method patch \
  --uri https://graph.microsoft.com/v1.0/users/$(az ad user show \
  --id testuser@$domain \
  --query id \
  --output tsv) \
  --body '{
    "usageLocation": "JP"
  }'

利用場所が日本に設定されました。


Microsoft 365 開発者プログラムの E5 ライセンスの SKU 番号を調べます。

az rest \
  --method get \
  --uri https://graph.microsoft.com/v1.0/subscribedSkus \
  --query "value[].{skuId:skuId, skuPartNumber:skuPartNumber}[?contains(skuPartNumber,'DEVELOPERPACK_E5')]"

SKU 番号を取得できました。


「 testuser 」に E5 ライセンスを割り当てます。

az rest \
  --method post \
  --uri https://graph.microsoft.com/v1.0/users/$(az ad user show \
  --id testuser@$domain \
  --query id \
  --output tsv)/assignLicense \
  --body '{
    "addLicenses": [
      {
        "disabledPlans": [],
        "skuId": "c42b9cae-ea4f-4ab7-9717-81576235ccac"
      }
    ],
    "removeLicenses": []
  }'

E5 ライセンスを割り当てる事ができました。

Azure ポータルで「 testuser 」に E5 ライセンスが割り当てられているか確認します。

新規ユーザーでサインインしてメール送受信

Outlook on the web にアクセスします。
ユーザー名を入力し「次へ」をクリックします。


パスワードを入力し「サインイン」をクリックします。


「今はしない」をクリックします。


「はい」をクリックします。


Outlook on the web にサインインできました。
「新規メール」をクリックします。


宛先、件名、本文を入力します。
送信アイコンをクリックします。


宛先に指定したメールアカウントでメール受信を確認します。
「 testuser 」からメールが送られてきた事が確認できます。
「返信」をクリックします。


本文を入力し「送信」をクリックします。


Outlook on the web に戻りメール受信を確認します。


検証用に作成した「 testuser 」を削除します。

az ad user delete \
  --id testuser@$domain

ユーザー一覧から「 testuser 」が消えました。


「削除されたユーザー」をクリックすると「 testuser 」が表示されます。
一定期間内であれば、ここから誤って削除したユーザーを復元する事ができます。

まとめ

  • Azure でカスタムドメインを取得しました。
  • Azure AD と Microsoft 365 にカスタムドメインを登録しました。
  • 検証用ユーザーを作成しメールの送受信を試しました。

これで、カスタムドメインを使った Azure や Microsoft 365 の検証が可能となりました。

このブログ記事が誰かの何かの参考になればうれしいです。 最後まで読んで頂き、ありがとうございます。

お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録