blob: 3448d0ac0ea29631f5ad5a58170c197aa1fbcbb7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/bin/sh
#
# spamassassin
#
# Simple filter to plug SpamAssassin only
# into the Postfix MTA, using the spamc / spamd
# daemon version of SpamAssassin.
#
# (Should result in higher performance on busy servers)
#
# NOTE: spamd must be running before using this script!
#
# For use with:
# Postfix 20010228 or later
# SpamAssassin 2.42 or later
#
############
# #
# UNTESTED #
# #
############
# VARIABLES
# ---------
# File locations
# (CHANGE AS REQUIRED TO MATCH YOUR SET-UP)
INSPECT_DIR="/var/spool/sanitizer"
#INSPECT_DIR="/var/spool/filter"
SENDMAIL="/usr/lib/sendmail -i"
ANOMY="/usr/share/anomy-sanitizer"
ANOMY_BIN="${ANOMY}/bin/sanitizer.pl"
ANOMY_CONF="/usr/share/anomy-sanitizer/anomy.conf"
#ANOMY_LOG="/dev/null"
ANOMY_LOG="/tmp/sanitizer.log"
SPAMASSASSIN="/usr/bin/spamassassin"
#SPAMASSASSIN_LOG="/dev/null"
SPAMASSASSIN_LOG="/tmp/spamassassin.log"
CAT="/bin/cat"
# Messages
UNABLE_TO_CD_INSPECTDIR="Impossible to change to ${INSPECT_DIR}"
MSG_CONTENT_REJECTED="Message content rejected"
# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
# Users that execute different filters
SPAMC_USER="sanitizer"
export ANOMY
# MAIN
# ----
cd ${INSPECT_DIR} || { echo ${UNABLE_TO_CD_INSPECTDIR} ; exit ${EX_TEMPFAIL}; }
# Clean up when done or when aborting.
trap "rm -f out.$$" 0 1 2 3 15
# sanitizer only
#${CAT} \
# | ${ANOMY_BIN} ${ANOMY_CONF} 2>>${ANOMY_LOG} > out.$$ || \
# { echo ${MSG_CONTENT_REJECTED}; exit ${EX_UNAVAILABLE}; }
# sanitizer and SpamAssassin
${CAT} \
| ${SPAMC} -f -u ${SPAMC_USER} 2>${SPAMASSASSIN_LOG} \
| ${ANOMY_BIN} ${ANOMY_CONF} 2>>${ANOMY_LOG} > out.$$ || \
{ echo ${MSG_CONTENT_REJECTED}; exit ${EX_UNAVAILABLE}; }
# SpamAssassin only
#${CAT} \
# | ${SPAMC} -f -u ${SPAMC_USER} 2>${SPAMASSASSIN_LOG} > out.$$ || \
# { echo ${MSG_CONTENT_REJECTED}; exit ${EX_UNAVAILABLE}; }
$SENDMAIL "$@" < out.$$
exit 0
|