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 を構成する] (https://docs.microsoft.com/ja-jp/azure/dns/dns-reverse-dns-for-azure-services#add-reverse-dns-to-an-existing-publicipaddresses) より、
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 を構成する] (https://docs.microsoft.com/ja-jp/azure/dns/dns-reverse-dns-for-azure-services#add-reverse-dns-to-an-existing-publicipaddresses) をより
$ 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ラベル名を設定する
以上です。