View file File name : spamassassin Content :#!/bin/sh # Duncan Findlay # duncf@debian.org # Daily cronjob for SpamAssassin updates. This isn't pretty but it # should do the job. CRON=0 test -f /etc/default/spamassassin && . /etc/default/spamassassin test -x /usr/bin/sa-update || exit 0 test -x /etc/init.d/spamassassin || exit 0 command -v gpg > /dev/null || exit 0 if [ "$CRON" = "0" ] ; then exit 0 fi # 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() { env -i LANG="$LANG" PATH="$PATH" start-stop-daemon \ --chuid debian-spamd:debian-spamd --start \ --exec /usr/bin/spamassassin -- -D --lint 2>&1 exit 1 } do_compile() { if [ -x /usr/bin/re2c -a -x /usr/bin/sa-compile ]; then env -i LANG="$LANG" PATH="$PATH" start-stop-daemon \ --chuid debian-spamd:debian-spamd --start \ --exec /usr/bin/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. runuser -u debian-spamd -- \ 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 --quiet spamassassin status > /dev/null && \ 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 } # Sleep for up to 3600 seconds if not running interactively if [ ! -t 0 ]; then RANGE=3600 number=`od -vAn -N2 -tu4 < /dev/urandom` number=`expr $number "%" $RANGE` sleep $number fi # Update umask 022 env -i LANG="$LANG" PATH="$PATH" http_proxy="$http_proxy" \ start-stop-daemon --chuid debian-spamd:debian-spamd --start \ --exec /usr/bin/sa-update -- \ --gpghomedir /var/lib/spamassassin/sa-update-keys 2>&1 case $? in 0) # got updates! env -i LANG="$LANG" PATH="$PATH" start-stop-daemon \ --chuid debian-spamd:debian-spamd --start \ --exec /usr/bin/spamassassin -- --lint 2>&1 || die_with_lint do_compile reload ;; 1) # no updates exit 0 ;; 2) # lint failed! die_with_lint ;; *) echo "sa-update failed for unknown reasons" 1>&2 ;; esac # Local variables: # mode: shell-script # tab-width: 4 # indent-tabs-mode: nil # end: