Emails are not sent from vCenter Server Appliance after an Alert/Event is triggered.
search cancel

Emails are not sent from vCenter Server Appliance after an Alert/Event is triggered.

book

Article ID: 321441

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

  • Alert/Event is triggered but action mail is not being sent from vCenter Server Appliance.
  • In /var/log/vmware/messages, you see entries similar to
sendmail[24224]: w0VHA0uD024224: from=vcadmin@example.com, size=548, class=0, nrcpts=1, msgid=<xx@vcsa65.example.com>, relay=root@localhost
sendmail[24224]: w0VHA0uD024224: to=alert-mail@example.com, delay=00:01:05, mailer=esmtp, pri=30548, dsn=4.4.3, stat=queued
sendmail[918]: w2M2CHDc000918: from=xxx.com, size=516, class=0, nrcpts=1, msgid=<xx.example.com>, relay=root@localhost
sendmail[920]: w2M2CHqc000920: ruleset=check_mail, arg1=<vcadmin@example.com>, relay=photon-machine [127.0.0.1], reject=451 4.1.8 Domain of sender address vcadmin@example.com does not resolve
sendmail[918]: w2M2CHDc000918: to=alert-mail@example.com, x.x.x@example.com (0/0), delay=00:01:07, xdelay=00:01:07, mailer=relay, pri=30516, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: 451 4.1.8 Domain of sender address vcadmin@example.com does not resolve
 



Cause

This issue occurs when send mail is failing to resolve the configured recipients domain or if the relay host is rejecting the senders email address (root@localhost).

Resolution

Note1: Prior to applying resolution ensure you take a offline backup or snapshot of the vCenter Server Appliance. 
Note2: The applied configuration change may be lost after upgrade. In such case, Please apply the steps again.

1. Connect to vCenter Server Appliance via ssh.
2. Edit sendmail.service using the vi editor.

vi /etc/systemd/system/sendmail.service 
 
In recent releases, the file may be at different directory.

Case you do not find the sendmail.service under /etc/systemd/system, check the path beneath: 

/lib/systemd/system/sendmail.service (This is for 7.0 and later versions)

3. Alter the After entry under [Unit] section to be as follows:

[Unit]
    :
After=syslog.target network.target systemd-resolved.service
 
4. Save the changes and close the editor.
5. Open sendmail.mc using vi editor:

/etc/mail/sendmail.mc

6. Add following entry after OSTYPE:

FEATURE(`nocanonify')dnl
define(`SMART_HOST', `[Your_mail_host]')dnl


Note: change Your_mail_host to reflect the correct mail server hostname.

7. Save the change and close the editor.
8. Next, edit submit.mc using the vi editor.

vi /etc/mail/submit.mc

9. Add the following line at the end of the define entries:

define(`confDIRECT_SUBMISSION_MODIFIERS', `C')dnl

10. Save the change and close the editor.
11. Verify that local hostname is present and is resolvable in hosts file.

/etc/hosts

12. Execute following command and generate new .cf file

cd /etc/mail
m4 m4/cf.m4 sendmail.mc > sendmail.cf
m4 m4/cf.m4 submit.mc > submit.cf

13. Reload system daemon and restart sendmail.

systemctl daemon-reload
systemctl restart sendmail

 

At this point, the vCenter should be able to send emails to the mail server; however, the emails will be sent as root@localhost. Validate it by sending a test alarm and checking the messages log under /var/log/vmware/.

Once validated: 

  1. Make a backup copy of the submit.cf file
  2. Submit.cf is a read-only file. The permissions on this file must first be changed with this command: 
chmod 644 /etc/mail/submit.cf
  1. ​​​​​ Edit submit.cf with the vi editor
vi /etc/mail/submit.cf
  1. After the "DS", enter the FQDN of the mail server
  2. Save the file
  3. Change the file's permission back to the original permissions:
chmod 444 /etc/mail/submit.cf

For example, if the mail server FQDN is: mailserver.xyzdomain.com
​# "Smart" relay host (may be null or contain IP address)
DS [mailserver.xyzdomain.com]
 
  1. Restart sendmail daemon using systemd.

systemctl restart sendmail


Verify In vCenter GUI, Menu -> Inventory -> Configure -> General (under Settings)->Mail->Mail Server.

Additional Information

This action plan would also work in a case where we have VC trying to route the email alerts to localhost instead of SMTP server.
You would see something like following in the messages.log file:

YYYY-MM-DDTHH:MM:SS vCENTER-FQDN sendmail[7137]: 4A4Aea3w007137: to=itadmin@example.com ctladdr=itadmin@example.com  (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31012, relay=[127.0.0.1] [127.0.0.1], dsn=4.4.1, stat=Deferred: Connection refused by [127.0.0.1]


YYYY-MM-DDTHH:MM:SS vCENTER-FQDN sendmail[7136]: 4A4Aea7o007136: from=itadmin@example.com, size=1012, class=0, nrcpts=1, msgid=<202411041040.4A4Aea7o007136@vcenter-name.vsphere.local>, relay=root@localhost


YYYY-MM-DDTHH:MM:SS vCENTER-FQDN sendmail[7136]: 4A4Aea7o007136: to=itadmin@example.com;, ctladdr=itadmin@example.com  (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31012, relay=[127.0.0.1] [127.0.0.1], dsn=4.4.1, stat=Deferred: Connection refused by [127.0.0.1]