forked from evolix/ansible-roles
69 lines
1.9 KiB
Bash
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
|