1#!/bin/sh
2
3# This script provides MailScanner cron job actions.
4# Edit /etc/MailScanner/defaults to change options
5#
6# MailScanner Team <https://www.mailscanner.info>
7# 17 April 2020
8
9PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/bin:/usr/local/bin:/bin:/sbin
10export PATH
11NAME=MailScanner
12DAEMON=/usr/sbin/MailScanner
13QUICKPEEK=/usr/sbin/ms-peek
14ms_conf=/etc/MailScanner/MailScanner.conf
15ms_core=/usr/share/MailScanner
16ms_lib=/usr/lib/MailScanner
17ramdisk_store=/var/spool/MailScanner/ramdisk_store
18stopped_lockfile=/var/lock/subsys/MailScanner.off
19
20# defaults
21ms_cron_check=0
22ms_cron_msg_alert=0
23ms_cron_sa=0
24ms_cron_av=0
25ms_cron_ps=0
26ms_cron_sn=0
27q_days=0
28
29# if no arguments are passed
30if [ -z $1 ]; then
31	# user info screen
32	clear
33	echo;
34	echo "MailScanner Cron"; echo; echo;
35	echo "This script provides basic maintenance services for MailScanner. Edit the file";
36	echo "/etc/MailScanner/defaults to set your preferences.";
37	echo;
38	echo "You may use this from the command line or within a cron job. Usage:";
39	echo;
40	echo "hourly items: /usr/sbin/ms-cron HOURLY";
41	echo "daily items:  /usr/sbin/ms-cron DAILY";
42	echo "daemon check: /usr/sbin/ms-cron CHECK";
43	echo "maintenance:  /usr/sbin/ms-cron MAINT";
44	echo;
45
46	exit 0
47else
48	ACTION=`echo $1 | tr '[:lower:]' '[:upper:]'`
49fi
50
51# basic config file
52if [ -f /etc/MailScanner/defaults ] ; then
53	. /etc/MailScanner/defaults
54else
55	logger -i -p mail.notice "ERROR: ms-cron missing configuration file /etc/MailScanner/defaults"
56	echo "Aborted: missing configuration file /etc/MailScanner/defaults"
57    exit 1
58fi
59
60# checks if mailscanner is running and starts if not
61if [ $ACTION = CHECK ]; then
62	/usr/sbin/ms-check
63	exit 0
64fi
65
66# hourly cron actions
67if [ $ACTION = HOURLY ]; then
68
69	# check if mailscanner process is running
70	if [ $ms_cron_check = 1 ]; then
71		/usr/sbin/ms-check
72	fi
73
74	# processing messages alert
75	if [ $ms_cron_msg_alert = 1 ]; then
76		/usr/sbin/ms-msg-alert
77	fi
78
79	exit 0
80fi
81
82# daily cron actions
83if [ $ACTION = DAILY ]; then
84
85	# update spamassassin
86	if [ $ms_cron_sa = 1 ]; then
87		/usr/sbin/ms-update-sa
88	fi
89
90	# update virus scanners
91	if [ $ms_cron_av = 1 ]; then
92		/usr/sbin/ms-update-vs
93	fi
94
95	# update phishing sites
96	if [ $ms_cron_ps = 1 ]; then
97		/usr/sbin/ms-update-phishing >/dev/null
98	fi
99
100	# update ScamNailer phishing emails
101	if [ $ms_cron_sn = 1 ]; then
102		if [ ! -d /var/cache/ScamNailer ]; then
103			mkdir -p /var/cache/ScamNailer
104		fi
105		/usr/sbin/ms-update-bad-emails
106	fi
107
108	exit 0
109fi
110
111# maintenance
112if [ $ACTION = MAINT ]; then
113
114	# clean the quarantine
115	if [ $q_days -gt 0 ]; then
116		/usr/sbin/ms-clean-quarantine
117	fi
118
119	exit 0
120fi
121
122# if we got this far
123echo "I don't know what you are doing, but you are doing it wrong.";
124