summaryrefslogtreecommitdiff
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