From 48cc00797c2cbb03c816c5fc2f4bf94a15e1abd1 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Wed, 6 Mar 2019 23:46:20 -0500 Subject: [PATCH] e2scrub: make e2scrub_fail's e-mail addresses be configurable Allow the sender and recipient e-mail addresses be configurable from /etc/e2scrub.conf. Signed-off-by: Theodore Ts'o --- scrub/e2scrub.conf.in | 8 ++++++++ scrub/e2scrub_fail.in | 29 +++++++++++++++++++++-------- scrub/e2scrub_fail@.service.in | 3 +-- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/scrub/e2scrub.conf.in b/scrub/e2scrub.conf.in index 69f997f..5c03087 100644 --- a/scrub/e2scrub.conf.in +++ b/scrub/e2scrub.conf.in @@ -1,5 +1,13 @@ # e2scrub configuration file +# e-mail destination used by e2scrub_fail when problems are found with +# the file system. +# recipient=root + +# e-mail sender used by e2scrub_fail when problems are found with +# the file system. +# sender=e2scrub@host.domain.name + # Snapshots will be created to run fsck; the snapshot will be of this size. # snap_size_mb=256 diff --git a/scrub/e2scrub_fail.in b/scrub/e2scrub_fail.in index f27197a..2c0754a 100644 --- a/scrub/e2scrub_fail.in +++ b/scrub/e2scrub_fail.in @@ -2,24 +2,37 @@ # Email logs of failed e2scrub unit runs when the systemd service fails. -recipient="$1" -test -z "${recipient}" && exit 0 -device="$2" +device="$1" test -z "${device}" && exit 0 -hostname="$(hostname -f 2>/dev/null)" -test -z "${hostname}" && hostname="${HOSTNAME}" + if ! type sendmail > /dev/null 2>&1; then echo "$0: sendmail program not found." exit 1 fi +if test -f /etc/e2scrub.conf ; then + . /etc/e2scrub.conf +fi + +hostname="$(hostname -f 2>/dev/null)" +test -z "${hostname}" && hostname="${HOSTNAME}" +service_name="e2scrub@$(systemd-escape ${device})" + +if test -z "${recipient}" ; then + recipient="root" +fi + +if test -z "${sender}" ; then + sender="" +fi + (cat << ENDL -To: $1 -From: +To: ${recipient} +From: ${sender} Subject: e2scrub failure on ${device} So sorry, the automatic e2scrub of ${device} on ${hostname} failed. A log of what happened follows: ENDL -systemctl status --full --lines 4294967295 "e2scrub@${device}") | sendmail -t -i +systemctl status --full --lines 4294967295 "${service_name}") | sendmail -t -i diff --git a/scrub/e2scrub_fail@.service.in b/scrub/e2scrub_fail@.service.in index ffc296a..4bad311 100644 --- a/scrub/e2scrub_fail@.service.in +++ b/scrub/e2scrub_fail@.service.in @@ -4,8 +4,7 @@ Documentation=man:e2scrub(8) [Service] Type=oneshot -Environment=EMAIL_ADDR=root -ExecStart=@pkglibdir@/e2scrub_fail "${EMAIL_ADDR}" %I +ExecStart=@pkglibdir@/e2scrub_fail "%I" User=mail Group=mail SupplementaryGroups=systemd-journal -- 1.8.3.1