Setup A Notification System For Labs And Home Networks
In the video below, we show how to setup a notification system for labs and home networks
Sending and receiving alerts from IT devices is extremely important
Whether something has gone wrong or a capacity limit has been reached, you’ll want to know so that you can take action
But if you have a lab or home network, setting up your own internal email server isn’t always practical
And that’s where an SMTP gateway like Mailrise can help
You still send emails to it but it converts and forwards these on to messaging services like Discord, Pushover, Slack, etc
And this can be very useful because you won’t have to store public credentials on all of your devices that need to send alerts
Useful links:
https://github.com/YoRyan/mailrise
https://github.com/caronc/apprise
https://github.com/caronc/apprise/wiki/Notify_slack
https://slack.com
https://api.slack.com/apps
Assumptions:
Now because this video is specifically about setting up Mailrise, I’m going to assume you already have Docker installed or you know how to set it up
If not then I do have another video which shows you how to install that in a Debian VM running on Proxmox VE so you can get the best out of both technologies
Setup Mailrise:
One way to install Mailrise is to set this up in Docker using Docker Compose
So we’ll edit the YAML file
nano docker-compose.yml
version: '3.8'
services:
mailrise:
image: yoryan/mailrise:latest
container_name: mailrise
ports:
- '8025:8025'
restart: unless-stopped
volumes:
- ./mailrise/mailrise.conf:/etc/mailrise.conf
NOTE: Adding the version and services section are only necessary when a new file is being created
We want to give this container a meaningful name, we’ll stick with the default port of 8025 and we want the service to always restart unless we’ve manually stopped it for maintenance for instance
We’ll need to configure Mailrise with details about the messaging service(s) so we bind the container configuration file to an external file we’ll edit going forward
Create Slack Account:
Now Mailrise supports a lot of services that you can forward alerts to
And for this video we’ll set it up to use Slack which is a messaging service that you can use for free
First you need to create an account, so head to the following URL and click Try For Free in the top right corner
https://slack.com
Enter your email address and then click Continue
The login process is passwordless so check your email and use the confirmation code you receive to sign into Slack
Once you’re logged in click Create Workspace
Then give this a meaningful name e.g. Home Network then click Next
Change your user details if you wish then click Next
As this is just for alerts, you can click Skip this step then click Skip Step to confirm
You’re then asked to create a channel so enter a meaningful name for this e.g. alerts then click Next
Create Slack App:
You’ll probably see blogs and videos out there for Slack referring to Incoming Webhooks but these appear to be getting deprecated
In which case we’ll create a Slack App
To do that navigate to the following URL
https://api.slack.com/apps
Click Create an App then click From Scratch
Enter a useful name e.g. mailrise
Select the workspace that was created earlier
TIP: If the workspace you want to use is not showing, click Sign into a different workspace
Now click Create App
Create Slack Bot:
The next thing to do is to create a Bot so under Add features and functionality click Bots
Now click Review Scopes to Add
Under Scopes and Bot Token Scope click Add an OAuth Scope
Select chat:write
In the left hand pane select Install App then click Install to Workspace
Now click Allow
You’ll be presented with a Bot User OAuth Token so click Copy and paste into a text editor for instance as we’ll need to use it later
NOTE: You must keep this secret as anybody who knows this can send messages to your slack Workspace. I’ll delete the App after creating the video, so I don’t mind showing this token as an example
TIP: You can find this at a later date by selecting OAuth & Permissions in the left hand pane
Add Bot To Channel:
Next we need to add the Bot to the channel we want to receive alerts in
Navigate to your Workspace and that channel in particular, then in the message box type in @ and select the app we created from the drop down list
Hit return or click the send button then click Add to Channel to confirm
Configure Mailrise:
I want to keep my container files separated so the first thing we’ll do is to create a folder
mkdir mailrise
And then we’ll create the configuration file
nano mailrise/mailrise.conf
configs:
slack:
urls:
- slack://mailrise@xoxb-5713301677127-5725021288613-LxQxkzpBW2arJvvHcRP5mOVf/#alerts
In the above example, the format we’re using is the name of the App, in this case mailrise, followed by @ then the Bot User OAuth Token, then a / then a # and then the channel, in this case alerts
Now save and exit
Now we can start Mailrise
docker compose up -d
Testing:
To test Mailrise we’ll send it an email
By default there is no security i.e. no login credentials or a trusted TLS certificate for encrpytion but you can add these later
The email address to send emails from doesn’t really matter so it’s up to you, but you could use this as a way to identify the alerting device
The destination address, however, should include the service you want to use followed by the domain name
Unless you define a domain name in the Mailrise configuration file, this defaults to mailrise.xyz
So to send an alert to pushover for instance, the destination email address would be pover@mailrise.xyz
In our case we’re using Slack and so this should be slack@mailrise.xyz
Bear in mind that the server listens on TCP port 8025 rather than the usual port 25
One way to test this on a Windows computer is to use Powershell, for example
send-mailmessage -from "admin@homelab.local" -to "slack@mailrise.xyz" -subject "Windows Test" -body "Test message" -smtpserver 192.168.1.10 -port 8025
Although you’ll need to at least replace server IP with what’s relevant for you
NOTE: The command can be restrictive on the domain name. For instance, homelab.lan isn’t accepted but homelab.local is
An option for Linux users, if you don’t want to install additional software is to use Telnet, for example
telnet localhost 8025
HELO homelab.local
mail from:admin@homelab.local
rcpt to:slack@mailrise.xyz
data
from: admin@homelab.local
subject: Linux Test
Test Message
.
quit
For this example I used the Linux computer running Docker and thus Mailrise and so can reference it as localhost
In the example data I didn’t specify the email recipient as it doesn’t matter, but I did include the email address this is being sent from because without it, the alert would show up as from No Sender
Summary:
Now the beauty of this setup to me is that there isn’t much to configure and it should be easy to backup and restore
But once Mailrise is up and running, you can now point most applications and devices to this SMTP gateway to receive alerts
Better still, you’ll be able to receive these on an App which should be easier to find than if your were sending them to a general email account
Now there are lots of alternative services to Slack you can use, but for me at least it’s free and comes with a 90 day history limit, and as alerts are meant to be acted on ASAP anyway that’s not a problem
Just bear in mind though that by default there is no security or encryption for the emails being sent to Mailrise so it might be something you’d want to setup
Sharing is caring!