Configure sendEmail commands to use an existing smtp server

The the host-notify-by-sendemail & service-notify-by-sendemail commands use the sendEmail perl script to send email notifications. sendEmail has many options that can be used to configure sending email for more complex mail system requirements, including using an external smtp server to send email.

To use an external smtp server you will need to add the -xu, and -xp flags to the sendEmail command. We will also need to set user macros to represent the parameters we need to pass to sendEmail. In this example we will use USER13 for the smtp server, USER14 for the SMTP username & USER15 as the SMTP password.

  1. Update the resource macros
    1. Navigate to Configuration > Control > Nagios Resource Macros
    2. Enter the fqdn hostname or ip address of the smtp server you wish to use into USER13. Using an IP address tends to be more resilient to local DNS failures.
    3. Enter the SMTP username you will use to send email with into USER14
    4. Enter the SMTP password you will use to send email with into USER15
  2. Update the *-notify-by-sendemail commands to use the new parameters
    1. Navigate to Configuration > Commands > Copy
    2. Select 'host-notify-by-sendemail'
      1. Set the new command name to 'host-notify-by-sendemail-smtp'
      2. type should be left as 'notify'
      3. Change the new command definition to:
        /usr/bin/printf "%b" "<html><b>+++++ HOST $NOTIFICATIONTYPE$ : $HOSTSTATE$
        +++++<br>$LONGDATETIME$</b><br>Host: <b>$HOSTALIAS$ ($HOSTADDRESS$)</b></b><br>Message:
        <b>$HOSTOUTPUT$</b></html>" | /usr/local/groundwork/common/bin/sendEmail -s $USER13$
        -xu $USER14$ -xp $USER15$ -q -f $ADMINEMAIL$ -t $CONTACTEMAIL$ -u "[GW] ++ $HOSTNAME$ :
         $HOSTSTATE$ ++"
        
      4. Click 'Add'
    3. Now do the same to copy the 'service-notify-sendemail' to 'service-notify-by-sendemail-smtp'
      1. Use the following new command definition
        /usr/bin/printf "%b" "<html><b>+++++ SERVICE $NOTIFICATIONTYPE$ : $SERVICESTATE$
        +++++<br>$LONGDATETIME$</b><br>Host: <b>$HOSTALIAS$ ($HOSTADDRESS$)</b></b><br>Message:
        <b>$SERVICEOUTPUT$</b></html>" | /usr/local/groundwork/common/bin/sendEmail -s $USER13$
        -xu $USER14$ -xp $USER15$ -q -f $ADMINEMAIL$ -t $CONTACTEMAIL$ -u "[GW] ++ $HOSTNAME$ :
        $SERVICEDESC$ : $SERVICESTATE$ ++"
        
      2. Click 'Add'

Now you should be able to use the host-notify-by-sendemail and service-notify-by-sendemail commands in your contact templates for notifications.

Configuration -> Contacts -> Contact templates -> modify -> NameOfTemplate

Or for individual contacts:

Configuration -> Contacts -> Contacts -> modify -> NameOfContact

The full list of settings for sendEmail are as follows:

/usr/local/groundwork/common/bin/sendEmail --help
sendEmail-1.52 by Brandon Zehm <[email protected]>
Synopsis:  sendEmail -f ADDRESS [options]
  Required:
    -f ADDRESS                from (sender) email address
    * At least one recipient required via -t, -cc, or -bcc
    * Message body required via -m, STDIN, or -o message-file=FILE
  Common:
    -t ADDRESS [ADDR ...]     to email address(es)
    -u SUBJECT                message subject
    -m MESSAGE                message body
    -s SERVER[:PORT]          smtp mail relay, default is localhost:25
  Optional:
    -a   FILE [FILE ...]      file attachment(s)
    -cc  ADDRESS [ADDR ...]   cc  email address(es)
    -bcc ADDRESS [ADDR ...]   bcc email address(es)
  Paranormal:
    -xu USERNAME              authentication user (for SMTP authentication)
    -xp PASSWORD              authentication password (for SMTP authentication)
    -l  LOGFILE               log to the specified file
    -v                        verbosity, use multiple times for greater effect
    -q                        be quiet (no stdout output)
    -o NAME=VALUE             see extended help topic "misc" for details
  Help:
    --help TOPIC              The following extended help topics are available:
        addressing            explain addressing and related options
        message               explain message body input and related options
        misc                  explain -xu, -xp, and others
        networking            explain -s, etc
        output                explain logging and other output options