Sunday, 29 November 2020

Command Line Mail setup OpenPlotter

Command Line Mail setup for OpenPlotter2. We use this to send an email triggered by the OpenCPN plugin, Watchdog.  

OpenCPN Watchdog plugin (command function) can execute a command to send out an email, we use this for remote monitoring by Gmail. 

Using SSMTP on openplotter2 to send email, well SSMTP does not seem to work any longer, try as I did, it didnt connect with gmail. 

Eventually I found msmtp as an alternative to SSMPT and I was able to get it up an running in no time and had OpenCPN Watchdog emailing me with alarms.  

First thing I did was open a Gmail account, I use a Gmail account specially for the boat because I needed to change one of the the security settings to be less secure during login. DO NOT use existing accounts or usual passwords because they can be exposed.

Open a new Gmail account and enable:

https://www.google.com/settings/security/lesssecureapps

1. Enabling less secure apps to access Gmail

2. Open your Google Admin console (admin.google.com).

3. Click Security > Basic settings .

4. Under Less secure apps, select Go to settings for less secure apps .

5. In the subwindow, select the Enforce access to less secure apps for all users radio button. 

6. Click the Save button.



You can install the msmtp package with:

$sudo apt-get install msmtp msmtp-mta

The configuration file is located here : /etc/msmtprc

Strangely enough, it is empty with no clues, which is different from the old ssmtp.conf file.

However, there is a description with details if you use the man $man msmtp, or just copy and paste the contents I have supplied changing the necessary acount details.

For gmail accounts, these are the specific elements you should put into /etc/msmtprc:  

$sudo nano /etc/msmtprc


# Generics, important tls needs to be on when using port 587
defaults
auth           on
tls            on
# following is different from ssmtp:
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# user specific log location, otherwise use /var/log/msmtp.log, however, 
# this will create an access violation if you are user pi, and have not changes the access rights
logfile        ~/.msmtp.log
# Gmail specifics, you shouldnt need to change these
account        gmail
host           smtp.gmail.com
port           587
# You need to change these
from          your-vessel-gmail-account_name@gmail.com
user          your-vessel-gmail-account_name@gmail.com
password      your-vessel-gmail-account-password
# Default
account default : gmail


Save the file close nano and exit.


You can test if this now works with:

$echo 'your test message' | msmtp destination-email-address@xxxxxxx.com

I have not yet found a way to set the subject, there is no -s flag as with ssmpt.

However, if you also install mailutils:

$sudo apt-get install mailutils

Then these should work:

$echo 'message' | mail -s "Hello" destination-email-address@xxxxxxx.com

$echo 'message' | sendmail destination-email-address@xxxxxx.com

You can use both mailutils and mpack with msmtp just as you did with ssmtp.

So any scripts that you have used before with ssmtp, mailutils or mpack should work just the same using msmtp.

Setting up the command script file to use in OpenCPN plugin, Watchdog.

 You can have Watchdog execute a computer command. We wanted Watchdog to send us an email if our boat moves or the NMEA data stops. We stored the command to email a boat moving alarm in a shell file called: AnchorAlarmEmail.sh and for the loss of NMEA data: NMEA_Data_Missing.sh

First up create a new directory called bin in /home/pi  

$mkdir bin  

Reboot the computer, the bin file will be seen on reboot.

After creating the files with nano $sudo nano AnchorAlarmEmail.sh and $sudo nano NMEA_Data_Missing.sh  

Save them to the created /home/pi/bin directory I changed the permissions of the file to make them executable. 

$sudo chmod 755 AnchorAlarmEmail.sh 

$sudo chmod 755 NMEA_Data_Missing.sh


As an example of the file, here is the format of the NMEA data loss script file NMEA_Data_Missing.sh: 

#!/bin/bash
echo "GPS NMEA Data Loss" | mail -s "Danger Will Robertson" destination-email-address@xxxxxxx.com 

Or for the Anchor watch script file AnchorAlarmEmail.sh

#!/bin/bash
echo "Boat appears to be on the move. Best regards, the Watchdog " | mail -s "ON THE MOVE" destination-email-address@xxxxxxx.com

You may want to send the email to your most used account that will alarm on your phone when an email is received, we don't send mail to the same account as we receive it from, but this is a personal choice.

Before running the test to check if the shell script works, shutdown and reboot OpenPlotter

 Then test the shell file is going to work. After reboot open a terminal window and type in AnchorAlarmEmail.sh or NMEA_Data_Missing.sh 

If these files are working, you receive an email or two, then you can go ahead and configure WatchDog to select these files as a command to execute.