Skip to content

Set up the Email Media Type

Video Lecture

Set up the Email Media Type Set up the Email Media Type

Description

It is important to get alerts when a trigger fires in Zabbix.

In this section, we will configure Zabbix to send trigger alerts via an external SMTP server.

You will need an SMTP server. Many corporations will provide an SMTP service for their staff. This same service can be used to send emails from Zabbix.

You will need an email account in your email provider, zabbix@your-domain.tld perhaps may be good. You will also need an accessible SMTP server address, e.g., mail.example.com and a port, usually 25 or 465.

In this video, I already have a domain that I purchased from Namecheap. For an extra $1 a month, I can get an email service add-on that I can use to send and receive emails. I will configure Zabbix to use this email service.

If you have a corporate email service that you already connect your work mobile phone to, then the set-up process and settings will be very similar. You will be able to use Zabbix to send emails using your work email address.

If you don't have any email service that you can use to programmatically send emails from, then you can try installing PostFix on your Zabbix server. In recent times though, this option has become much harder to implement since many cloud providers now block outbound SMTP for new users to minimize the possibility of sending spam. I have instructions below on setting up a send-only SMTP server for Zabbix.

So, to get started setting up your Email provider in Zabbix, you will need the SMTP server address, SMTP server port, a valid email address and password that will be used to send emails through your email service.

See this image below for an example.

External SMTP

Set up Send-Only SMTP using PostFix

If you don't already have an SMTP server for sending emails, you can also install a "Send Only" server on the Zabbix Server itself.

To install Postfix on your Zabbix server

On Ubuntu,

sudo apt install mailutils

On CentOS,

sudo dnf install postfix

On Ubuntu, a postfix config screen should appear,

select 'internet site'

Enter the mail servers name, it should be the URL you've already configured in your domain name provider.

For example, I've already set up an A name record for zabbix.sbcode.net, and it now points to the IP Address of my Zabbix Server.

Try a ping to ensure your domain resolves to your Zabbix servers IP address.

ping zabbix.your-domain.tld

Note

Of course, replace your-domain.tld with your actual domain. E.g., zabbix.sbcode.net

Then configure postfix by calling

sudo nano /etc/postfix/main.cf

scroll to the bottom, and set

inet_interfaces = loopback-only
inet_protocols = ipv4

If you didn't get the configuration page when installing postfix (CentOS usually), also ensure you have your domain name added to the main.cf.

myhostname = zabbix.your-domain.tld
mydomain = your-domain.tld          #<---note that any subdomain part is not included here
mydestination = $myhostname, localhost.localdomain, localhost

Restart postfix

sudo systemctl restart postfix

Try sending an email from the command line,

Ubuntu 20

echo "This is the body" | mail -s "This is the subject" -a "FROM:root@your-domain.tld" your@email-address

Centos 8

echo -e "Subject: This is the subject\n\nThis is the body\n" | sendmail -f root@your-domain.tld -v your@email-address

Sending an email from the command line must work before you continue. "Work", means that you got an email in your inbox.

See image below for sample settings connecting to a locally hosted SMTP server.

Minimal Email Media Type Settings in Zabbix UI

You are very likely to have problems using a local SMTP server since many cloud providers will automatically block outbound SMTP beyond your control.

If you still want to try, then you will also need to make sure that reverse DNS lookups work for your chosen domain name.

E.g., using the host command on a different server, query your Zabbix server by its domain name.

E.g.,

host zabbix.your-domain.tld

> zabbix.your-domain.tld has address 111.222.333.444

Then do the reverse look up

host 111.222.333.444

> 444.333.222.111.in-addr.arpa domain name pointer zabbix.your-domain.tld.

If the reverse DNS lookup works for your domain, and the responses point back to each other, then you may have fewer issues with email delivery.

If you use a Digital Ocean server, you can set up reverse DNS for your domain name by naming your droplet the same as your domain name, and then wait a few hours and try again.

Alternatively, you could instead set the PTR record in Digital Ocean at the menu options Networking ⇾ PTR Records.

Other cloud providers should also allow you to edit PTR records as well.

If you don't have the host command on your server, you can install it with,

Ubuntu 20.04 LTS

sudo apt-get install dnsutils

Centos 8

sudo dnf install bind-utils

You can also try setting your servers host name.

hostnamectl set-hostname your-domain.tld

Check your mail spool for any SMTP rejection messages. E.g.,

cat /var/spool/mail/zabbix
cat /var/spool/mail/root

Try using root@your-domain.tld as the sender

If you want to send as a different user, e.g., zabbix@your-domain.tld, you can set up an alias in the file /etc/aliases. E.g.,

zabbix:         root

You may need to create an MX record for your domain at your DNS provider. Use https://dnschecker.org/#MX or https://mxtoolbox.com to check for propagation for your-domain.tld

your-domain.tld.         7200    IN      MX      10 zabbix.your-domain.tld.

Also try checking your log files for any clues

cat /var/log/mail.log   (Ubuntu)
cat /var/log/maillog    (Centos)

Check the postfix service status that it is running

sudo service postfix status

Try Postfix check

postfix check

Check your domain name resolves to the IP of your Zabbix server. E.g.,

ping zabbix.your-domain.tld

Try pinging your destination email address domain from your server. E.g.,

ping my-email-address-domain.com

If you ever need to rerun the postfix configuration wizard (Ubuntu), then run

sudo dpkg-reconfigure postfix

Note that this is only a minimal SMTP configuration designed to demonstrate sending emails from Zabbix. Avoiding the SPAM folder for all possible email providers is a major task and outside the scope of this course. Usually as the Administrator, you are the recipient of the emails, so you have the options in your email clients to set up rules to sort incoming messages and add senders to safe lists.

Also, you can continue on with the course and try other forms of message delivery such as Slack and Telegram which are discussed in the next few lessons.

PrivateEmail SMTP

In the video, I use my PrivateEmail SMTP service to send emails. Most domain name providers will provide an add-on service that lets you send and receive emails, usually for an extra charge.

If you have registered a domain name through Namecheap, then you also have the option of adding the PrivateEmail service (about $1 a month extra minimum for 1 email address)

Below are sample settings connecting to the external PrivateEmail SMTP server.

External SMTP

Namecheap

Postfix Basic Configuration

Macros

Comments