Infrastructure engineer's blog

Infrastructure engineer's blog

関東圏で働くインフラエンジニアの常日頃

vCSAでのメール通知テスト方法

vCenter Serverで検知するアラームをメールで通知したい場合はSNMPトラップやメール送信などを利用するケースがありますが、今回はアラームを意図的に発報してメール通知を確認する方法と、躓いた点について記事としてまとめます。

環境構成

通知送信元:vCenter Server 7.0 Update2

通知送信先Windows Server 2016上に構成した SMTPサーバ

                      ※fakeSMTPを使用                          

FakeSMTP – FakeSMTP - Dummy SMTP server for developers

 

テスト環境構成

vCenter Server側ではメールサーバとメール送信者を設定します。

f:id:nsma077:20210814091319j:plain

 

今回は[ホストの接続と電源状態]の事前定義アラームを利用する為、メール送信先を設定しておきます。

f:id:nsma077:20210814092020j:plain

 

FakeSMTPを起動し、ポート25でメール受信を待機します。

f:id:nsma077:20210814091653j:plain

f:id:nsma077:20210814091708j:plain

送信テスト実施

vCenter Server管理のESXiホストをパワーオフし、意図的に応答なし状態とします。

結果として、vCenter Serverはホストと接続できない状況となる為、[ホストの接続と電源状態]のアラームが発報されます。

f:id:nsma077:20210814092318j:plain

問題点

ここまでは予定通りでしたが、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サーバ側に

メールが到達している事が確認できました。

f:id:nsma077:20210814095814j:plain

 

所感

躓く点が多かったですが、メール送信テストでDNSサーバの設定変更やレコード登録などは手間がかかります。その為、SMTPサーバのアドレスをsendmail側の設定変更で解消できれば大きな手間は掛からない事がわかりました。