diff --git a/config.h.cmake b/config.h.cmake
index 2a4fe035a..cc80a2e04 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -7,6 +7,7 @@
#cmakedefine HAVE_VFORK
#define ICINGA_PREFIX "${CMAKE_INSTALL_PREFIX}"
+#define ICINGA_SYSCONFDIR "${CMAKE_INSTALL_FULL_SYSCONFDIR}"
#define ICINGA_LOCALSTATEDIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}"
#define ICINGA_PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/icinga2"
diff --git a/doc/4.2-global-variables.md b/doc/4.2-global-variables.md
index 247db3c15..becc1de5e 100644
--- a/doc/4.2-global-variables.md
+++ b/doc/4.2-global-variables.md
@@ -1,10 +1,11 @@
-## Global Variables
+## Global Variables
Icinga 2 provides a number of special global variables:
Variable |Description
--------------------------|-------------------
IcingaPrefixDir |**Read-only.** Contains the installation prefix that was specified with cmake -DCMAKE_INSTALL_PREFIX. Defaults to /usr/local
+IcingaSysconfDir |**Read-only.** Contains the path of the sysconf directory. Defaults to IcingaPrefixDir + "/etc".
IcingaLocalStateDir |**Read-only.** Contains the path of the local state directory. Defaults to IcingaPrefixDir + "/var".
IcingaPkgDataDir |**Read-only.** Contains the path of the package data directory. Defaults to IcingaPrefixDir + "/share/icinga2".
IcingaStatePath |**Read-write.** Contains the path of the Icinga 2 state file. Defaults to IcingaLocalStateDir + "/lib/icinga2/icinga2.state".
diff --git a/etc/CMakeLists.txt b/etc/CMakeLists.txt
index 864350f9f..00c07c9c2 100644
--- a/etc/CMakeLists.txt
+++ b/etc/CMakeLists.txt
@@ -41,6 +41,7 @@ install_if_not_exists(icinga2/features-available/notification.conf ${CMAKE_INSTA
install_if_not_exists(icinga2/features-available/perfdata.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available)
install_if_not_exists(icinga2/features-available/statusdata.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available)
install_if_not_exists(icinga2/features-available/syslog.conf ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/features-available)
+install_if_not_exists(icinga2/scripts/mail-notification.sh ${CMAKE_INSTALL_SYSCONFDIR}/icinga2/scripts)
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/icinga2/features-enabled\")")
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink ../features-available/checker.conf \"\$ENV{DESTDIR}${CMAKE_INSTALL_FULL_SYSCONFDIR}/icinga2/features-enabled/checker.conf\")")
diff --git a/etc/icinga2/conf.d/notifications.conf b/etc/icinga2/conf.d/notifications.conf
index 9f58e558f..36013c512 100644
--- a/etc/icinga2/conf.d/notifications.conf
+++ b/etc/icinga2/conf.d/notifications.conf
@@ -22,27 +22,21 @@ template Notification "mail-notification" {
}
object NotificationCommand "mail-service-notification" inherits "plugin-notification-command" {
- command = [
- "/usr/bin/printf",
- "\"%b\"",
- {{{\"***** Icinga *****
+ command = [ (IcingaSysconfDir + "/icinga2/scripts/mail-notification.sh") ],
- Notification Type: $NOTIFICATIONTYPE$
-
- Service: $SERVICEDESC$
- Host: $HOSTALIAS$
- Address: $HOSTADDRESS$
- State: $SERVICESTATE$
-
- Date/Time: $LONGDATETIME$
-
- Additional Info: $SERVICEOUTPUT$
-
- Comment: [$NOTIFICATIONAUTHORNAME$] $NOTIFICATIONCOMMENT$\"}}},
- "/bin/mail",
- "-s",
- "\"$NOTIFICATIONTYPE$ - $HOSTDISPLAYNAME$ - $SERVICEDISPLAYNAME$ is $SERVICESTATE$\"",
- "$USEREMAIL$"
+ export_macros = [
+ "NOTIFICATIONTYPE",
+ "SERVICEDESC",
+ "HOSTALIAS",
+ "HOSTADDRESS",
+ "SERVICESTATE",
+ "LONGDATETIME",
+ "SERVICEOUTPUT",
+ "NOTIFICATIONAUTHORNAME",
+ "NOTIFICATIONCOMMENT",
+ "HOSTDISPLAYNAME",
+ "SERVICEDISPLAYNAME",
+ "USEREMAIL"
]
}
diff --git a/etc/icinga2/scripts/mail-notification.sh b/etc/icinga2/scripts/mail-notification.sh
new file mode 100755
index 000000000..803892dc0
--- /dev/null
+++ b/etc/icinga2/scripts/mail-notification.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+template=$(cat <