vCSAでのメール通知テスト方法
vCenter Serverで検知するアラームをメールで通知したい場合はSNMPトラップやメール送信などを利用するケースがありますが、今回はアラームを意図的に発報してメール通知を確認する方法と、躓いた点について記事としてまとめます。
環境構成
通知送信元:vCenter Server 7.0 Update2
通知送信先:Windows Server 2016上に構成した SMTPサーバ
※fakeSMTPを使用
FakeSMTP – FakeSMTP - Dummy SMTP server for developers
テスト環境構成
vCenter Server側ではメールサーバとメール送信者を設定します。
今回は[ホストの接続と電源状態]の事前定義アラームを利用する為、メール送信先を設定しておきます。
FakeSMTPを起動し、ポート25でメール受信を待機します。
送信テスト実施
vCenter Server管理のESXiホストをパワーオフし、意図的に応答なし状態とします。
結果として、vCenter Serverはホストと接続できない状況となる為、[ホストの接続と電源状態]のアラームが発報されます。
問題点
ここまでは予定通りでしたが、FakeSMTP側ではメールを受信していませんでした。
VMware KBで該当しそうな以下の対処を実施したものの、解消しない状況でした。
アラート/イベントがトリガーされた後に vCenter Server Appliance からアクション メールが送信されない (54375)
https://kb.vmware.com/s/article/54375?lang=ja
問題個所の確認
vCSAのジャーナルログを見ると、sendmail自体は動作していますが送信先のアドレスが解決できない為に処理が止まっているようにみえます。
Aug 14 09:19:19 vcsa.test.local sendmail[11942]: 17E9JJE9011942: from=send@example.com, size=1075, class=0, nrcpts=1, msgid=<202108140919.17E9JJE9011942@vcsa.test.local>, relay=root@localhost
Aug 14 09:19:19 vcsa.test.local sendmail[11953]: 17E9JJSk011953: ruleset=check_mail, arg1=<send@example.com>, relay=vcsa.test.local [127.0.0.1], reject=451 4.1.8 Domain of sender address send@example.com does not resolve
今回はダミーのメールアドレスを設定しているので、sendmail自体が名前解決を必要としていて、処理が進行していない状況にみえます。
調べてみると、sendmailはメールを送信する際にDNSサーバにMXレコードを問い合わせて送信するようなので、DNSサーバにダミーのドメインが登録されていない事が原因のようです。
回避手段
vCSAのsendmailの設定ファイル sendmail.cf に直接SMTPサーバのアドレスを記述する事で、DNSサーバへのMXレコードの問い合わせを行わないように設定します。
以下の手順でファイルを修正、sendmailを再起動します。
① ファイルの権限を一時的に変更
# chmod 777 /etc/mail/submit.cf
② viエディタで submit.cf の以下を修正し、SMTPサーバのアドレスを追記
---------------------------------------
# "Smart" relay host (may be null)
DS[192.168.1.45]
---------------------------------------
③ ファイルの権限を元に戻す
# chmod 444 /etc/mail/submit.cf
④ sendmailサービスを再起動
# systemctl restart sendmail
結果
再度ESXiホストをパワーオフした際の動作を確認したところ、SMTPサーバ側に
メールが到達している事が確認できました。
所感
躓く点が多かったですが、メール送信テストでDNSサーバの設定変更やレコード登録などは手間がかかります。その為、SMTPサーバのアドレスをsendmail側の設定変更で解消できれば大きな手間は掛からない事がわかりました。