#!/bin/bash # # Update SpamAssassin rules and reload daemons that use them. # # First, redirect stdout to /dev/null. exec 1>/dev/null # Try to update the rules. sa-update # Exit code 0: all new updates were installed. # Exit code 1: we were already up-to-date. # Exit code 3: some updates were installed, but some weren't. # Any other exit code indicates failure. if (( $? == 0 || $? == 3 )); then # Compilation spits out its progress onto stderr. sa-compile 2>/dev/null # Do you run spamd or amavisd? Both daemons need to be reloaded # in order to pick up the newly-updated rules. if command -v rc-service >/dev/null; then # OpenRC is installed. These "status" checks should succeed # only when the daemon is running under OpenRC. We redirect # stderr to hide the lecture that OpenRC gives you if you # try this on a system running systemd. rc-service spamd status 2>/dev/null && rc-service spamd reload rc-service amavisd status 2>/dev/null && rc-service amavisd reload fi if command -v systemctl >/dev/null; then # The systemctl (systemd) executable is installed, so try to # use it to restart spamd and amavisd. These are safe to run # if systemd is installed but not in use. The is-active # check is to keep systemctl from outputting warnings if # amavisd is not installed (bug #681872). systemctl try-restart spamassassin if ( systemctl is-active --quiet amavisd ); then systemctl try-reload-or-restart amavisd fi fi fi