Linux machines may require administrative intervention in countless ways, but without manually logging into them how would you know about it? Here’s how to setup emails to get notified when your machines want some tender love and attention.
Of course, this technique is meant for real servers, but if you’ve got a Linux box sitting in your house acting as a home server, you can use it there as well. In fact, since many home ISPs block regular outbound email, you might find this technique a great way to ensure you still get administration emails, even from your home servers.
Configuring the Email sending ability for a machine immediately gives us the upshot that a lot of the system’s administration problems and critical alerts will be automatically sent to that system’s designated administrator. The most noteworthy example is that cron job execution errors fall into this category and therefore will notify the admin that there was a problem with scheduled jobs such as backups as soon as they happen including the standard error (stderr) output in the report. We will also be able to incorporate emailing from bash scripts.
Don’t worry—it usually doesn’t spam you with too much information and you can just de-configure it if it becomes to annoying.
On Debian based systems, other then a lot of very versatile emailing related programs there is also the ssmtp package, which is well suited if all you want to do is have an agent to send emails using another email server (MTA), without having to setup an entire postfix or sendmail configuration to do so.
Prerequisites and assumptions
Before we get started, you’ll want to make sure that all of these conditions are met:
- You have an SMTP server that can receive the emails from your machines and send them to the recipient (i.e. your corporate exchange or Gmail).
- You have the credentials for a user that is able to send Email on that server (i.e. a mailbox or a Gmail account).
- This procedure has been used and tested on *Debian based systems (Lenny, Ubuntu & Mint), so if your not on one of those distributions your mileage may vary.
- You will see me use VIM as the editor program, this is just because I’m used to it… you may use any other editor that you’d like.
*It is also used and tested on DD-WRT, but will only be covered in a future article (update: isn’t the future fun?) due to the setup and configuration variations necessary for such an embedded platform.
To install the ssmtp (Simple S.M.T.P) package, use the following command:
sudo aptitude install ssmtp
Then edit the configuration file:
sudo vim /etc/ssmtp/ssmtp.conf
Adjust and add as necessary the following parameters:
Change it from postmaster to the machines admin’s Email.
Your mail server in our case this is Gmail so we have to specify the port as 587, for regular SMTP servers this is usually not necessary.
Usually the name of the machine is automatically filled by the package setup, if the machine has a mailbox this should be fine, but if it doesn’t or the name is not the same as the mailbox adjust accordingly.
Enable TLS for secure session communication.
The username of the sending mailbox.
The password of the sending mailbox..
Sends the hostname instead of root[root@hostname.FQDN].
In order to make the default (root) “from” field be the server name, edit the /etc/ssmtp/revaliases file:
sudo vim /etc/ssmtp/revaliases
And add into it the desired translation which in our Gmail examples case will be:
Incredibly this is all you have to do to enable the ability. From now on, the machine will Email you when something is up.
Lets test that our ssmtp setup was correct by sending an Email:
echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv email@example.com
The “-vvv” turns on verbosity output so don’t get alarmed… this is just in case you encounter any problems, you will have some sort of output to Google for.
If all goes well, you should be getting the Email in a couple of seconds.
We will show scripted examples of this setup in future articles.
May your Emails be of the non-bouncing variety :)