Lines 1-31
Link Here
|
1 |
#!/bin/bash |
1 |
#!/bin/sh |
2 |
# Remove old signatures and unimportant tokens from the DSPAM database |
2 |
# Remove old signatures and unimportant tokens from the DSPAM database |
3 |
|
3 |
|
4 |
for foo in awk head tail cut sed |
4 |
for foo in awk head tail cut sed |
5 |
do |
5 |
do |
6 |
DSPAM_Check_App="$(${foo} --version 2>&1)" |
6 |
if ! which ${foo} >/dev/null 2>&1 |
7 |
if [[ "${DSPAM_Check_App/ *}" == "bash:" ]] |
|
|
8 |
then |
7 |
then |
9 |
echo "Command ${foo} not found." |
8 |
echo "Command ${foo} not found." |
10 |
exit 1 |
9 |
exit 1 |
11 |
fi |
10 |
fi |
12 |
done |
11 |
done |
13 |
|
12 |
|
14 |
DSPAM_HOMEDIR="$(getent passwd dspam | awk -F : '{print $6}')" |
13 |
DSPAM_getent_home="$(getent passwd dspam | awk -F : '{print $6}')" |
15 |
[[ ! -d "${DSPAM_HOMEDIR}" ]] && exit 2 |
14 |
[ ! -d "${DSPAM_HOMEDIR}" ] && exit 2 |
16 |
DSPAM_DATA_FILES=( "${DSPAM_HOMEDIR}"/*.data ) |
15 |
if ! ls "${DSPAM_getent_home}"/*.data >/dev/null 2>&1 && \ |
17 |
if [ ! -f "${DSPAM_DATA_FILES[0]}" ] |
16 |
ls /etc/mail/dspam/*.data >/dev/null 2>&1 |
18 |
then |
17 |
then |
19 |
DSPAM_DATA_FILES=( /etc/mail/dspam/*.data ) |
18 |
DSPAM_HOMEDIR="/etc/mail/dspam" |
20 |
if [ -f "${DSPAM_DATA_FILES[0]}" ] |
19 |
else |
21 |
then |
20 |
DSPAM_HOMEDIR="$DSPAM_getent_home" |
22 |
DSPAM_HOMEDIR="/etc/mail/dspam" |
|
|
23 |
fi |
24 |
fi |
21 |
fi |
25 |
|
22 |
|
26 |
[[ ! -f "${DSPAM_HOMEDIR}/dspam.conf" ]] && exit 2 |
23 |
[ ! -f "${DSPAM_HOMEDIR}/dspam.conf" ] && exit 2 |
27 |
DSPAM_SPOOLDIR="$(grep ^Home "${DSPAM_HOMEDIR}/dspam.conf" | cut -d' ' -f2)" |
24 |
DSPAM_SPOOLDIR="$(grep ^Home "${DSPAM_HOMEDIR}/dspam.conf" | cut -d' ' -f2)" |
28 |
if [[ -d "${DSPAM_SPOOLDIR}" ]] |
25 |
if [ -d "${DSPAM_SPOOLDIR}" ] |
29 |
then |
26 |
then |
30 |
cd / |
27 |
cd / |
31 |
su -s /bin/sh -c "/usr/bin/dspam_logrotate -a 30 -d ${DSPAM_SPOOLDIR}" dspam |
28 |
su -s /bin/sh -c "/usr/bin/dspam_logrotate -a 30 -d ${DSPAM_SPOOLDIR}" dspam |
Lines 33-41
Link Here
|
33 |
echo 'Spool directory not configured. Please set "Home" in your dspam.conf.' |
30 |
echo 'Spool directory not configured. Please set "Home" in your dspam.conf.' |
34 |
fi |
31 |
fi |
35 |
|
32 |
|
36 |
if [[ -f "${DSPAM_HOMEDIR}/mysql.data" ]] |
33 |
if [ -f "${DSPAM_HOMEDIR}/mysql.data" ] |
37 |
then |
34 |
then |
38 |
[[ ! -f "/usr/bin/mysql_config" ]] && exit 4 |
35 |
[ ! -f "/usr/bin/mysql_config" ] && exit 4 |
39 |
DSPAM_MySQL_PURGE_SQL="" |
36 |
DSPAM_MySQL_PURGE_SQL="" |
40 |
DSPAM_MySQL_VER="$(mysql_config --version | sed "s:\([^0-9\.]*\)::g")" |
37 |
DSPAM_MySQL_VER="$(mysql_config --version | sed "s:\([^0-9\.]*\)::g")" |
41 |
DSPAM_MySQL_MAJOR="$(echo "${DSPAM_MySQL_VER}" | cut -d. -f1)" |
38 |
DSPAM_MySQL_MAJOR="$(echo "${DSPAM_MySQL_VER}" | cut -d. -f1)" |
Lines 44-60
Link Here
|
44 |
DSPAM_MySQL_INT="$((DSPAM_MySQL_MAJOR * 65536 + DSPAM_MySQL_MINOR * 256 + DSPAM_MySQL_MICRO))" |
41 |
DSPAM_MySQL_INT="$((DSPAM_MySQL_MAJOR * 65536 + DSPAM_MySQL_MINOR * 256 + DSPAM_MySQL_MICRO))" |
45 |
|
42 |
|
46 |
# For MySQL >= 4.1 use the new purge script |
43 |
# For MySQL >= 4.1 use the new purge script |
47 |
if [[ "${DSPAM_MySQL_INT}" -ge "262400" ]] |
44 |
if [ "${DSPAM_MySQL_INT}" -ge "262400" ] |
48 |
then |
45 |
then |
49 |
[[ -f "${DSPAM_HOMEDIR}/config/mysql_purge-4.1.sql" ]] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/mysql_purge-4.1.sql" |
46 |
[ -f "${DSPAM_HOMEDIR}/config/mysql_purge-4.1.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/mysql_purge-4.1.sql" |
50 |
[[ -f "${DSPAM_HOMEDIR}/mysql_purge-4.1.sql" ]] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/mysql_purge-4.1.sql" |
47 |
[ -f "${DSPAM_HOMEDIR}/mysql_purge-4.1.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/mysql_purge-4.1.sql" |
51 |
else |
48 |
else |
52 |
[[ -f "${DSPAM_HOMEDIR}/config/mysql_purge.sql" ]] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/mysql_purge.sql" |
49 |
[ -f "${DSPAM_HOMEDIR}/config/mysql_purge.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/mysql_purge.sql" |
53 |
[[ -f "${DSPAM_HOMEDIR}/mysql_purge.sql" ]] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/mysql_purge.sql" |
50 |
[ -f "${DSPAM_HOMEDIR}/mysql_purge.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/mysql_purge.sql" |
54 |
fi |
51 |
fi |
55 |
|
52 |
|
56 |
[[ "${DSPAM_MySQL_PURGE_SQL}" == "" ]] && exit 3 |
53 |
[ -z "${DSPAM_MySQL_PURGE_SQL}" ] && exit 3 |
57 |
[[ ! -f "/usr/bin/mysql" ]] && exit 4 |
54 |
[ ! -f "/usr/bin/mysql" ] && exit 4 |
58 |
DSPAM_MySQL_HOST="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 1|tail -n 1)" |
55 |
DSPAM_MySQL_HOST="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 1|tail -n 1)" |
59 |
DSPAM_MySQL_PORT="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 2|tail -n 1)" |
56 |
DSPAM_MySQL_PORT="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 2|tail -n 1)" |
60 |
DSPAM_MySQL_USER="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 3|tail -n 1)" |
57 |
DSPAM_MySQL_USER="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 3|tail -n 1)" |
Lines 67-79
Link Here
|
67 |
(/usr/bin/mysql -u ${DSPAM_MySQL_USER} -p"${DSPAM_MySQL_PWD}" ${DSPAM_MySQL_DB} -e "OPTIMIZE TABLE ${foo};") 1>/dev/null 2>&1 |
64 |
(/usr/bin/mysql -u ${DSPAM_MySQL_USER} -p"${DSPAM_MySQL_PWD}" ${DSPAM_MySQL_DB} -e "OPTIMIZE TABLE ${foo};") 1>/dev/null 2>&1 |
68 |
done |
65 |
done |
69 |
exit ${MYRC} |
66 |
exit ${MYRC} |
70 |
elif [[ -f "${DSPAM_HOMEDIR}/pgsql.data" ]] |
67 |
elif [ -f "${DSPAM_HOMEDIR}/pgsql.data" ] |
71 |
then |
68 |
then |
72 |
DSPAM_PgSQL_PURGE_SQL="" |
69 |
DSPAM_PgSQL_PURGE_SQL="" |
73 |
[[ -f "${DSPAM_HOMEDIR}/config/pgsql_purge.sql" ]] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/pgsql_purge.sql" |
70 |
[ -f "${DSPAM_HOMEDIR}/config/pgsql_purge.sql" ] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/pgsql_purge.sql" |
74 |
[[ -f "${DSPAM_HOMEDIR}/pgsql_purge.sql" ]] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_HOMEDIR}/pgsql_purge.sql" |
71 |
[ -f "${DSPAM_HOMEDIR}/pgsql_purge.sql" ] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_HOMEDIR}/pgsql_purge.sql" |
75 |
[[ "${DSPAM_PgSQL_PURGE_SQL}" == "" ]] && exit 3 |
72 |
[ "${DSPAM_PgSQL_PURGE_SQL}" == "" ] && exit 3 |
76 |
[[ ! -f "/usr/bin/psql" ]] && exit 4 |
73 |
[ ! -f "/usr/bin/psql" ] && exit 4 |
77 |
DSPAM_PgSQL_HOST="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 1|tail -n 1)" |
74 |
DSPAM_PgSQL_HOST="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 1|tail -n 1)" |
78 |
DSPAM_PgSQL_PORT="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 2|tail -n 1)" |
75 |
DSPAM_PgSQL_PORT="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 2|tail -n 1)" |
79 |
DSPAM_PgSQL_USER="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 3|tail -n 1)" |
76 |
DSPAM_PgSQL_USER="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 3|tail -n 1)" |
Lines 81-93
Link Here
|
81 |
DSPAM_PgSQL_DB="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 5|tail -n 1)" |
78 |
DSPAM_PgSQL_DB="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 5|tail -n 1)" |
82 |
(PGUSER=${DSPAM_PgSQL_USER} PGPASSWORD=${DSPAM_PgSQL_PWD} /usr/bin/psql -U ${DSPAM_PgSQL_USER} -d ${DSPAM_PgSQL_DB} -p ${DSPAM_PgSQL_PORT} -h ${DSPAM_PgSQL_HOST} -f ${DSPAM_PgSQL_PURGE_SQL}) 1>/dev/null 2>&1 |
79 |
(PGUSER=${DSPAM_PgSQL_USER} PGPASSWORD=${DSPAM_PgSQL_PWD} /usr/bin/psql -U ${DSPAM_PgSQL_USER} -d ${DSPAM_PgSQL_DB} -p ${DSPAM_PgSQL_PORT} -h ${DSPAM_PgSQL_HOST} -f ${DSPAM_PgSQL_PURGE_SQL}) 1>/dev/null 2>&1 |
83 |
exit $? |
80 |
exit $? |
84 |
elif [[ -f "${DSPAM_HOMEDIR}/oracle.data" ]] |
81 |
elif [ -f "${DSPAM_HOMEDIR}/oracle.data" ] |
85 |
then |
82 |
then |
86 |
DSPAM_Oracle_PURGE_SQL="" |
83 |
DSPAM_Oracle_PURGE_SQL="" |
87 |
[[ -f "${DSPAM_HOMEDIR}/config/ora_purge.sql" ]] && DSPAM_Oracle_PURGE_SQL="${DSPAM_HOMEDIR}/config/ora_purge.sql" |
84 |
[ -f "${DSPAM_HOMEDIR}/config/ora_purge.sql" ] && DSPAM_Oracle_PURGE_SQL="${DSPAM_HOMEDIR}/config/ora_purge.sql" |
88 |
[[ -f "${DSPAM_HOMEDIR}/ora_purge.sql" ]] && DSPAM_Oracle_PURGE_SQL="${DSPAM_HOMEDIR}/ora_purge.sql" |
85 |
[ -f "${DSPAM_HOMEDIR}/ora_purge.sql" ] && DSPAM_Oracle_PURGE_SQL="${DSPAM_HOMEDIR}/ora_purge.sql" |
89 |
[[ "${DSPAM_Oracle_PURGE_SQL}" == "" ]] && exit 3 |
86 |
[ "${DSPAM_Oracle_PURGE_SQL}" == "" ] && exit 3 |
90 |
[[ ! -f "/usr/bin/sqlplus" ]] && exit 4 |
87 |
[ ! -f "/usr/bin/sqlplus" ] && exit 4 |
91 |
DSPAM_Oracle_DBLINK="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 1|tail -n 1)" |
88 |
DSPAM_Oracle_DBLINK="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 1|tail -n 1)" |
92 |
DSPAM_Oracle_USER="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 2|tail -n 1)" |
89 |
DSPAM_Oracle_USER="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 2|tail -n 1)" |
93 |
DSPAM_Oracle_PWD="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 3|tail -n 1)" |
90 |
DSPAM_Oracle_PWD="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 3|tail -n 1)" |
Lines 95-101
Link Here
|
95 |
(/usr/bin/sqlplus -s ${DSPAM_Oracle_USER}/${DSPAM_Oracle_PWD} @${DSPAM_Oracle_PURGE_SQL}) 1>/dev/null 2>&1 |
92 |
(/usr/bin/sqlplus -s ${DSPAM_Oracle_USER}/${DSPAM_Oracle_PWD} @${DSPAM_Oracle_PURGE_SQL}) 1>/dev/null 2>&1 |
96 |
exit $? |
93 |
exit $? |
97 |
else |
94 |
else |
98 |
[[ ! -f "/usr/bin/dspam_clean" ]] && exit 4 |
95 |
[ ! -f "/usr/bin/dspam_clean" ] && exit 4 |
99 |
/usr/bin/dspam_clean -s -p -u 1>/dev/null 2>&1 |
96 |
/usr/bin/dspam_clean -s -p -u 1>/dev/null 2>&1 |
100 |
exit $? |
97 |
exit $? |
101 |
fi |
98 |
fi |