From: Theodore Ts'o Date: Thu, 7 Mar 2019 04:46:20 +0000 (-0500) Subject: e2scrub: make e2scrub_fail's e-mail addresses be configurable X-Git-Tag: v1.45.0~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48cc00797c2cbb03c816c5fc2f4bf94a15e1abd1;p=thirdparty%2Fe2fsprogs.git 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 --- diff --git a/scrub/e2scrub.conf.in b/scrub/e2scrub.conf.in index 69f997fd2..5c030877c 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 f27197a93..2c0754a99 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 ffc296af2..4bad311bb 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