Azureにて、IP→ドメインの逆引き設定をする


Azure上のホストから送ったメールがrejectされる

Azure上にサーバを構築し、定期的にメールを送信する機能を実装。Azure単体ではメール送信できないため、送信する部分はSendGridを利用。

参考:
Azureではメール送信できないし、メールサーバもつくれない

cronで定時にメールを送っていたら、ある相手のサーバから、弾かれる。mail.logを見ると、(見やすいように改行入れています)

Oct 16 19:09:01 (ホスト名) postfix/smtp[57917]:
 A8D14809EC: to=<xxxxxxx>, relay=xxxxx[xxx.xxx.xxx]:25, (省略)
 status=deferred (host xxxxx.xx.xx.jp[xxx.xxx.xx.xxx] 
refused to talk to me: 450 4.7.1 Client host rejected: 
cannot find your reverse hostname, [自ホストのIP])

IPからホスト名を逆引きできないので弾きましたと。

まぁ、そうだね。逆引き設定しておこう。と思ったら、結構手こずりました。

Azure Portal で DNSゾーン編集

すでに、該当ホストにてSendgrid用の設定や、その他DNSゾーンの設定を行っていたので、そこにPTRレコードを追加する。(PTRレコードの書き方については省略)

PTRレコードとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

よっしゃできたー!と思ったら、、、

何時間経っても逆引きできない

逆引きできるかできないかの確認は、nslooupで、ipを入力してhostが帰ってくればOK。

Azure Portalだけでは、逆引き設定を完了できない

いろいろ調べたら驚きの記述が。

Azure でホストされているサービスの逆引き DNS を構成する より、

Azure Portal を使った PublicIpAddress リソースの逆引き DNS の構成は、現在はサポートされていません。

ではどうするか。Power Shellか、Azure CLIを使ってコマンドで設定を変更する必要がある(やだなぁ~こわいな~

Azure Portal > Azure CLIにてコマンド投入

Azure Portalの右上のコンソールアイコンから、Cloud Shellを開く。(Cloud Shellを初めて使う場合は、その分のstorageを最初に作る)

Cloud Shellは、Bashか、PowerShellかを選択可能。今回はBashを選択。

Requesting a Cloud Shell.Succeeded.
Connecting terminal...

Welcome to Azure Cloud Shell

Type "az" to use Azure CLI
Type "help" to learn about Cloud Shell

(アカウント名)@Azure:~$

次に、Azure でホストされているサービスの逆引き DNS を構成する をより

$ az network public-ip update --resource-group MyResourceGroup 
  --name PublicIp --reverse-fqdn contosoapp1.westus.cloudapp.azure.com.

を参考にして、自分のリソース名に置き換える

$ az network public-ip update --resource-group (リソースグループ名) 
  --name (パブリックIPアドレスのリソース名) --reverse-fqdn (逆引きしたいホスト名)

この--name欄が、PublicIpと書いてるので、最初IPアドレスを入れていたが、IPアドレスではなく、IPアドレスのリソース名を指定する必要がある(分かりづらい)

実行結果は、

The domain name label in the dnsSettings section of 
the public IP address (IPリソース名) is null or empty. 
If a dnsSettings section exists, its domain name label must not be null or empty.

Azure Portalで"パブリックIPアドレス"リソースを編集

逆引きの元となるIPを管理しているパブリックIPアドレスのリソースを開き「構成」メニューを開く。

DNS名ラベル(オプション)

があるので、そこに自ホスト名を入力し保存。再度、コマンド投入

$ az network public-ip update --resource-group (リソースグループ名) 
  --name (パブリックIPアドレスのリソース名) --reverse-fqdn (逆引きしたいホスト名)

JSONのレスポンスがわーっと出てきたら成功。

nslookupやdigコマンドにて、IPアドレスからホスト名が引けたら設定完了

Azure上のホストからIP→ホスト名の逆引き設定を行うための要点

  • Azure Potarl上のDNSゾーン編集では、逆引き設定(PTR)が出来ない
  • azコマンドの--name には、IPアドレスではなく、パブリックIPアドレスのリソース名を指定する
  • パブリックIPアドレス リソース中にて、DNSラベル名を設定する

以上です。