summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mail-filter/spamassassin/files')
-rw-r--r--mail-filter/spamassassin/files/update-spamassassin-rules-r1.cron41
1 files changed, 41 insertions, 0 deletions
diff --git a/mail-filter/spamassassin/files/update-spamassassin-rules-r1.cron b/mail-filter/spamassassin/files/update-spamassassin-rules-r1.cron
new file mode 100644
index 00000000000..7c6990b847c
--- /dev/null
+++ b/mail-filter/spamassassin/files/update-spamassassin-rules-r1.cron
@@ -0,0 +1,41 @@
+#!/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 2>/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 2>/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
+ systemctl is-active --quiet amavisd \
+ && systemctl try-reload-or-restart amavisd
+ fi
+fi