Jun 222015
 

I had to build my own email sender script for Zabbix as I needed some mangling done on the subjects that was being sent out.
I used python to build it so that I could then use some regex to strip out the garbage that I needed stripped out.

First thing you need to do is to create the email script for Zabbix to run when it receives an alert.
The default location for these scripts is /usr/lib/zabbix/alertscripts/ but this can be customised from the Zabbix server configuration file.

This is the python script that I used, I named it emailalert.py, so the full path for this script should be /usr/lib/zabbix/alertscripts/emailalert.py.

In this example script, I’m only removing text <EMAIL> from any subjects that may have it. This is because some alerts that are being generated have an <EMAIL> tag to enable Zabbix to recognise that the alert needs to go through email, however the team receiving the alert doesn’t want the <EMAIL> tag on the subject line of the email they receive.

#!/usr/bin/python
import smtplib
import sys
import re

email = sys.argv[1]
subject = sys.argv[2]
body = sys.argv[3]

subject = re.sub('<EMAIL>',"",subject)

sender = "Zabbix <zabbix@example.com>"

message = """From: Zabbix <zabbix@example.com>
To: """+email+"""
Subject: """+subject+"""

"""+body+"""
"""

try:
smtpObj = smtplib.SMTP("smtpserver.example.com")
smtpObj.sendmail(sender,email,message)
print "Success"
except SMTPException:
print "Unable to send email"

Once the script has been created, you’ll need to add the script to the Media Types under Administration in Zabbix.
Create a new media type, and give it a name. I’ve called mine Email Script.
For the type, choose Script, and then for the Script Name, use the name that you’ve given the script. In my case, I’ve called it emailalert.py

My Media type configuration

My Media type configuration

Once this is done, you’ll need to set up email addresses for users that need emails through this new script by going to each user, and setting up a new media entry with the type being Email Script

Share
Apr 272015
 

My Mobile Phone provider sends me bills via email which is all good and dandy, but for some odd reason the email addresses that the bills are sent from are never the same.
They change the number on the end like this –

billing2@online2.provider.com
billing3@online3.provider.com
billing4@online4.provider.com

This makes GMail’s filtering useless as it cannot filter by only domain, or so I thought.

After some Googling, I found out that you can actually use the following RegEx in the GMail search bar to search via domain of the email sender – (online2|online3|online4).provider.com

Using the RegEx, I got all the emails from *@online.provider.com, which means that I can now automatically label all the emails that come from my Mobile Phone provider using a filter, or so I hope.
I’ve set up the filter now, just waiting on a bill to come through so I can verify that it works πŸ™‚

Edit:
Updated the example to a better example, and This is what I found in case anyone was wondering

Share