View | Details | Raw Unified | Return to bug 133852
Collapse All | Expand All

(-)mail/assp/Makefile (-55 / +82 lines)
Lines 6-13 Link Here
6
#
6
#
7
7
8
PORTNAME=	assp
8
PORTNAME=	assp
9
PORTVERSION=	1.4.3.1
9
PORTVERSION=	1.5.1.2
10
PORTREVISION=	1
11
CATEGORIES=	mail
10
CATEGORIES=	mail
12
MASTER_SITES=	SF
11
MASTER_SITES=	SF
13
DISTNAME=	${PORTNAME:U}_${PORTVERSION}-Install
12
DISTNAME=	${PORTNAME:U}_${PORTVERSION}-Install
Lines 19-76 Link Here
19
NO_BUILD=	yes
18
NO_BUILD=	yes
20
USE_PERL5_RUN=	yes
19
USE_PERL5_RUN=	yes
21
20
22
USE_DOS2UNIX=	\
23
		../changelog.txt \
24
		addservice.pl \
25
		assp.pl \
26
		files/URIBLCCTLDS.txt \
27
		files/bombre.txt \
28
		files/invalidptr.txt \
29
		files/ipnp.txt \
30
		files/nodelay.txt \
31
		files/redre.txt \
32
		images/assp.css \
33
		images/editor.css \
34
		images/shutdown.css \
35
		move2num.pl \
36
		rc/readme.txt \
37
		rebuildspamdb.pl \
38
		reports/helpreport.txt \
39
		reports/notspamreport.txt \
40
		reports/redremovereport.txt \
41
		reports/redreport.txt \
42
		reports/spamreport.txt \
43
		reports/whiteremovereport.txt \
44
		reports/whitereport.txt \
45
		stat.pl \
46
		stats.sh
47
48
MAN8=		assp.8 assplog.8
21
MAN8=		assp.8 assplog.8
49
22
50
ASSP_USER=	nobody
23
ASSP_USER=	assp
51
ASSP_GROUP=	nobody
24
ASSP_GROUP=	assp
25
ASSP_UID=	587
26
ASSP_GID=	587
52
ASSP_HOME=	/var/db/assp
27
ASSP_HOME=	/var/db/assp
28
ASSP_LOG=	/var/log/assp
53
29
54
PLIST_SUB=	ASSP_HOME="${ASSP_HOME}"
30
PLIST_SUB=	ASSP_HOME="${ASSP_HOME}" ASSP_LOG="${ASSP_LOG}"
55
31
56
SUB_FILES=	assp.8 assplog.8 periodic-assp.sh pkg-install
32
SUB_FILES=	assp.8 assplog.8 assplog.pl periodic-assp.sh
57
SUB_LIST=	ASSP_HOME="${ASSP_HOME}" ASSP_USER="${ASSP_USER}" \
33
SUB_LIST=	ASSP_USER="${ASSP_USER}" ASSP_GROUP="${ASSP_GROUP}" \
58
		ASSP_GROUP="${ASSP_GROUP}" PERL="${PERL}"
34
		ASSP_HOME="${ASSP_HOME}" ASSP_LOG="${ASSP_LOG}" \
35
		DATADIR="${DATADIR}" PERL="${PERL}"
59
36
60
USE_RC_SUBR=	${PORTNAME}
37
USE_RC_SUBR=	${PORTNAME}
61
RC_SCRIPT=	${PREFIX}/etc/rc.d/${PORTNAME}
38
RC_SCRIPT=	${PREFIX}/etc/rc.d/${PORTNAME}
62
39
63
OPTIONS=	EMVALID	"RFC822 recipient address validator" on \
40
OPTIONS=	EMVALID	"RFC822 recipient address validator" on \
64
		LDAP	"LDAP validation of recipient addresses" on \
41
		LDAP	"LDAP validation of recipient addresses" off \
65
		SPF	"SPF validation of client IP" on \
42
		SPF	"SPF validation of client IP" on \
66
		SRS	"Sender Rewriting Scheme" on \
43
		SRS	"Sender Rewriting Scheme" on \
44
		SEND	"Resending .eml files" on \
67
		FBACKW	"File Reading Backwards" on \
45
		FBACKW	"File Reading Backwards" on \
68
		ZLIB	"HTTP Header Compression on Admin Interface" on \
46
		ZLIB	"HTTP Header Compression on Admin Interface" on \
69
		CLAMAV	"ClamAV virus scanner" on \
47
		CLAMAV	"ClamAV virus scanner" on \
70
		DNSBL	"DNS block list checking" on \
48
		DNSBL	"DNS block list checking" on \
71
		MYSQL	"Use MySQL db to store white/red/delaylists" off \
49
		MYSQL	"Use MySQL db to store white/red/delaylists" off \
50
		MATCHRE	"Match IP ranges and CIDR blocks in lists" on \
72
		SIMPLE	"Use procedural Web Page interfaces" on \
51
		SIMPLE	"Use procedural Web Page interfaces" on \
73
		SSL	"SSL secure sockets support" on
52
		SENDERB	"Country Code checks" on \
53
		MIMEMOD	"Multiple Attachement detection" on \
54
		SSL	"SSL secure sockets support" on \
55
		IPV6	"IPv6 sockets support" on
74
56
75
WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}/${DISTNAME}/${PORTNAME:U}
57
WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION}/${DISTNAME}/${PORTNAME:U}
76
58
Lines 89-100 Link Here
89
.if !defined(WITHOUT_SPF)
71
.if !defined(WITHOUT_SPF)
90
RUN_DEPENDS+=	${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS
72
RUN_DEPENDS+=	${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS
91
RUN_DEPENDS+=	${SITE_PERL}/Mail/SPF/Query.pm:${PORTSDIR}/mail/p5-Mail-SPF-Query
73
RUN_DEPENDS+=	${SITE_PERL}/Mail/SPF/Query.pm:${PORTSDIR}/mail/p5-Mail-SPF-Query
74
RUN_DEPENDS+=	${SITE_PERL}/Mail/SPF.pm:${PORTSDIR}/mail/p5-Mail-SPF
92
.endif
75
.endif
93
76
94
.if !defined(WITHOUT_SRS)
77
.if !defined(WITHOUT_SRS)
95
RUN_DEPENDS+=	${SITE_PERL}/Mail/SRS.pm:${PORTSDIR}/mail/p5-Mail-SRS
78
RUN_DEPENDS+=	${SITE_PERL}/Mail/SRS.pm:${PORTSDIR}/mail/p5-Mail-SRS
96
.endif
79
.endif
97
80
81
.if !defined(WITHOUT_SEND)
82
RUN_DEPENDS+=	${SITE_PERL}/Email/Send.pm:${PORTSDIR}/mail/p5-Email-Send
83
.endif
84
98
.if !defined(WITHOUT_FBACKW)
85
.if !defined(WITHOUT_FBACKW)
99
RUN_DEPENDS+=	${SITE_PERL}/File/ReadBackwards.pm:${PORTSDIR}/devel/p5-File-ReadBackwards
86
RUN_DEPENDS+=	${SITE_PERL}/File/ReadBackwards.pm:${PORTSDIR}/devel/p5-File-ReadBackwards
100
.endif
87
.endif
Lines 118-158 Link Here
118
RUN_DEPENDS+=	${SITE_PERL}/Tie/RDBM.pm:${PORTSDIR}/databases/p5-Tie-DBI
105
RUN_DEPENDS+=	${SITE_PERL}/Tie/RDBM.pm:${PORTSDIR}/databases/p5-Tie-DBI
119
.endif
106
.endif
120
107
108
.if !defined(WITHOUT_MATCHRE)
109
RUN_DEPENDS+=	${SITE_PERL}/Net/IP/Match/Regexp.pm:${PORTSDIR}/net-mgmt/p5-Net-IP-Match-Regexp
110
.endif
111
121
.if !defined(WITHOUT_SIMPLE)
112
.if !defined(WITHOUT_SIMPLE)
122
RUN_DEPENDS+=	${SITE_PERL}/LWP/Simple.pm:${PORTSDIR}/www/p5-libwww
113
RUN_DEPENDS+=	${SITE_PERL}/LWP/Simple.pm:${PORTSDIR}/www/p5-libwww
123
.endif
114
.endif
124
115
116
.if !defined(WITHOUT_SENDERB)
117
RUN_DEPENDS+=	${SITE_PERL}/Net/SenderBase.pm:${PORTSDIR}/mail/p5-Net-SenderBase
118
.endif
119
120
.if !defined(WITHOUT_MIMEMOD)
121
RUN_DEPENDS+=	${SITE_PERL}/Email/MIME/Modifier.pm:${PORTSDIR}/mail/p5-Email-MIME-Modifier
122
.endif
123
125
.if !defined(WITHOUT_SSL)
124
.if !defined(WITHOUT_SSL)
126
RUN_DEPENDS+=	${SITE_PERL}/IO/Socket/SSL.pm:${PORTSDIR}/security/p5-IO-Socket-SSL
125
RUN_DEPENDS+=	${SITE_PERL}/IO/Socket/SSL.pm:${PORTSDIR}/security/p5-IO-Socket-SSL
127
EXTRA_PATCHES+=	${PATCHDIR}/extra-patch-assp.pl+SSL
126
.endif
127
128
.if !defined(WITHOUT_IPV6)
129
RUN_DEPENDS+=	${SITE_PERL}/IO/Socket/INET6.pm:${PORTSDIR}/net/p5-IO-Socket-INET6
128
.endif
130
.endif
129
131
130
EXTRACT_AFTER_ARGS=	-d ${PORTNAME}-${PORTVERSION}
132
EXTRACT_AFTER_ARGS=	-d ${PORTNAME}-${PORTVERSION}
131
133
134
post-extract:
135
	@echo "===>  Removing incorrect group/other write permissions"
136
	@${FIND} ${WRKDIR}/${PORTNAME}-${PORTVERSION} -type d -exec ${CHMOD} go-w {} \;
137
	@${FIND} ${WRKDIR}/${PORTNAME}-${PORTVERSION} -type f -exec ${CHMOD} a-wx {} \;
138
132
post-patch:
139
post-patch:
133
	@${REINPLACE_CMD} -e 's|/usr/bin/perl|${PERL}|' ${WRKSRC}/*.pl
140
	@${REINPLACE_CMD} -e 's|/usr/bin/perl|${PERL}|' ${WRKSRC}/*.pl
134
141
142
pre-install:
143
	if ! /usr/sbin/pw groupshow ${ASSP_GROUP}; then \
144
		/usr/sbin/pw groupadd ${ASSP_GROUP} -g ${ASSP_GID}; \
145
	else \
146
		${ECHO_CMD} "Using exsing ${ASSP_GROUP} group"; \
147
	fi; \
148
	if ! /usr/sbin/pw usershow ${ASSP_USER}; then \
149
		/usr/sbin/pw useradd ${ASSP_USER} -g ${ASSP_GROUP} -u ${ASSP_UID} -h - -d ${ASSP_HOME} -s /usr/sbin/nologin -c "ASSP Anti-Spam Proxy"; \
150
	else \
151
		${ECHO_CMD} "Using exsing ${ASSP_USER} user"; \
152
	fi
153
135
do-install:
154
do-install:
136
	${MKDIR} ${PREFIX}/lib/assp
155
	${MKDIR} ${DATADIR}
137
	${INSTALL_SCRIPT} ${WRKSRC}/addservice.pl ${PREFIX}/lib/assp
156
	${INSTALL_SCRIPT} ${WRKSRC}/assp.pl ${DATADIR}
138
	${INSTALL_SCRIPT} ${WRKSRC}/assp.pl ${PREFIX}/lib/assp
157
	${INSTALL_SCRIPT} ${WRKSRC}/move2num.pl ${DATADIR}
139
	${INSTALL_SCRIPT} ${WRKSRC}/move2num.pl ${PREFIX}/lib/assp
158
	${INSTALL_SCRIPT} ${WRKSRC}/rebuildspamdb.pl ${DATADIR}
140
	${INSTALL_SCRIPT} ${WRKSRC}/rebuildspamdb.pl ${PREFIX}/lib/assp
159
	${INSTALL_SCRIPT} ${WRKSRC}/stat.pl ${DATADIR}
141
	${INSTALL_SCRIPT} ${WRKSRC}/stat.pl ${PREFIX}/lib/assp
160
	${MKDIR} ${DATADIR}/files
142
	${INSTALL_SCRIPT} ${WRKSRC}/stats.sh ${PREFIX}/lib/assp
161
	${INSTALL_DATA} ${WRKSRC}/files/* ${DATADIR}/files
143
	${MKDIR} ${PREFIX}/lib/assp/files
162
	${MKDIR} ${DATADIR}/images
144
	${INSTALL_DATA} ${WRKSRC}/files/* ${PREFIX}/lib/assp/files
163
	${INSTALL_DATA} ${WRKSRC}/images/* ${DATADIR}/images
145
	${MKDIR} ${PREFIX}/lib/assp/reports
164
	${MKDIR} ${DATADIR}/reports
146
	${INSTALL_DATA} ${WRKSRC}/reports/* ${PREFIX}/lib/assp/reports
165
	${INSTALL_DATA} ${WRKSRC}/reports/* ${DATADIR}/reports
147
	${MKDIR} ${PREFIX}/lib/assp/images
166
148
	${INSTALL_DATA} ${WRKSRC}/images/* ${PREFIX}/lib/assp/images
167
	${LN} -s ${DATADIR}/assp.pl ${PREFIX}/sbin/assp
149
168
150
	${LN} -s ${PREFIX}/lib/assp/assp.pl ${PREFIX}/sbin/assp
169
	${INSTALL_SCRIPT} ${WRKDIR}/assplog.pl ${PREFIX}/sbin/assplog
151
	${LN} -s ${PREFIX}/lib/assp/stats.sh ${PREFIX}/sbin/assplog
152
170
153
	${INSTALL_MAN} ${WRKDIR}/assp.8 ${MAN8PREFIX}/man/man8
171
	${INSTALL_MAN} ${WRKDIR}/assp.8 ${MAN8PREFIX}/man/man8
154
	${INSTALL_MAN} ${WRKDIR}/assplog.8 ${MAN8PREFIX}/man/man8
172
	${INSTALL_MAN} ${WRKDIR}/assplog.8 ${MAN8PREFIX}/man/man8
155
173
174
	${MKDIR} ${ASSP_LOG}
175
	${CHOWN} ${ASSP_USER}:${ASSP_GROUP} ${ASSP_LOG}
176
	${CHMOD} 750 ${ASSP_LOG}
177
178
	${MKDIR} ${ASSP_HOME}
179
	${CHOWN} ${ASSP_USER}:${ASSP_GROUP} ${ASSP_HOME}
180
	${CHMOD} 700 ${ASSP_HOME}
181
	${LN} -s ${DATADIR}/files ${ASSP_HOME}
182
	${LN} -s ${DATADIR}/images ${ASSP_HOME}
183
	${LN} -s ${DATADIR}/reports ${ASSP_HOME}
184
	${LN} -s ${ASSP_LOG} ${ASSP_HOME}/log
185
156
	${MKDIR} ${PREFIX}/etc/periodic/daily
186
	${MKDIR} ${PREFIX}/etc/periodic/daily
157
	${INSTALL_SCRIPT} ${WRKDIR}/periodic-assp.sh ${PREFIX}/etc/periodic/daily/510.assp
187
	${INSTALL_SCRIPT} ${WRKDIR}/periodic-assp.sh ${PREFIX}/etc/periodic/daily/510.assp
158
188
Lines 161-167 Link Here
161
	${INSTALL_DATA} ${WRKSRC}/docs/*.htm ${DOCSDIR}
191
	${INSTALL_DATA} ${WRKSRC}/docs/*.htm ${DOCSDIR}
162
.endif
192
.endif
163
193
164
post-install:
165
	@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
166
167
.include <bsd.port.post.mk>
194
.include <bsd.port.post.mk>
(-)mail/assp/distinfo (-3 / +3 lines)
Lines 1-3 Link Here
1
MD5 (ASSP_1.4.3.1-Install.zip) = 95191c8a081601a5b80557ad606d867a
1
MD5 (ASSP_1.5.1.2-Install.zip) = 6a806880fae5e5ec8374cde7188c7cb4
2
SHA256 (ASSP_1.4.3.1-Install.zip) = 09331ad8ec7fddb381d4898ef0ed51990a01ce115a47c4b2a8c7a601f800c263
2
SHA256 (ASSP_1.5.1.2-Install.zip) = 42551b537786713b2690673ba8ae939810c461d5328ebea5f0fc94b5d3dab454
3
SIZE (ASSP_1.4.3.1-Install.zip) = 414570
3
SIZE (ASSP_1.5.1.2-Install.zip) = 443863
(-)mail/assp/files/assp.8.in (-3 lines)
Lines 271-279 Link Here
271
.I rebuildspamdb.pl
271
.I rebuildspamdb.pl
272
and
272
and
273
.IR freshclam.sh .
273
.IR freshclam.sh .
274
.SH BUGS
275
.I ASSP
276
currently has no IPv6 support.
277
.SH "SEE ALSO"
274
.SH "SEE ALSO"
278
.IR procmail (1),
275
.IR procmail (1),
279
.IR assplog (8),
276
.IR assplog (8),
(-)mail/assp/files/assplog.8.in (-74 / +16 lines)
Lines 1-6 Link Here
1
.TH assplog 8 "May 16, 2005" "" "ASSP"
1
.TH assplog 8 "May 16, 2005" "" "ASSP"
2
.SH NAME
2
.SH NAME
3
assplog \- display colorized ASSP log
3
assplog \- ASSP log pretty-printer
4
.SH SYNOPSIS
4
.SH SYNOPSIS
5
assplog
5
assplog
6
.SH DESCRIPTION
6
.SH DESCRIPTION
Lines 8-14 Link Here
8
uses
8
uses
9
.B "tail -f"
9
.B "tail -f"
10
to monitor the ASSP Anti-Spam SMTP Proxy log and then displays
10
to monitor the ASSP Anti-Spam SMTP Proxy log and then displays
11
logged messages using ANSI color sequences for easy reading.
11
logged messages using ANSI color sequences and reformatted to
12
a consistent layout for easy reading.
13
.PP
14
.I assplog
15
works best on terminal windows of around 120 columns or wider.
16
It also assumes a black background as whitelisted messages are
17
displayed colored white.  If you normally use a white background,
18
use Ctrl-MiddleButton and select Enable Reverse Video.
12
.PP
19
.PP
13
The colors have the following meaning:
20
The colors have the following meaning:
14
.PP
21
.PP
Lines 25-30 Link Here
25
2. Messages that were blocked
32
2. Messages that were blocked
26
.RS
33
.RS
27
.TP
34
.TP
35
Cyan
36
Message was delayed (sending MTA should retry later)
37
.TP
28
Blue
38
Blue
29
Recipient unknown (failed flat list or LDAP check)
39
Recipient unknown (failed flat list or LDAP check)
30
.TP
40
.TP
Lines 38-123 Link Here
38
3. Administrative messages
48
3. Administrative messages
39
.RS
49
.RS
40
.TP
50
.TP
41
Cyan
42
Message to assp{notspam,spam,white}@ address
43
.TP
44
Yellow
51
Yellow
45
Admin change from web interface
52
Admin change from web interface
46
.TP
53
.TP
47
Grey
54
Grey
48
Messages about ASSP's operation
55
Messages about ASSP's operation, including messages to
56
assp{notspam,spam,white}@ address
49
.RE
57
.RE
50
.PP
51
Entries from the log are reformatted to a consistent format and
52
classified with one of the following tags:
53
.TP
54
BA
55
Bad attachement rejected
56
.TP
57
BL
58
DNSBL check failed
59
.TP
60
BS
61
Bayesian spam check failed
62
.TP
63
DL
64
Message from unknown sender delayed, sender requested to retry later
65
.TP
66
EM
67
message to ASSP's email interface (e.g., spam/notspam report, redlist addition)
68
.TP
69
HL
70
Bad HELO greeting
71
.TP
72
IO
73
Invalid sender for internal recipient - internal-only recipient
74
.TP
75
IR
76
Invalid recipient, failed LDAP or flat list test
77
.TP
78
IS
79
Invalid sender
80
.TP
81
LW
82
Local or Whitelisted emails
83
.TP
84
MA
85
Malformed RFC822 recipient address
86
.TP
87
ME
88
Maximum number of other errors exceeded
89
.TP
90
NP
91
Email that passed without being processed
92
.TP
93
OK
94
Email that fully passed all tests
95
.TP
96
PB
97
Penalty Box counter was incremented
98
.TP
99
RB
100
Blocked Relay attempt
101
.TP
102
SP
103
SPF check failed
104
.TP
105
VI
106
Virus detected
107
.TP
108
W+
109
Whitelist addition by local user
110
.TP
111
W-
112
Whitelist deletion by local user
113
.TP
114
WC
115
Whitelist addition of address CC'd in whitelisted email
116
.SH BUGS
58
.SH BUGS
117
Note that
59
Note that
118
.I assplog
60
.I assplog
119
suppresses many of the messages in the log (those that appear
61
suppresses some of the message lines from the in actual log (those that report
120
to duplicate information in other messages).
62
penalty scoring and some socket level information, for example).
121
Unknown/new log messages are not colorized.
63
Unknown/new log messages are not colorized.
122
FOR A COMPLETE AND ACCURATE VIEW OF
64
FOR A COMPLETE AND ACCURATE VIEW OF
123
THE LOG, USE
65
THE LOG, USE
(-)mail/assp/files/assplog.pl.in (+183 lines)
Line 0 Link Here
1
#!%%PREFIX%%/bin/perl
2
# assplog.pl
3
#	ASSP log pretty-printer
4
#
5
6
# xterm foreground color codes
7
$black	 = "30";
8
$red	 = "31";
9
$green	 = "32";
10
$yellow	 = "33";
11
$blue	 = "34";
12
$magenta = "35";
13
$cyan	 = "36";
14
$white	 = "37";
15
16
$columns = $ENV{"COLUMNS"};
17
$columns = 120 if (!$columns || $columns < 120);
18
19
$lines = $ENV{"LINES"};
20
$lines = 50 if (!$lines);
21
22
if (!open (LOG, "tail -500f %%ASSP_LOG%%/maillog.txt |")) {
23
	print STDERR "assplog: cannot open ASSP log\n";
24
	exit(1);
25
}
26
27
$ipwide = 0;
28
while (<LOG>) {
29
	chop;
30
	undef $l;
31
	($l->{date}, $l->{time}, $l->{rest}) = split(/\s+/, $_, 3);
32
	$patt = ".*[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]";
33
	if ($l->{rest} =~ m,^($patt)\s,) {
34
		($l->{msgid}, $l->{rest}) = $l->{rest} =~ m,^($patt)\s+(.*)$,;
35
	}
36
	$patt = "\\[[^]]+]";
37
	if ($l->{rest} =~ m,^($patt)\s,) {
38
		($l->{code}, $l->{rest}) = $l->{rest} =~ m,^($patt)\s+(.*)$,;
39
	}
40
	$patt = "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+|(:?[0-9a-fA-F]*){0,7}:[0-9a-fA-F]+";
41
	if ($l->{rest} =~ m,^($patt)\s,) {
42
		($l->{cliIP}, $x, $l->{rest}) = $l->{rest} =~ m,^($patt)\s+(.*)$,;
43
	}
44
	$patt = "<([^@>]+@[^@>]+)?>";
45
	if ($l->{rest} =~ m,^($patt)\s,) {
46
		($l->{sender}, $x, $l->{rest}) = $l->{rest} =~ m,^($patt)\s+(.*)$,;
47
	}
48
	$l->{code} = "[BlockReport]"	if ($l->{rest} =~ /blocked email report/);
49
	$l->{code} = "[Connection]"	if ($l->{rest} =~ /Connection idle for [0-9]+ secs - timeout/);
50
	$l->{code} = "[DenyStrict]"	if ($l->{rest} =~ /denied by denySMTPConnections strict:/);
51
	$l->{code} = "[SenderBaseErr]"	if ($l->{rest} =~ / Foreign Country/);
52
	$l->{code} = "[SpamReport]"	if ($l->{rest} =~ /^(H|Sp)am-Report:|email: (sp|h)amreport/);
53
	$l->{code} = "[MaxErrors]"	if ($l->{rest} =~ /max errors \([0-9]+\) exceeded -- dropping connection/);
54
	$l->{code} = "[Connection]"	if ($l->{rest} =~ /no recipients left -- dropping connection/);
55
	$l->{code} = "[Connection]"	if ($l->{rest} =~ /not delayed /);
56
	$l->{code} = "[RWL]"		if ($l->{rest} =~ /Received-RWL: whitelisted from/);
57
	$l->{code} = "[Delayed]"	if ($l->{rest} =~ /recipient delayed:/);
58
	$l->{code} = "[SPF]"		if ($l->{rest} =~ /Regex:SPFstrict/);
59
	$l->{code} = "[SenderBase]"	if ($l->{rest} =~ / Regex:WhiteOrg/);
60
	$l->{code} = "[SenderBaseInfo]"	if ($l->{rest} =~ /SenderBase Info/);
61
	$l->{code} = "[Connection]"	if ($l->{rest} =~ /\[SMTP Status]/);
62
	$l->{code} = "[SenderBase]"	if ($l->{rest} =~ /White Organization\/Domain in SenderBase:/);
63
	$l->{code} = "[WhiteAddition]"	if ($l->{rest} =~ /whitelist addition/);
64
	$l->{code} = "[WhiteDeletion]"	if ($l->{rest} =~ /whitelist deletion/);
65
	if ($l->{code}) {
66
		next if ($l->{code} =~ /\[SMTP Error]/);
67
		next if ($l->{code} =~ /\[SMTP Reply]/);
68
		next if ($l->{code} =~ /\[spam found]/);
69
		$l->{color} = $magenta	if ($l->{code} =~ /\[Attachment]/);
70
		$l->{color} = $magenta	if ($l->{code} =~ /\[Backscatter]/);
71
		$l->{color} = $red	if ($l->{code} =~ /\[Bayesian]/);
72
		$l->{color} = $magenta	if ($l->{code} =~ /\[BlackDomain]/);
73
		$l->{color} = $magenta	if ($l->{code} =~ /\[BlackHELO]/);
74
		$l->{color} = $white	if ($l->{code} =~ /\[BlockReport]/);
75
		$l->{color} = $magenta	if ($l->{code} =~ /\[BombBlack]/);
76
		$l->{color} = $magenta	if ($l->{code} =~ /\[BombData]/);
77
		$l->{color} = $magenta	if ($l->{code} =~ /\[BombHeader]/);
78
		$l->{color} = $magenta	if ($l->{code} =~ /\[BombRaw]/);
79
		$l->{color} = $magenta	if ($l->{code} =~ /\[BombScript]/);
80
		$l->{color} = $magenta	if ($l->{code} =~ /\[BombSender]/);
81
		$l->{color} = $magenta	if ($l->{code} =~ /\[BounceAddress]/);
82
		$l->{color} = $magenta	if ($l->{code} =~ /\[Collect]/);
83
		$l->{color} = $black	if ($l->{code} =~ /\[Connection]/);
84
		$l->{color} = $magenta	if ($l->{code} =~ /\[CountryCode]/);
85
		$l->{color} = $cyan	if ($l->{code} =~ /\[Delayed]/);
86
		$l->{color} = $magenta	if ($l->{code} =~ /\[DenyIP]/);
87
		$l->{color} = $magenta	if ($l->{code} =~ /\[DenyStrict]/);
88
		$l->{color} = $magenta	if ($l->{code} =~ /\[DNSBL]/);
89
		$l->{color} = $magenta	if ($l->{code} =~ /\[Extreme]/);
90
		$l->{color} = $magenta	if ($l->{code} =~ /\[ForgedHELO]/);
91
		$l->{color} = $magenta	if ($l->{code} =~ /\[ForgedLocalSender]/);
92
		$l->{color} = $magenta	if ($l->{code} =~ /\[FromMissing]/);
93
		$l->{color} = $magenta	if ($l->{code} =~ /\[History]/);
94
		$l->{color} = $magenta	if ($l->{code} =~ /\[InternalAddress]/);
95
		$l->{color} = $blue	if ($l->{code} =~ /\[InvalidAddress]/);
96
		$l->{color} = $magenta	if ($l->{code} =~ /\[InvalidHELO]/);
97
		$l->{color} = $magenta	if ($l->{code} =~ /\[IPfrequency]/);
98
		$l->{color} = $magenta	if ($l->{code} =~ /\[IPperDomain]/);
99
		$l->{color} = $white	if ($l->{code} =~ /\[Local]/);
100
		$l->{color} = $magenta	if ($l->{code} =~ /\[MalformedAddress]/);
101
		$l->{color} = $magenta	if ($l->{code} =~ /\[MaxErrors]/);
102
		$l->{color} = $green	if ($l->{code} =~ /\[MessageOK]/);
103
		$l->{color} = $magenta	if ($l->{code} =~ /\[MessageScore]/);
104
		$l->{color} = $magenta	if ($l->{code} =~ /\[MissingMX]/);
105
		$l->{color} = $magenta	if ($l->{code} =~ /\[MsgID]/);
106
		$l->{color} = $green	if ($l->{code} =~ /\[NoProcessing]/);
107
		$l->{color} = $magenta	if ($l->{code} =~ /\[Organization]/);
108
		$l->{color} = $magenta	if ($l->{code} =~ /\[OversizedHeader]/);
109
		$l->{color} = $magenta	if ($l->{code} =~ /\[PenaltyBox]/);
110
		$l->{color} = $magenta	if ($l->{code} =~ /\[Penalty]/);
111
		$l->{color} = $magenta	if ($l->{code} =~ /\[PTRinvalid]/);
112
		$l->{color} = $magenta	if ($l->{code} =~ /\[PTRmissing]/);
113
		$l->{color} = $magenta	if ($l->{code} =~ /\[RelayAttempt]/);
114
		$l->{color} = $green	if ($l->{code} =~ /\[RWL]/);
115
		$l->{color} = $green	if ($l->{code} =~ /\[SenderBase]/);
116
		$l->{color} = $magenta	if ($l->{code} =~ /\[SenderBaseErr]/);
117
		$l->{color} = $black	if ($l->{code} =~ /\[SenderBaseInfo]/);
118
		$l->{color} = $black	if ($l->{code} =~ /\[SpamReport]/);
119
		$l->{color} = $magenta	if ($l->{code} =~ /\[SPF]/);
120
		$l->{color} = $magenta	if ($l->{code} =~ /\[SpoofedSender]/);
121
		$l->{color} = $magenta	if ($l->{code} =~ /\[SRS]/);
122
		$l->{color} = $magenta	if ($l->{code} =~ /\[SuspiciousHelo]/);
123
		$l->{color} = $magenta	if ($l->{code} =~ /\[Trap]/);
124
		$l->{color} = $magenta	if ($l->{code} =~ /\[URIBL]/);
125
		$l->{color} = $magenta	if ($l->{code} =~ /\[VIRUS]/);
126
		$l->{color} = $magenta	if ($l->{code} =~ /\[ValidHELO]/);
127
		$l->{color} = $white	if ($l->{code} =~ /\[WhiteAddition]/);
128
		$l->{color} = $white	if ($l->{code} =~ /\[WhiteDeletion]/);
129
		$l->{color} = $white	if ($l->{code} =~ /\[Whitelisted]/);
130
		$l->{color} = $magenta	if ($l->{code} =~ /\[WhitelistOnly]/);
131
		$ipwide-- if ($ipwide == 2 && $lines2 > $lines-1);
132
		$ipwide-- if ($ipwide == 1 && $lines1 > $lines-1);
133
		if ($l->{cliIP} =~ /:/ && length($l->{cliIP}) > 20) {
134
			$ipwide = 2 if ($ipwide < 2);
135
			$lines2 = 0;
136
		}
137
		elsif ($l->{cliIP} =~ /:/) {
138
			$ipwide = 1 if ($ipwide < 1);
139
			$lines1 = 0;
140
		}
141
		if ($ipwide == 2) {
142
			$cols = $columns - 9 - 1 - 8 - 1 - 39 - 1 - 18 - 1 - 28 - 1;
143
			printf "$l->{date} $l->{time} \033[1;$l->{color}m%-39s %-18s %-28.28s %-${cols}.${cols}s\033[0m\n", $l->{cliIP}, $l->{code}, $l->{sender}, $l->{rest};
144
		}
145
		elsif ($ipwide == 1) {
146
			$cols = $columns - 9 - 1 - 8 - 1 - 20 - 1 - 18 - 1 - 28 - 1;
147
			printf "$l->{date} $l->{time} \033[1;$l->{color}m%-20s %-18s %-28.28s %-${cols}.${cols}s\033[0m\n", $l->{cliIP}, $l->{code}, $l->{sender}, $l->{rest};
148
		}
149
		else {
150
			$cols = $columns - 9 - 1 - 8 - 1 - 15 - 1 - 18 - 1 - 28 - 1;
151
			printf "$l->{date} $l->{time} \033[1;$l->{color}m%-15s %-18s %-28.28s %-${cols}.${cols}s\033[0m\n", $l->{cliIP}, $l->{code}, $l->{sender}, $l->{rest};
152
		}
153
		$lines1++;
154
		$lines2++;
155
	}
156
	elsif ($l->{rest} =~ /^Admin/) {
157
		$l->{color} = $yellow;
158
		$cols = $columns - 9 - 1 - 8 - 1;
159
		printf "$l->{date} $l->{time} \033[1;$l->{color}m%-${cols}.${cols}s\033[0m\n", $l->{rest};
160
		$lines1++;
161
		$lines2++;
162
	}
163
	else {
164
		next if ($l->{rest} =~ /converting to SSL$/);
165
		next if ($l->{rest} =~ /^found .* in VERIFY-cache$/);
166
		next if ($l->{rest} =~ /IP-Score/);
167
		next if ($l->{rest} =~ /MessageScore/);
168
		next if ($l->{rest} =~ /Name Server .* ResponseTime/);
169
		next if ($l->{rest} =~ /New connection on the secure SSL port/);
170
		next if ($l->{rest} =~ /\[SMTP Error]/);
171
		next if ($l->{rest} =~ /\[spam found]/);
172
		next if ($l->{rest} =~ /^to: .* found .* in VERIFY-cache$/);
173
		next if ($l->{rest} =~ /^VRFY added .* to VRFY-\/LDAPlist$/);
174
		$l->{color} = $black;
175
		$cols = $columns - 9 - 1 - 8 - 1;
176
		printf "$l->{date} $l->{time} \033[1;$l->{color}m%-${cols}.${cols}s\033[0m\n", $l->{rest};
177
		$lines1++;
178
		$lines2++;
179
	}
180
}
181
182
close(LOG);
183
exit(0);
(-)mail/assp/files/extra-patch-assp.pl+SSL (-159 lines)
Lines 1-159 Link Here
1
--- assp.pl.orig	2009-01-26 17:49:10.000000000 -0500
2
+++ assp.pl	2009-01-26 22:10:17.000000000 -0500
3
@@ -97,6 +97,13 @@
4
 ['smtpDestination','SMTP Destination',40,\&textinput,'125','(\S*)',undef,
5
   'The IP <b>number!</b> and port number of your primary SMTP. If multiple servers are listed and the first listed MTA does not respond, each additional MTA will be tried. If only a port number is entered, or the dynamic keyword <b>INBOUND</b> is used with a port number, then the connection will be established to the local IP address on which the connection was received. This is useful when you have several IP addresses with different domains or profiles in your MTA. If INBOUND:PORT is used, ReportingReplies (Analyze,Help,etc and CopyMail will go to 127.0.0.1:PORT. If your needs are different, use smtpReportServer (SMTP Reporting Destination) and sendAllDestination (Copy Spam SMTP Destination)<small><i>Examples:</i> 125,  127.0.0.1:125, 127.0.0.1:125|127.0.0.5:125, INBOUND:125</small>','Basic'],
6
 
7
+['listenPortSSL','SMTP Secure Listen Port',20,\&textinput,'465','(\S+)','ConfigChangeMailPort',
8
+  'The port number on which ASSP will listen for incoming secure SMTP connections (normally 465). You can specify both an IP address and port number to limit connections to a specific interface.<p><small><i>Examples:</i> 465, 127.0.0.1:465, 127.0.0.1:465|127.0.0.2:465 </small></p><hr /><div class="menuLevel1">Notes On Network Setup</div><input type="button" value="Notes" onclick="javascript:popFileEditor(\'notes/network.txt\',3);" />','Basic'],
9
+['SSLCertFile','SSL Certificate File (PEM format)',48,\&textinput,'','(\S+)',undef,
10
+  "Path to the file containing the server's SSL certificate",'Basic'],
11
+['SSLKeyFile','SSL Key File (PEM format)',48,\&textinput,'','(\S+)',undef,
12
+  "Path to the file containing the server's SSL key",'Basic'],
13
+
14
 ['listenPort2','Second SMTP Listen Port',20,\&textinput,'','(\S*)','ConfigChangeMailPort2',
15
   'A secondary port number on which ASSP can accept SMTP connections. This is useful as a dedicated port for VPN clients or for those who cannot directly send mail to a mail server outside of their ISP\'s network because the ISP is blocking port 25. You may also specify an IP address to limit connections to a specific interface.<p><small><i>Examples:</i> 2525, 127.0.0.1:2525, 192.168.0.100:25000</small></p>'],
16
 ['smtpAuthServer','Second SMTP Destination',20,\&textinput,'','(\S*)',undef,
17
@@ -1639,6 +1646,8 @@
18
 our $CanUseSysMemInfo  = $AvailSysMemInfo;
19
 our $AvailNetSMTP      = eval('use Net::SMTP; 1');  # Net::SMTP module installed
20
 our $CanUseNetSMTP     = $AvailNetSMTP;
21
+our $AvailIOSocketSSL  = eval('use IO::Socket::SSL; 1');  # IO::Socket::SSL module installed
22
+our $CanUseIOSocketSSL = $AvailIOSocketSSL;
23
 
24
 
25
 #use URI::_foreign;
26
@@ -1747,6 +1756,7 @@
27
 our $VerEMM;
28
 our $VerNetSMTP;
29
 our $VerFileReadBackwards;
30
+our $VerIOSocketSSL;
31
 our $VerLWP;
32
 our $VerMailSPF2;
33
 our $VerMailSPF;
34
@@ -1770,6 +1780,7 @@
35
 our $CommentEMM;
36
 our $CommentNetSMTP;
37
 our $CommentFileReadBackwards;
38
+our $CommentIOSocketSSL;
39
 our $CommentLWP;
40
 our $CommentMailSPF2;
41
 our $CommentMailSPF;
42
@@ -1831,6 +1842,7 @@
43
 our $lookup_return;
44
 our $lsn2;
45
 our $lsn;
46
+our $lsnSSL;
47
 our $maillogEnd;
48
 our $maillogJump;
49
 our $minusIcon;
50
@@ -3095,6 +3107,14 @@
51
         $CommentNetSMTP="Verify Recipients not available";
52
         mlog(0,"Net::SMTP module not installed - Verify Recipients not available");
53
       }
54
+     if ($CanUseIOSocketSSL) {
55
+        $ver=eval('IO::Socket::SSL->VERSION'); $VerIOSocketSSL=$ver; $ver=" version $ver" if $ver;
56
+        mlog(0,"IO::Socket::SSL module$ver installed - secure SSL sockets available");
57
+        $CommentIOSocketSSL="Secure SSL sockets available";
58
+      } elsif (!$AvailIOSocketSSL) {
59
+        $CommentIOSocketSSL="Secure SSL sockets not available";
60
+        mlog(0,"IO::Socket::SSL module not installed - secure SSL sockets not available");
61
+      }
62
 
63
 
64
 
65
@@ -3111,6 +3131,11 @@
66
     mlog( 0, "NOT listening for SMTP connections on $listenPort" ) if !$lsn;
67
     mlog( 0, "NOT listening for ADMIN http connections on $webAdminPort" ) if !$WebSocket;
68
     mlog( 0, "NOT listening for STATISTICS http connections on $webStatPort" ) if !$StatSocket;
69
+    if ($CanUseIOSocketSSL && $listenPortSSL) {
70
+        $lsnSSL = newListen( $listenPortSSL, \&NewSMTPConnection );
71
+        mlog( 0, "listening for additional SMTP connections on $listenPortSSL" ) if $lsnSSL;
72
+        mlog( 0, "NOT listening for additional SMTP connections on $listenPortSSL" ) if !$lsnSSL;
73
+      }
74
     if ($listenPort2) {
75
         $lsn2 = newListen( $listenPort2, \&NewSMTPConnection );
76
         mlog( 0, "listening for additional SMTP connections on $listenPort2" ) if $lsn2;
77
@@ -4119,6 +4144,11 @@
78
         d(106);
79
         return;
80
       }
81
+    if ($CanUseIOSocketSSL && $fh == $lsnSSL && $SSLKeyFile ne '' && $SSLCertFile ne '') {
82
+	# connection on the secure SSL port
83
+	d(107);
84
+	IO::Socket::SSL->start_SSL($client, SSL_key_file => $SSLKeyFile, SSL_cert_file => $SSLCertFile, SSL_use_cert => 1, SSL_server => 1);
85
+      }
86
     $Con{$client}->{relayok} = $relayok;
87
     my $ip        = $client->peerhost();
88
     my $port      = $client->peerport();
89
@@ -4259,6 +4289,7 @@
90
             d("limiting sessions: $fh");
91
             $readable->remove($lsn)   if $lsn;
92
             $readable->remove($lsn2)  if $lsn2;
93
+            $readable->remove($lsnSSL) if $lsnSSL;
94
             $readable->remove($Relay) if $Relay;
95
             if ($SessionLog) {
96
                 mlog( 0, "connected: $ip:$port" )
97
@@ -4847,6 +4878,7 @@
98
         $smtpConcurrentSessions = 0 if $smtpConcurrentSessions < 0;
99
         $readable->add($lsn)   if $lsn   && ( !$readable->exists($lsn) );
100
         $readable->add($lsn2)  if $lsn2  && ( !$readable->exists($lsn2) );
101
+        $readable->add($lsnSSL) if $lsnSSL  && ( !$readable->exists($lsnSSL) );
102
         $readable->add($Relay) if $Relay && ( !$readable->exists($Relay) );
103
         $SMTPSession{Total}--  if $maxSMTPSessions;
104
         $SMTPSession{$ip}--    if $maxSMTPipSessions;
105
@@ -5454,6 +5486,27 @@
106
         $this->{rcvd} =~ s/=host/$helo2/;
107
         $this->{rcvd} =~ s/=\)/=$helo2\)/;
108
         $this->{rcvd} = &headerWrap( $this->{rcvd} );    # wrap long lines
109
+      } elsif ($CanUseIOSocketSSL && $l =~ /starttls/io) {
110
+	# write directly to $fh, bypassing buffering
111
+	$fh->write( "220 2.0.0 Ready to start TLS\r\n" );
112
+	# the value of $fh changes when converted to SSL
113
+	my $oldfh = $fh;
114
+	my $oldConfh = $Con{$fh};
115
+	# convert to SSL
116
+	IO::Socket::SSL->start_SSL($fh, SSL_key_file => $SSLKeyFile, SSL_cert_file => $SSLCertFile, SSL_use_cert => 1, SSL_server => 1);
117
+	# copy data from old $fh
118
+	$Con{$fh} = $oldConfh;
119
+	$Con{$fh}->{client} = $fh;
120
+	$SMTPSession{$fh} = $SMTPSession{$oldfh};
121
+	# clean up old $fh
122
+	delete $SocketCalls{$oldfh};
123
+	$readable->remove($oldfh);
124
+	$writable->remove($oldfh);
125
+	# set up new $fh
126
+	$SocketCalls{$fh} = \&SMTPTraffic;
127
+	$readable->add($fh);
128
+	d("SSL: $fh $Con{$fh}");
129
+	return;
130
       } elsif ( $l =~ /mail from:\s*<?($EmailAdrRe\@$EmailDomainRe|\s*)>?/io ) {
131
         my $fr = $1;
132
         my $RO_e = $1;
133
@@ -11007,15 +11060,22 @@
134
     return unless $cli;
135
     $Con{$cli}->{inerror} = $l =~ /^5[05][0-9]/;
136
 
137
-    if ( $l =~ /250-.*(CHUNKING|PIPELINING|XEXCH50|STARTTLS)/i ) {
138
+    if ( $l =~ /250-.*(CHUNKING|PIPELINING|XEXCH50)/i ) {
139
         return;
140
-      } elsif ( $l =~ /250 .*(CHUNKING|PIPELINING|XEXCH50|STARTTLS)/i ) {
141
+      } elsif ( $l =~ /250-.*STARTTLS/i && ($cli =~ /IO::Socket::SSL/ || !$CanUseIOSocketSSL) ) {
142
+	# suppress STARTTLS if SSL already enabled or unavailable
143
+	return;
144
+      } elsif ( $l =~ /250 .*STARTTLS/i && ($cli =~ /IO::Socket::SSL/ || !$CanUseIOSocketSSL) ) {
145
+	# change STARTTLS to NOOP if SSL already enabled or unavailable
146
+	sendque( $cli, "250 NOOP\r\n" );
147
+	return;
148
+      } elsif ( $l =~ /250 .*(CHUNKING|PIPELINING|XEXCH50)/i ) {
149
         sendque( $cli, "250 NOOP\r\n" );
150
         return;
151
 
152
-        # we'll filter off the chunking directive to avoid BDAT problems.
153
+        # we'll filter off the CHUNKING directive to avoid BDAT problems.
154
+        # we'll filter off the PIPELINING directive to avoid ... problems.
155
         # we'll filter off the XEXCH50 service, as it only causes troubles
156
-        # we'll filter off the STARTTLS directive to avoid TLS problems.
157
         d("$l");
158
 
159
       } elsif ( $l =~ /^220/ ) {
(-)mail/assp/files/patch-assp.pl (-28 / +8 lines)
Lines 1-37 Link Here
1
--- assp.pl.orig	2009-01-25 18:17:42.000000000 -0500
1
--- assp.pl.orig	2009-03-17 00:48:11.000000000 -0400
2
+++ assp.pl	2009-01-25 18:21:31.000000000 -0500
2
+++ assp.pl	2009-03-17 11:11:45.000000000 -0400
3
@@ -1,4 +1,4 @@
3
@@ -1,4 +1,4 @@
4
-#!/usr/bin/perl --
4
-#!/usr/bin/perl --
5
+#!/usr/local/bin/perl
5
+#!/usr/local/bin/perl --
6
 # perl antispam smtp proxy
6
 #use lib 'path/to/my/perlmods';
7
 # anti spam smtp proxy
7
 # (c) John Hanna, John Calvi, Robert Orso, AJ 2004 under the terms of the GPL
8
 # (c) John Hanna, John Calvi, Robert Orso, AJ 2004 under the terms of the GPL
8
 # (c) Fritz Borgstedt 2006 under the terms of the GPL
9
@@ -1537,7 +1537,7 @@
9
@@ -978,8 +978,8 @@
10
 ['ScanNP','Scan No Processing Senders',0,\&checkbox,'','(.*)',undef,''],
11
 ['ScanLocal','Scan Local Senders',0,\&checkbox,'','(.*)',undef,''],
12
 ['ScanCC','Scan Copied Spam Mails',0,\&checkbox,'','(.*)',undef,''],
13
-['AvClamdPort','Port or file socket for ClamAV',30,\&textinput,'/tmp/clamd','(\S+)',undef,
14
- 'A socket specified in the clamav.conf file - LocalSocket. For example /tmp/clamd. If the socket has been setup as a TCP/IP socket (see the TCPSocket option in the clamav.conf file), then specify the TCP socket. For example: 3310 '],
15
+['AvClamdPort','Port or file socket for ClamAV',30,\&textinput,'/var/run/assp/clamd','(\S+)',undef,
16
+ 'A socket specified in the clamav.conf file - LocalSocket. For example /var/run/assp/clamd. If the socket has been setup as a TCP/IP socket (see the TCPSocket option in the clamav.conf file), then specify the TCP socket. For example: 3310 '],
17
 ['ClamAVBytes','ClamAV Bytes',8,\&textinput,60000,'(\d*)',undef,
18
   'The number of bytes per message that will be submitted for virus scanning. Values of 100000 or larger are not recommended.'],
19
 ['ClamAVtimeout','ClamAV Timeout',3,\&textinput,10,'(\d*)',undef, 'ClamAV will timeout after this many seconds.<br /> default: 10 seconds.'],
20
@@ -1159,7 +1159,7 @@
21
   'A copy of the Analyze-Report will be sent to this address. For example: admin@example.com'],
22
 ['DoAdditionalAnalyze','Spam and Ham Reports will trigger an additional Analyze Report ','0:NO ADDITIONAL REPORT|1:SEND TO SENDER|2:SEND TO EmailAnalyzeTo|3:SEND TO BOTH',\&listbox,0,'(.*)',undef,
23
   'Additional Analyze Report will be generated for Spam and Ham Reports. Setting the TO Address accordingly and choosing <b>EmailAnalyzeTo</b> will send the Analyze Report to the admin only.'],
24
-['EmailFrom','From Address for Reports',40,\&textinput,'<spammaster@yourdomain.com>','(.*@.*)?',undef,
25
+['EmailFrom','From Address for Reports',40,\&textinput,'<postmaster@yourdomain.com>','(.*@.*)?',undef,
26
   'Email sent from ASSP acknowledging your submissions will be sent from this address.'],
27
 ['EmailAllowEqual','Allow \'=\' in Addresses',0,\&checkbox,'1','(.*)',undef,
28
   'Allow \'=\' in addresses to be whitelisted or redlisted.'],
29
@@ -1404,7 +1404,7 @@
30
 
10
 
31
 [0,0,0,'heading','Server Setup'],
11
 [0,0,0,'heading','Server Setup'],
32
 ['AsAService','Run ASSP as a Windows Service',0,\&checkbox,'','(.*)',undef,'In Windows NT/2000/XP/2003 ASSP can be installed as a service. This setting tells ASSP that this has been done -- it does not install the Windows service for you. Installing ASSP as a service requires several steps which are detailed in the <a href="http://www.asspsmtp.org/wiki/Quick_Start_for_Win32">Quick Start for Win32</a> wiki page.<br /> <span class="negative"> requires ASSP restart</span>'],
12
 ['AsAService','Run ASSP as a Windows Service',0,\&checkbox,'','(.*)',undef,'In Windows NT/2000/XP/2003 ASSP can be installed as a service. This setting tells ASSP that this has been done -- it does not install the Windows service for you. Installing ASSP as a service requires several steps which are detailed in the <a href="http://apps.sourceforge.net/mediawiki/assp/index.php?title=Win32">Quick Start for Win32</a> doku page.<br /> <span class="negative"> requires ASSP restart</span>'],
33
-['AsADaemon','Run ASSP as a Daemon',0,\&checkbox,'','(.*)',undef,'In Linux/BSD/Unix/OSX fork and close file handles. Similar to the command "perl assp.pl &amp;", but better.<br />
13
-['AsADaemon','Run ASSP as a Daemon',0,\&checkbox,'','(.*)',undef,'In Linux/BSD/Unix/OSX fork and close file handles. Similar to the command "perl assp.pl &amp;", but better.<br />
34
+['AsADaemon','Run ASSP as a Daemon',0,\&checkbox,'1','(.*)',undef,'In Linux/BSD/Unix/OSX fork and close file handles. Similar to the command "perl assp.pl &amp;", but better.<br />
14
+['AsADaemon','Run ASSP as a Daemon',0,\&checkbox,1,'(.*)',undef,'In Linux/BSD/Unix/OSX fork and close file handles. Similar to the command "perl assp.pl &amp;", but better.<br />
35
   <span class="negative"> requires ASSP restart</span>'],
15
   <span class="negative"> requires ASSP restart</span>'],
36
 ['runAsUser','Run as UID',20,\&textinput,'','(\S*)',undef,'The *nix user name to assume after startup (*nix only).<p><small><i>Examples:</i> assp, nobody</small></p>
16
 ['runAsUser','Run as UID',20,\&textinput,'','(\S*)',undef,'The *nix user name to assume after startup (*nix only).<p><small><i>Examples:</i> assp, nobody</small></p>
37
   <span class="negative"> requires ASSP restart</span>'],
17
   <span class="negative"> requires ASSP restart</span>'],
(-)mail/assp/files/patch-stats.sh (-442 lines)
Lines 1-442 Link Here
1
--- stats.sh.orig	2009-01-29 13:19:18.000000000 -0500
2
+++ stats.sh	2009-01-29 20:27:14.000000000 -0500
3
@@ -1,15 +1,23 @@
4
 #!/bin/sh
5
 
6
+# This version of the script is heavily modified from the now
7
+# unsupported original.
8
+#
9
+# This version by:
10
+#	J.R. Oldroyd <fbsd@opal.com>
11
+#	FreeBSD port maintained for ASSP
12
+#
13
+
14
 # As a shell script (running on Unix...) it expects to find the local
15
 # copy of your standard Unix shell, the 'tail' utility and a working 'awk'
16
 # interpreter.
17
 
18
-# I use the default location for ASSP's maillog file, and the 'maillog.log'
19
+# I use the default location for ASSP's maillog file, and the 'maillog.txt'
20
 # name (in assp.cfg) to keep ASSP from changing it on me.
21
 
22
-# This script attempts to go back at least 300 lines in your maillog.log
23
+# This script attempts to go back at least 300 lines in your maillog.txt
24
 # file to give you a nice screenful of goodies to review when it
25
-# first starts.  If your maillog.log is nearly empty, then just
26
+# first starts.  If your maillog.txt is nearly empty, then just
27
 # be patient. As things happen - the logger will reveal it in COLOR!
28
 # ------------------------------------ KRL -------------------------
29
 
30
@@ -27,14 +35,7 @@
31
 #  order to give you a full screen on startup. Also, it assumes
32
 #  ANSI Color mode for your screen to display the lines in color.
33
 #
34
-# BS (in Red) lines are those caught by the Bayesian filter !!
35
-# LW (in White .. mostly) are those Local or Whitelisted eMails
36
-# Ok (in Green) are eMail that fully pass alltests without exceptions.
37
-# RB (in Cyan) .. Blocked Relay attempt
38
-# WL+  Whitelist ADDITION by an authorized local user
39
-# BA (in Cyan) .. Bad ATTACHEMENT rejected
40
-# SR (in Cyan) .. spam@ report submission
41
-# NS (in Cyan) .. notspam@ report submission
42
+# See "man assplog" for a description of the fields and coloring.
43
 #
44
 # I got the idea for this script from Mark Constable. He submitted
45
 #  a similar script to follow the Courier-MTA /var/log/maillog
46
@@ -46,91 +47,315 @@
47
 # Some fields are truncated (with a hard-coded length value, usually 40)
48
 #   to keep each line more or less intact on your screen as things scroll by
49
 # Colors are coded with ANSI Color coding, your mileage may vary ...
50
-# I assume the naming convention of 'maillog.log' so ASSP won't munge
51
+# I assume the naming convention of 'maillog.txt' so ASSP won't munge
52
 #  each current log into some difficult-to-grok name.  You should try
53
 #  to use this feature - and perhaps roll the log periodically with
54
 #  your system's 'newsyslog' functionality. You can send a SIGHUP to
55
 #  ASSP when you roll the log so it starts afresh..KRL
56
 
57
-tail -300 -f /usr/local/assp/maillog.log | \
58
- awk  ' \
59
-  /whitelisted/ { \
60
-  printf("%s %s \033[1;32m%-15s L\033[0mW  %s \033[1;32m->\033[0m %s\n", \
61
-        substr($1,1,length($1)), \
62
-        substr($2,1,length($2)), \
63
-        substr($3,1,length($3)), \
64
-        substr($4,1,40), \
65
-        substr($6,1,length($6)) )\
66
-        } \
67
-  /email/ && /whitelist addition/ { \
68
-  printf("%s %s \033[1;32m%-15s W\033[0mA+ %s \033[1;32m->\033[0m %s\n", \
69
-        substr($1,1,length($1)), \
70
-        substr($2,1,length($2)), \
71
-        "+email address+", \
72
-        substr($4,1,40), \
73
-        substr($6,1,length($6)) )\
74
-        } \
75
-  /whitelist addition/ && !/email/ { \
76
-  printf("%s %s \033[1;32m%-15s W\033[0mL+ %s \033[1;32m %s %s\033[0m\n", \
77
-        substr($1,1,length($1)), \
78
-        substr($2,1,length($2)), \
79
-        substr($3,1,length($3)), \
80
-        substr($4,1,40), \
81
-        "-adds-", \
82
-        substr($9,1,length($9)) )\
83
-        } \
84
-  /Bayesian spam/ { \
85
-  printf("%s %s \033[1;31m%-15s BS  %s -> %s\033[0m\n", \
86
-          substr($1,1,length($1)), \
87
-          substr($2,1,length($2)), \
88
-          substr($3,1,length($3)), \
89
-          substr($4,1,40), \
90
-        substr($6,1,length($6)) )\
91
-        } \
92
-  /message ok/ { \
93
-  printf("%s %s \033[1;32m%-15s Ok  %s -> %s\033[0m\n", \
94
-        substr($1,1,length($1)), \
95
-        substr($2,1,length($2)), \
96
-        substr($3,1,length($3)), \
97
-        substr($4,1,40), \
98
-        substr($6,1,length($6)) )\
99
-        } \
100
-  /bad attachment/ { \
101
-        printf("%s %s \033[1;35m%-15s BA  %s -> %s\033[0m\n", \
102
-        substr($1,1,length($1)), \
103
-        substr($2,1,length($2)), \
104
-        substr($3,1,length($3)), \
105
-        substr($4,1,40), \
106
-        substr($6,1,length($6)) )\
107
-        } \
108
-  /relay attempt blocked/ { \
109
-        printf("%s %s \033[1;35m%-15s RB  %s -> %s %s %s %s %s\033[0m\n", \
110
-        substr($1,1,length($1)), \
111
-        substr($2,1,length($2)), \
112
-        substr($3,1,length($3)), \
113
-        substr($4,1,length($4)), \
114
-        substr($5,1,length($5)), \
115
-        substr($6,1,length($6)), \
116
-        substr($7,1,length($7)), \
117
-        substr($8,1,length($8)), \
118
-        substr($9,1,length($9)) )\
119
-        } \
120
-  /Admin update:/ { \
121
-  printf("\033[1;33m%s %s %s %s %s %s \033[0m\n", $1, $2, $3, $4, $5, $6) \
122
-        } \
123
-  /Email spamreport/ { \
124
-  printf("%s %s\033[0;36m %-15s SR  %s Email SPAM Submission\033[0m\n", \
125
-        substr($1,1,length($1)), \
126
-        substr($2,1,length($2)), \
127
-        substr($3,1,length($3)), \
128
-        substr($4,1,length($4)) ) \
129
-        } \
130
-  /Email hamreport/ { \
131
-  printf("%s %s\033[0;36m %-15s NS  %s Email NOTSPAM Submission\033[0m\n", \
132
-        substr($1,1,length($1)), \
133
-        substr($2,1,length($2)), \
134
-        substr($3,1,length($3)), \
135
-        substr($4,1,length($4)) ) \
136
- }'
137
+tail -300 -f /var/db/assp/maillog.txt | awk  '
138
+  {
139
+    # skip over "[reason]" fields
140
+    p=0
141
+    if ($(p+4) ~ /\[.*]/) p++
142
+  }
143
+  /\[Local]|\[Whitelisted]|local or whitelisted/ {
144
+    printf("%s %s \033[1;32m%-15s\033[0m \033[1;37mLW  %s\033[0m \033[1;32m->\033[0m \033[1;37m%s\033[0m\n",
145
+        $1,
146
+        $2,
147
+        $(p+4),
148
+        substr($(p+5),1,40),
149
+        $(p+7) )
150
+    next
151
+  }
152
+  /[Em]ail whitelist (addition|deletion):*/ {
153
+    if (/(addition|deletion)$/)
154
+	next
155
+    printf("%s %s \033[1;36m%-15s\033[0m \033[1;36mW%s  %s\033[0m \033[1;37m%s\033[0m \033[1;36m%s\033[0m\n",
156
+	$1,
157
+	$2,
158
+	$(p+4),
159
+	(/addition:/) ? "+" : "-",
160
+	substr($(p+5),1,40),
161
+        (/addition:/) ? "-adds-" : "-deletes-",
162
+	$(p+9) )
163
+    next
164
+  }
165
+  /whitelist addition:/ && !/[Ee]mail/ {
166
+    printf("%s %s \033[1;36m%-15s\033[0m \033[1;36mWC  %s\033[0m \033[1;37m%s\033[0m \033[1;36m%s\033[0m\n",
167
+	$1,
168
+	$2,
169
+	$(p+4),
170
+	substr($(p+5),1,40),
171
+        "-adds-",
172
+	$(p+10) )
173
+    next
174
+    next
175
+  }
176
+  /[Ee]mail (hamreport|help|spamreport|redlist)/ {
177
+    printf("%s %s\033[1;36m %-15s EM  %s %s%s\033[0m\n",
178
+        $1,
179
+        $2,
180
+        $(p+4),
181
+        $(p+5),
182
+	$(p+7),
183
+	($(p+8)) ? " " $(p+8) : "" )
184
+    next
185
+  }
186
+  /Bayesian Check (- )?Prob/ {
187
+    # suppress
188
+    next
189
+  }
190
+  /\[Bayesian]|Bayesian [Ss]pam/ {
191
+    printf("%s %s \033[1;31m%-15s BS  %s -> %s\033[0m\n",
192
+        $1,
193
+        $2,
194
+        $(p+4),
195
+        substr($(p+5),1,40),
196
+        $(p+7) )
197
+    next
198
+  }
199
+  /recipient accepted/ {
200
+    # suppress
201
+    next
202
+  }
203
+  /\[MessageOK]|message ok/ {
204
+    printf("%s %s \033[1;32m%-15s OK  %s -> %s\033[0m\n",
205
+        $1,
206
+        $2,
207
+        $(p+4),
208
+        substr($(p+5),1,40),
209
+        $(p+7) )
210
+    next
211
+  }
212
+  /bad attachment/ && !/no bad/ {
213
+        printf("%s %s \033[1;35m%-15s BA  %s -> %s\033[0m\n",
214
+        $1,
215
+        $2,
216
+        $(p+4),
217
+        substr($(p+5),1,40),
218
+        $(p+7) )
219
+    next
220
+  }
221
+  /relay attempt blocked/ {
222
+        printf("%s %s \033[1;35m%-15s RB  %s -> %s\033[0m\n",
223
+        $1,
224
+        $2,
225
+        $(p+4),
226
+        substr($(p+5),1,40),
227
+        ($(p+10) ~ /^(.*):$/) ? $(p+11) : $(p+10) )
228
+    next
229
+  }
230
+  /no recipients left -- dropping connection/ {
231
+    # suppress
232
+    next
233
+  }
234
+  /[Ii]nvalid address rejected/ {
235
+    printf("%s %s \033[1;34m%-15s IR  %s -> %s\033[0m\n",
236
+        $1,
237
+        $2,
238
+        $(p+4),
239
+        substr($(p+5),1,40),
240
+        $NF )
241
+    next
242
+  }
243
+  /malformed address/ {
244
+    printf("%s %s \033[1;35m%-15s MA  %s -> %s\033[0m\n",
245
+        $1,
246
+        $2,
247
+        $(p+4),
248
+        substr($(p+5),1,40),
249
+        $(p+8) )
250
+    next
251
+  }
252
+  /\[InvalidLocalSender]|Unknown Sender (with|from) Local Domain/ {
253
+    printf("%s %s \033[1;34m%-15s IS  %s\033[0m\n",
254
+        $1,
255
+        $2,
256
+        $(p+4),
257
+        substr($(p+5),1,40) )
258
+    next
259
+  }
260
+  /(Commencing|Completed) (R|DNS|URI)BL checks/ {
261
+    # suppress
262
+    next
263
+  }
264
+  /((DNS|URI)BL )?Received-(R|DNS|URI)BL: (pass|neutral|fail)|URIBL fail|Bayesian Check URIBL/ {
265
+    # suppress
266
+    next
267
+  }
268
+  /failed (DNS|URI)BL|failed (R|URI)BL checks|Received-RBL: fail/ {
269
+    printf("%s %s \033[1;35m%-15s BL  %s -> %s\033[0m\n",
270
+        $1,
271
+        $2,
272
+        $(p+4),
273
+        substr($(p+5),1,40),
274
+        $(p+7) )
275
+    next
276
+  }
277
+  /(\[DNSBL]|\[DNSBLcache]).* (listed|rejected) by / {
278
+    printf("%s %s \033[1;35m%-15s BL  %s (%s blacklisted by %s)\033[0m\n",
279
+        $1,
280
+        $2,
281
+        $(p+4),
282
+        substr($(p+5),1,40),
283
+        /listed/ ? $(p+11) : $(p+7),
284
+	/listed/ ? $(p+14) : $(p+10) )
285
+    next
286
+  }
287
+  /\[SPF] .* SPF: (unknown|pass|neutral)|\[SPF] .*\(SPF neutral\)|Received-SPF(\(cache\))?: (pass|neutral)| SPF: (soft)?fail|SPFstrict/ {
288
+    # suppress
289
+    next
290
+  }
291
+  /failed SPF checks|Received-SPF(\(cache\))?: ((soft)?fail|error)/ {
292
+    printf("%s %s \033[1;35m%-15s SP  %s -> %s\033[0m\n",
293
+        $1,
294
+        $2,
295
+        $(p+4),
296
+        substr($(p+5),1,40),
297
+        $(p+7) )
298
+    next
299
+  }
300
+  /\[ForgedHELO]|has spam helo|HELO-Blacklist:/ {
301
+    printf("%s %s \033[1;35m%-15s HL  %s -> %s %s\033[0m\n",
302
+        $1,
303
+        $2,
304
+        $(p+4),
305
+        substr($(p+5),1,40),
306
+        /found]/ ? "" : $(p+7),
307
+        /found]/ ? "(" $(p+10) : $(p+11) )
308
+    next
309
+  }
310
+  /Forged HELO:/ {
311
+    printf("%s %s \033[1;35m%-15s HL  %s -> %s\033[0m\n",
312
+        $1,
313
+        $2,
314
+        $(p+4),
315
+        substr($(p+5),1,40),
316
+        $(p+8) )
317
+    next
318
+  }
319
+  /Sender Validation:blocked:/ {
320
+    printf("%s %s \033[1;35m%-15s HL  %s %s\033[0m\n",
321
+        $1,
322
+        $2,
323
+        $(p+4),
324
+        substr($(p+5),1,40),
325
+        $(p+10) )
326
+    next
327
+  }
328
+  /(adding new|embargoing|accepting|whitelisting) triplet|(renewing|renewing whitelisted|deleting spamming whitelisted) tuplet/ {
329
+    # suppress
330
+    next
331
+  }
332
+  /(recipient|bounce) delayed/ {
333
+    printf("%s %s \033[1;35m%-15s DL  %s -> %s\033[0m\n",
334
+        $1,
335
+        $2,
336
+        $(p+4),
337
+        substr($(p+5),1,40),
338
+        /bounce|to:/ ? $(p+7) : $(p+8) )
339
+    next
340
+  }
341
+  /DATA phase delayed/ {
342
+    # suppress
343
+    next
344
+  }
345
+  /(Admin (update:|connection from ))|AdminUpdate:/ {
346
+    printf("\033[1;33m%s\033[0m\n", $0)
347
+    next
348
+  }
349
+  /ClamAV: .* - OK $/ {
350
+    # suppress
351
+    next
352
+  }
353
+  /virus detected/ {
354
+    printf("%s %s\033[1;35m %-15s VI  %s -> %s (%s)\033[0m\n",
355
+	$1,
356
+	$2,
357
+	$(p+4),
358
+	$(p+5), $(p+7), $(p+10) )
359
+    next
360
+  }
361
+  /Message-Score:/ {
362
+    # suppress
363
+    next
364
+  }
365
+  /PB:.*score: [0-9]+\+[0-9]+ => [0-9]+ reason:|PB-Message-Score|PB-IP-Score|\[scoring]/ {
366
+    # suppress
367
+    next
368
+  }
369
+#  /PB:( deleting\(black\)/ {
370
+#    printf("%s %s\033[1;35m %-15s PB  %s %s %s %s (%s)\033[0m\n",
371
+#	$1,
372
+#	$2,
373
+#	$(p+4),
374
+#	$(p+8), $(p+9), $(p+10), $(p+11),
375
+#	substr($(p+12),8,40) )
376
+#    next
377
+#  }
378
+  /PBextreme |PBextreme:monitoring/ {
379
+    printf("%s %s\033[1;35m %-15s PB  %s extreme %s\033[0m\n",
380
+	$1,
381
+	$2,
382
+	$(p+4),
383
+	substr($(p+5),1,40),
384
+	$(p+7) )
385
+    next
386
+  }
387
+  /(\[ValidHelo]|\[InvalidHelo]|\[PTRinvalid]|\[PTRmissing])\[scoring]/ {
388
+    # suppress
389
+    next
390
+  }
391
+  /\[MessageLimit]|Message Limit/ {
392
+    printf("%s %s\033[1;35m %-15s PB  %s -> %s\033[0m\n",
393
+	$1,
394
+	$2,
395
+	$(p+4),
396
+	substr($(p+5),1,40),
397
+	substr($(p+7),1,40) )
398
+    next
399
+  }
400
+  /max errors \([0-9]+\) exceeded/ {
401
+    printf("%s %s\033[1;35m %-15s ME  %s\033[0m\n",
402
+	$1,
403
+	$2,
404
+	$(p+4),
405
+	substr($(p+5),1,40) )
406
+    next
407
+  }
408
+  /Message proxied without processing/ {
409
+    # suppress
410
+    next
411
+  }
412
+  /message proxied without processing/ {
413
+    printf("%s %s \033[1;32m%-15s NP  %s -> %s\033[0m\n",
414
+        $1,
415
+        $2,
416
+        $(p+4),
417
+        substr($(p+5),1,40),
418
+        $(p+7) )
419
+    next
420
+  }
421
+  /Regex:(Black|NoProcessingDomain)/ {
422
+    # suppress
423
+    next
424
+  }
425
+  /invalid remote sender for internal address/ {
426
+    printf("%s %s \033[1;35m%-15s IO  %s -> %s\033[0m\n",
427
+        $1,
428
+        $2,
429
+        $(p+4),
430
+        $(p+5),
431
+        substr($(p+12),1,40) )
432
+    next
433
+  }
434
+  {
435
+    printf("%s %s ", $1, $2)
436
+    for (i=3; i<=NF; i++)
437
+	printf("\033[1;30m%s\033[0m ", $i)
438
+    printf("\n")
439
+  }
440
+ '
441
 # end of script
442
 
(-)mail/assp/files/periodic-assp.sh.in (-18 / +7 lines)
Lines 2-31 Link Here
2
#
2
#
3
# $FreeBSD: ports/mail/assp/files/periodic-assp.sh.in,v 1.3 2008/08/16 18:12:15 beech Exp $
3
# $FreeBSD: ports/mail/assp/files/periodic-assp.sh.in,v 1.3 2008/08/16 18:12:15 beech Exp $
4
#
4
#
5
# Update ASSP Spam and ClamAV databases
5
# Run ASSP's nightly housekeeping script, rebuildspamdb.pl
6
# Delete old ASSP log files
6
7
7
cd %%ASSP_HOME%%
8
cd %%ASSP_HOME%%
8
9
9
if [ ! -f %%PREFIX%%/lib/assp/rebuildspamdb.pl ]
10
if [ ! -f %%DATADIR%%/rebuildspamdb.pl ]
10
then
11
then
11
	echo "%%PREFIX%%/lib/assp/rebuildspamdb.pl does not exist"
12
	echo "%%DATADIR%%/rebuildspamdb.pl does not exist"
12
	rc_spamdb=2
13
	rc_spamdb=2
13
else
14
else
14
	echo ""
15
	echo ""
15
	echo "Running ASSP rebuildspamdb.pl:"
16
	echo "Running ASSP rebuildspamdb.pl:"
16
	%%PERL%% %%PREFIX%%/lib/assp/rebuildspamdb.pl && rc_spamdb=0 || rc_spamdb=3
17
	%%PERL%% %%DATADIR%%/rebuildspamdb.pl && rc_spamdb=0 || rc_spamdb=3
17
fi
18
19
if [ ! -f %%PREFIX%%/lib/assp/freshclam.sh ]
20
then
21
	# existence of freshclam.sh is optional, dependent
22
	# on the WITH_CLAMAV setting, so not an error if not there
23
	rc_clamav=0
24
else
25
	echo ""
26
	echo "Fetching ASSP ClamAV virus database updates:"
27
	export PATH=$PATH:%%LOCALBASE%%/bin
28
	sh %%PREFIX%%/lib/assp/freshclam.sh && rc_clamav=0 || rc_clamav=3
29
fi
18
fi
30
19
31
. %%RC_SUBR%%
20
. %%RC_SUBR%%
Lines 36-41 Link Here
36
25
37
echo ""
26
echo ""
38
echo "Removing old ASSP log files:"
27
echo "Removing old ASSP log files:"
39
find . -name '*.maillog.txt' -mtime +$assp_logexpire -exec ls -l {} \; -exec rm {} \;
28
find -L . -name '*.maillog.txt' -mtime +$assp_logexpire -exec ls -l {} \; -exec rm {} \;
40
29
41
exit $(($rc_spamdb|$rc_clamav))
30
exit $rc_spamdb
(-)mail/assp/files/pkg-install.in (-8 lines)
Lines 1-8 Link Here
1
#!/bin/sh
2
3
if [ "$2" = "POST-INSTALL" ]; then
4
    install -d -m 0700 -o %%ASSP_USER%% -g %%ASSP_GROUP%% %%ASSP_HOME%%
5
    ln -s $PKG_PREFIX/lib/assp/files %%ASSP_HOME%%
6
    ln -s $PKG_PREFIX/lib/assp/images %%ASSP_HOME%%
7
    ln -s $PKG_PREFIX/lib/assp/reports %%ASSP_HOME%%
8
fi
(-)mail/assp/pkg-descr (-3 / +5 lines)
Lines 4-10 Link Here
4
ASSP performs a number of configurable spam checks, and on detecting a spam
4
ASSP performs a number of configurable spam checks, and on detecting a spam
5
message, provides an immediate 5xx SMTP error code back to the client.
5
message, provides an immediate 5xx SMTP error code back to the client.
6
Non-spam messages are passed to your regular SMTP server for further
6
Non-spam messages are passed to your regular SMTP server for further
7
processing and delivery.
7
processing and delivery.  ASSP includes SSL and IPv6 support.  It is a single
8
script with a web-based configuration tool.
8
9
9
ASSP offers:
10
ASSP offers:
10
	- a whitelist of known good senders
11
	- a whitelist of known good senders
Lines 14-21 Link Here
14
	- HELO checking
15
	- HELO checking
15
	- SPF (Sender Policy Framework) checking
16
	- SPF (Sender Policy Framework) checking
16
	- DNSBL (DNS Block List) checking using many DNSBL services
17
	- DNSBL (DNS Block List) checking using many DNSBL services
18
	- various SMTP error modes detection
17
	- Virus detection
19
	- Virus detection
18
20
and many other spam detection techniques.
19
ASSP is a single script with a web-based configuration tool.
20
21
21
WWW: http://assp.sourceforge.net/
22
WWW: http://assp.sourceforge.net/
23
WWW: http://opal.com/jr/freebsd/ports/mail/assp/
(-)mail/assp/pkg-plist (-42 / +54 lines)
Lines 1-55 Link Here
1
etc/periodic/daily/510.assp
1
etc/periodic/daily/510.assp
2
@dirrmtry etc/periodic/daily
2
@dirrmtry etc/periodic/daily
3
@dirrmtry etc/periodic
3
@dirrmtry etc/periodic
4
lib/assp/addservice.pl
4
%%DATADIR%%/assp.pl
5
lib/assp/assp.pl
5
%%DATADIR%%/files/URIBLCCTLDS.txt
6
lib/assp/files/URIBLCCTLDS.txt
6
%%DATADIR%%/files/blackre.txt 
7
lib/assp/files/bombre.txt
7
%%DATADIR%%/files/blockreportuser.txt
8
lib/assp/files/invalidptr.txt
8
%%DATADIR%%/files/bombre.txt
9
lib/assp/files/ipnp.txt
9
%%DATADIR%%/files/denyalways.txt
10
lib/assp/files/nodelay.txt
10
%%DATADIR%%/files/droplist.txt
11
lib/assp/files/redre.txt
11
%%DATADIR%%/files/invalidhelo.txt
12
lib/assp/images/Thumbs.db
12
%%DATADIR%%/files/invalidptr.txt
13
lib/assp/images/assp.css
13
%%DATADIR%%/files/ipnp.txt
14
lib/assp/images/dropShadow.gif
14
%%DATADIR%%/files/nodelay.txt
15
lib/assp/images/editor.css
15
%%DATADIR%%/files/redre.txt
16
lib/assp/images/favicon.ico
16
%%DATADIR%%/files/strictspf.txt
17
lib/assp/images/info.png
17
%%DATADIR%%/files/validptr.txt
18
lib/assp/images/logo.jpg
18
%%DATADIR%%/files/whiteorg.txt
19
lib/assp/images/minusIcon.png
19
%%DATADIR%%/images/assp.css
20
lib/assp/images/noIcon.png
20
%%DATADIR%%/images/dropShadow.gif
21
lib/assp/images/opensource-logo.gif
21
%%DATADIR%%/images/editor.css
22
lib/assp/images/plusIcon.png
22
%%DATADIR%%/images/favicon.ico
23
lib/assp/images/project-support.jpg
23
%%DATADIR%%/images/info.png
24
lib/assp/images/shutdown.css
24
%%DATADIR%%/images/logo.jpg
25
lib/assp/images/sourceforge-logo.gif
25
%%DATADIR%%/images/minusIcon.png
26
lib/assp/images/valid-xhtml10.gif
26
%%DATADIR%%/images/noIcon.png
27
lib/assp/images/village.gif
27
%%DATADIR%%/images/opensource-logo.gif
28
lib/assp/images/xml-pill.gif
28
%%DATADIR%%/images/plusIcon.png
29
lib/assp/move2num.pl
29
%%DATADIR%%/images/project-support.jpg
30
lib/assp/rebuildspamdb.pl
30
%%DATADIR%%/images/shutdown.css
31
lib/assp/reports/analyzereport.txt
31
%%DATADIR%%/images/sourceforge-logo.gif
32
lib/assp/reports/helpreport.txt
32
%%DATADIR%%/images/valid-xhtml10.gif
33
lib/assp/reports/notspamreport.txt
33
%%DATADIR%%/images/village.gif
34
lib/assp/reports/redremovereport.txt
34
%%DATADIR%%/images/xml-pill.gif
35
lib/assp/reports/redreport.txt
35
%%DATADIR%%/move2num.pl
36
lib/assp/reports/spamreport.txt
36
%%DATADIR%%/rebuildspamdb.pl
37
lib/assp/reports/virusreport.txt
37
%%DATADIR%%/reports/analyzereport.txt
38
lib/assp/reports/whiteremovereport.txt
38
%%DATADIR%%/reports/blockreport_html.txt
39
lib/assp/reports/whitereport.txt
39
%%DATADIR%%/reports/blockreport_sub.txt
40
lib/assp/stat.pl
40
%%DATADIR%%/reports/blockreport_text.txt
41
lib/assp/stats.sh
41
%%DATADIR%%/reports/helpreport.txt
42
@dirrm lib/assp/reports
42
%%DATADIR%%/reports/notspamreport.txt
43
@dirrm lib/assp/images
43
%%DATADIR%%/reports/redremovereport.txt
44
@dirrm lib/assp/files
44
%%DATADIR%%/reports/redreport.txt
45
@dirrm lib/assp
45
%%DATADIR%%/reports/spamreport.txt
46
%%DATADIR%%/reports/virusreport.txt
47
%%DATADIR%%/reports/whiteremovereport.txt
48
%%DATADIR%%/reports/whitereport.txt
49
%%DATADIR%%/stat.pl
50
@dirrm %%DATADIR%%/reports
51
@dirrm %%DATADIR%%/images
52
@dirrm %%DATADIR%%/files
53
@dirrm %%DATADIR%%
46
sbin/assp
54
sbin/assp
47
sbin/assplog
55
sbin/assplog
48
%%PORTDOCS%%%%DOCSDIR%%/Legacy - ASSP Documentation.htm
56
%%PORTDOCS%%%%DOCSDIR%%/Legacy - ASSP Documentation.htm
49
%%PORTDOCS%%%%DOCSDIR%%/Regular Expression Tutorial.htm
57
%%PORTDOCS%%%%DOCSDIR%%/Regular Expression Tutorial.htm
50
%%PORTDOCS%%@dirrm %%DOCSDIR%%
58
%%PORTDOCS%%@dirrm %%DOCSDIR%%
59
@unexec rm %%ASSP_HOME%%/log
51
@unexec rm %%ASSP_HOME%%/reports
60
@unexec rm %%ASSP_HOME%%/reports
52
@unexec rm %%ASSP_HOME%%/images
61
@unexec rm %%ASSP_HOME%%/images
53
@unexec rm %%ASSP_HOME%%/files
62
@unexec rm %%ASSP_HOME%%/files
54
@unexec rmdir %%ASSP_HOME%% 2>/dev/null || true
63
@unexec rmdir %%ASSP_HOME%% 2>/dev/null || true
55
@unexec if [ -d %%ASSP_HOME%% ]; then echo "If you are deinstalling ASSP completely, remove the %%ASSP_HOME%% directory."; fi
64
@unexec if [ -d %%ASSP_HOME%% ]; then echo "If you are deinstalling ASSP completely, remove the %%ASSP_HOME%% directory."; fi
65
@unexec rmdir %%ASSP_LOG%% 2>/dev/null || true
66
@unexec if [ -d %%ASSP_LOG%% ]; then echo "If you are deinstalling ASSP completely, remove the %%ASSP_LOG%% directory."; fi
67
@unexec echo "If you are deinstalling ASSP completely, delete the ASSP user and group."

Return to bug 133852