ansible-roles/spamassasin/files/sa-update.sh

69 lines
1.9 KiB
Bash

#!/bin/sh
# Evolix sa-update, based on:
# Duncan Findlay
# duncf@debian.org
mail=$(grep EVOMAINTMAIL /etc/evomaintenance.cf | cut -d'=' -f2)
test -x /usr/bin/sa-update || exit 0
test -x /etc/init.d/spamassassin || exit 0
# If there's a problem with the ruleset or configs, print the output
# of spamassassin --lint (which will typically get emailed to root)
# and abort.
die_with_lint() {
su debian-spamd -c "spamassassin --lint -D 2>&1"
exit 1
}
do_compile() {
# Compile, if rules have previously been compiled, and it's possible
if [ -x /usr/bin/re2c -a -x /usr/bin/sa-compile \
-a -d /var/lib/spamassassin/compiled ]; then
su debian-spamd -c "sa-compile --quiet"
# Fixup perms -- group and other should be able to
# read and execute, but never write. Works around
# sa-compile's failure to obey umask.
chmod -R go-w,go+rX /var/lib/spamassassin/compiled
fi
}
# Tell a running spamd to reload its configs and rules.
reload() {
# Reload
if which invoke-rc.d >/dev/null 2>&1; then
invoke-rc.d spamassassin reload > /dev/null
else
/etc/init.d/spamassassin reload > /dev/null
fi
if [ -d /etc/spamassassin/sa-update-hooks.d ]; then
run-parts --lsbsysinit /etc/spamassassin/sa-update-hooks.d
fi
}
# Update
umask 022
su debian-spamd -c "sa-update --gpghomedir /var/lib/spamassassin/sa-update-keys"
case $? in
0)
# got updates!
su debian-spamd -c "spamassassin --lint" || die_with_lint
do_compile
reload
echo -e "Les règles SpamAsassin ont été mises à jour. Merci de reporter toute anomalie." | \
mail -s "SpamAsassin's rules updated." $mail
;;
1)
# no updates
exit 0
;;
2)
# lint failed!
die_with_lint
;;
*)
echo "sa-update failed for unknown reasons" 1>&2
;;
esac