]> granicus.if.org Git - icinga2/commitdiff
Notification Scripts: Ensure that mail from address works on Debian/RHEL/SUSE (mailut... 5357/head
authorMichael Friedrich <michael.friedrich@icinga.com>
Fri, 16 Jun 2017 16:29:23 +0000 (18:29 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Fri, 16 Jun 2017 18:54:24 +0000 (20:54 +0200)
fixes #5299

doc/3-monitoring-basics.md
doc/9-object-types.md
etc/icinga2/conf.d/commands.conf
etc/icinga2/scripts/mail-host-notification.sh
etc/icinga2/scripts/mail-service-notification.sh

index 4d44cc2ddfe0a9fd0151d8556dd6f7ecbbb63594..f432e4d431a156785590e5851b0f4e86ba322c53 100644 (file)
@@ -1583,7 +1583,10 @@ defaults can always be overwritten locally.
 
 #### <a id="mail-host-notification"></a> mail-host-notification
 
-A quick overview of the arguments that can be used. See also [host runtime
+The `mail-host-notification` NotificationCommand object uses the
+example notification script located in `/etc/icinga2/scripts/mail-host-notification.sh`.
+
+Here is a quick overview of the arguments that can be used. See also [host runtime
 macros](3-monitoring-basics.md#-host-runtime-macros) for further
 information.
 
@@ -1600,13 +1603,16 @@ information.
   `notification_address6`        | **Optional.** The host's IPv6 address. Defaults to `$address6$`.
   `notification_author`          | **Optional.** Comment author. Defaults to `$notification.author$`.
   `notification_comment`         | **Optional.** Comment text. Defaults to `$notification.comment$`.
-  `notification_from`            | **Optional.** Define a valid From: string (e.g. `"Icinga 2 Host Monitoring <icinga@example.com>"`)
+  `notification_from`            | **Optional.** Define a valid From: string (e.g. `"Icinga 2 Host Monitoring <icinga@example.com>"`). Requires `GNU mailutils` (Debian/Ubuntu) or `mailx` (RHEL/SUSE).
   `notification_icingaweb2url`   | **Optional.** Define URL to your Icinga Web 2 (e.g. `"https://www.example.com/icingaweb2"`)
   `notification_logtosyslog`     | **Optional.** Set `true` to log notification events to syslog; useful for debugging. Defaults to `false`.
 
 #### <a id="mail-service-notification"></a> mail-service-notification
 
-A quick overview of the arguments that can be used. See also [service runtime
+The `mail-service-notification` NotificationCommand object uses the
+example notification script located in `/etc/icinga2/scripts/mail-service-notification.sh`.
+
+Here is a quick overview of the arguments that can be used. See also [service runtime
 macros](3-monitoring-basics.md#-service-runtime-macros) for further
 information.
 
@@ -1625,7 +1631,7 @@ information.
   `notification_address6`           | **Optional.** The host's IPv6 address. Defaults to `$address6$`.
   `notification_author`             | **Optional.** Comment author. Defaults to `$notification.author$`.
   `notification_comment`            | **Optional.** Comment text. Defaults to `$notification.comment$`.
-  `notification_from`               | **Optional.** Define a valid From: string (e.g. `"Icinga 2 Host Monitoring <icinga@example.com>"`)
+  `notification_from`               | **Optional.** Define a valid From: string (e.g. `"Icinga 2 Host Monitoring <icinga@example.com>"`). Requires `GNU mailutils` (Debian/Ubuntu) or `mailx` (RHEL/SUSE).
   `notification_icingaweb2url`      | **Optional.** Define URL to your Icinga Web 2 (e.g. `"https://www.example.com/icingaweb2"`)
   `notification_logtosyslog`        | **Optional.** Set `true` to log notification events to syslog; useful for debugging. Defaults to `false`.
 
index 7c6231c9f7e859d4bd6e5e0fcacad8688d6242f5..0f4559d55e81f67a1b1779acaf0254b999bff83e 100644 (file)
@@ -1113,7 +1113,10 @@ Example:
            required = true
            value = "$notification_servicename$"
          }
-         "-f" = "$notification_from$"
+         "-f" = {
+           value = "$notification_from$"
+           description = "Set from address. Requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE)"
+         }
          "-i" = "$notification_icingaweb2url$"
          "-l" = {
            required = true
index 05e08c261617fba50384841ec7d7104a249c4b6d..2aaf44f86fd36a939eb8a5043ef81b6a6474ced7 100644 (file)
@@ -1,5 +1,11 @@
 /* Command objects */
 
+/* Notification Commands
+ *
+ * Please check the documentation for all required and
+ * optional parameters.
+ */
+
 object NotificationCommand "mail-host-notification" {
   command = [ SysconfDir + "/icinga2/scripts/mail-host-notification.sh" ]
 
@@ -15,7 +21,10 @@ object NotificationCommand "mail-host-notification" {
       required = true
       value = "$notification_date$"
     }
-    "-f" = "$notification_from$"
+    "-f" = {
+      value = "$notification_from$"
+      description = "Set from address. Requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE)"
+    }
     "-i" = "$notification_icingaweb2url$"
     "-l" = {
       required = true
@@ -78,7 +87,10 @@ object NotificationCommand "mail-service-notification" {
       required = true
       value = "$notification_servicename$"
     }
-    "-f" = "$notification_from$"
+    "-f" = {
+      value = "$notification_from$"
+      description = "Set from address. Requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE)"
+    }
     "-i" = "$notification_icingaweb2url$"
     "-l" = {
       required = true
index fba41c8907413de99d5097247d7c832f515e9d23..d9ab7075480dc57dde949f39679c063c9be46619 100755 (executable)
@@ -1,4 +1,6 @@
-#!/bin/sh
+#!/usr/bin/env bash
+#
+# Copyright (C) 2012-2017 Icinga Development Team (https://www.icinga.com/)
 
 PROG="`basename $0`"
 HOSTNAME="`hostname`"
@@ -28,7 +30,7 @@ Optional parameters:
   -b NOTIFICATIONAUTHORNAME (\$notification.author\$)
   -c NOTIFICATIONCOMMENT (\$notification.comment\$)
   -i ICINGAWEB2URL (\$notification_icingaweb2url\$, Default: unset)
-  -f MAILFROM (\$notification_mailfrom\$, requires GNU mailutils)
+  -f MAILFROM (\$notification_mailfrom\$, requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE))
   -v (\$notification_sendtosyslog\$, Default: false)
 
 EOF
@@ -133,8 +135,17 @@ fi
 ## Send the mail using the $MAILBIN command.
 ## If an explicit sender was specified, try to set it.
 if [ -n "$MAILFROM" ] ; then
-  /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" \
-  | $MAILBIN -a "From: $MAILFROM" -s "$SUBJECT" $USEREMAIL
+
+  ## Modify this for your own needs!
+
+  ## Debian/Ubuntu use mailutils which requires `-a` to append the header
+  if [ -f /etc/debian_version ]; then
+    /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" | $MAILBIN -a "From: $MAILFROM" -s "$SUBJECT" $USEREMAIL
+  ## Other distributions (RHEL/SUSE/etc.) prefer mailx which sets a sender address with `-r`
+  else
+    /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" | $MAILBIN -r "$MAILFROM" -s "$SUBJECT" $USEREMAIL
+  fi
+
 else
   /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" \
   | $MAILBIN -s "$SUBJECT" $USEREMAIL
index 48fe420434b8056b1f7f3198cfbfd25e881adb00..dca23dc63d781cfaa8efec74c270560d997ae0f0 100755 (executable)
@@ -1,4 +1,6 @@
-#!/bin/sh
+#!/usr/bin/env bash
+#
+# Copyright (C) 2012-2017 Icinga Development Team (https://www.icinga.com/)
 
 PROG="`basename $0`"
 HOSTNAME="`hostname`"
@@ -30,7 +32,7 @@ Optional parameters:
   -b NOTIFICATIONAUTHORNAME (\$notification.author\$)
   -c NOTIFICATIONCOMMENT (\$notification.comment\$)
   -i ICINGAWEB2URL (\$notification_icingaweb2url\$, Default: unset)
-  -f MAILFROM (\$notification_mailfrom\$, requires GNU mailutils)
+  -f MAILFROM (\$notification_mailfrom\$, requires GNU mailutils (Debian/Ubuntu) or mailx (RHEL/SUSE))
   -v (\$notification_sendtosyslog\$, Default: false)
 
 EOF
@@ -139,8 +141,17 @@ fi
 ## Send the mail using the $MAILBIN command.
 ## If an explicit sender was specified, try to set it.
 if [ -n "$MAILFROM" ] ; then
-  /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" \
-  | $MAILBIN -a "From: $MAILFROM" -s "$SUBJECT" $USEREMAIL
+
+  ## Modify this for your own needs!
+
+  ## Debian/Ubuntu use mailutils which requires `-a` to append the header
+  if [ -f /etc/debian_version ]; then
+    /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" | $MAILBIN -a "From: $MAILFROM" -s "$SUBJECT" $USEREMAIL
+  ## Other distributions (RHEL/SUSE/etc.) prefer mailx which sets a sender address with `-r`
+  else
+    /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" | $MAILBIN -r "$MAILFROM" -s "$SUBJECT" $USEREMAIL
+  fi
+
 else
   /usr/bin/printf "%b" "$NOTIFICATION_MESSAGE" \
   | $MAILBIN -s "$SUBJECT" $USEREMAIL