Add assp.
Anti-Spam SMTP Proxy is a spam filter that sits on port 25 in front of your regular SMTP server (sendmail, postfix, qmail, etc). ASSP performs a number of configurable spam checks, and on detecting a spam message, provides an immediate 5xx SMTP error code back to the client. Non-spam messages are passed to your regular SMTP server for further processing and delivery. ASSP offers: - a whitelist of known good senders - Bayesian checks on message headers and contents - recipient address validation using LDAP and RFC822 conformance - relay denial - HELO checking - SPF (Sender Policy Framework) checking - DNSBL (DNS Block List) checking using many DNSBL services - Virus detection ASSP is a single script with a web-based configuration tool. WWW: http://assp.sourceforge.net/ PR: ports/81570 Submitted by: J.R. Oldroyd <fbsd@opal.com>
This commit is contained in:
parent
be5d215809
commit
6b9e5c9ab2
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=136332
13 changed files with 835 additions and 0 deletions
|
@ -17,6 +17,7 @@
|
|||
SUBDIR += archmbox
|
||||
SUBDIR += arrow
|
||||
SUBDIR += asmail
|
||||
SUBDIR += assp
|
||||
SUBDIR += autorespond
|
||||
SUBDIR += autosig
|
||||
SUBDIR += avenger
|
||||
|
|
100
mail/assp/Makefile
Normal file
100
mail/assp/Makefile
Normal file
|
@ -0,0 +1,100 @@
|
|||
# New ports collection makefile for: assp
|
||||
# Date created: 16 May 2005
|
||||
# Whom: J.R. Oldroyd <fbsd@opal.com>
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PORTNAME= assp
|
||||
PORTVERSION= 1.1.1.b12
|
||||
CATEGORIES= mail
|
||||
MASTER_SITES= http://opal.com/freebsd/ports/mail/assp/
|
||||
|
||||
MAINTAINER= fbsd@opal.com
|
||||
COMMENT= Anti-Spam SMTP Proxy
|
||||
|
||||
# NB: for 1.1.1.b12 Net::DNS::Packet is required even if SPF and DNSBL not used
|
||||
RUN_DEPENDS= ${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS
|
||||
|
||||
USE_ZIP= yes
|
||||
NO_WRKSUBDIR= yes
|
||||
NO_BUILD= yes
|
||||
USE_REINPLACE= yes
|
||||
USE_PERL5_RUN= yes
|
||||
|
||||
MAN8= assp.8 assplog.8
|
||||
|
||||
ASSP_USER= nobody
|
||||
ASSP_GROUP= nobody
|
||||
ASSP_HOME= /var/db/assp
|
||||
|
||||
PLIST_SUB= ASSP_HOME="${ASSP_HOME}"
|
||||
|
||||
SUB_FILES= assp.8 assplog.8 assp.sh periodic-assp.sh pkg-install
|
||||
SUB_LIST= ASSP_HOME="${ASSP_HOME}" ASSP_USER="${ASSP_USER}" \
|
||||
ASSP_GROUP="${ASSP_GROUP}" PERL="${PERL}"
|
||||
|
||||
USE_RC_SUBR= assp.sh
|
||||
|
||||
OPTIONS= EMVALID "RFC822 recipient address validator" on \
|
||||
LDAP "LDAP validation of recipient addresses" on \
|
||||
SPF "SPF validation of client IP" on \
|
||||
CLAMAV "ClamAV virus scanner" on \
|
||||
DNSBL "DNS block list checking" on
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
.if !defined(WITHOUT_EMVALID)
|
||||
RUN_DEPENDS+= ${SITE_PERL}/Email/Valid.pm:${PORTSDIR}/mail/p5-Email-Valid
|
||||
.endif
|
||||
|
||||
.if !defined(WITHOUT_LDAP)
|
||||
RUN_DEPENDS+= ${SITE_PERL}/Net/LDAP.pm:${PORTSDIR}/net/p5-perl-ldap
|
||||
.endif
|
||||
|
||||
.if !defined(WITHOUT_SPF)
|
||||
RUN_DEPENDS+= ${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS
|
||||
RUN_DEPENDS+= ${SITE_PERL}/Mail/SPF/Query.pm:${PORTSDIR}/mail/p5-Mail-SPF-Query
|
||||
.endif
|
||||
|
||||
.if !defined(WITHOUT_DNSBL)
|
||||
RUN_DEPENDS+= ${SITE_PERL}/${PERL_ARCH}/Net/DNS.pm:${PORTSDIR}/dns/p5-Net-DNS
|
||||
.endif
|
||||
|
||||
.if !defined(WITHOUT_CLAMAV)
|
||||
RUN_DEPENDS+= wget:${PORTSDIR}/ftp/wget
|
||||
PLIST_SUB+= ASSP_CLAMAV=""
|
||||
.else
|
||||
PLIST_SUB+= ASSP_CLAMAV="@comment "
|
||||
.endif
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} -e 's|/usr/bin/perl|${PERL}|' ${WRKSRC}/*.pl
|
||||
|
||||
do-install:
|
||||
${MKDIR} ${PREFIX}/lib/assp
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/*.pl ${PREFIX}/lib/assp
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/stats.sh ${PREFIX}/lib/assp
|
||||
.if defined(WITH_CLAMAV)
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/freshclam.sh ${PREFIX}/lib/assp
|
||||
.endif
|
||||
${INSTALL_DATA} ${WRKSRC}/*report.txt ${PREFIX}/lib/assp
|
||||
|
||||
${LN} -s ${PREFIX}/lib/assp/assp.pl ${PREFIX}/sbin/assp
|
||||
${LN} -s ${PREFIX}/lib/assp/stats.sh ${PREFIX}/sbin/assplog
|
||||
|
||||
${INSTALL_MAN} ${WRKDIR}/assp.8 ${MAN8PREFIX}/man/man8
|
||||
${INSTALL_MAN} ${WRKDIR}/assplog.8 ${MAN8PREFIX}/man/man8
|
||||
|
||||
${MKDIR} ${PREFIX}/etc/periodic/daily
|
||||
${INSTALL_SCRIPT} ${WRKDIR}/periodic-assp.sh ${PREFIX}/etc/periodic/daily/510.assp
|
||||
|
||||
.if !defined(NOPORTDOCS)
|
||||
${MKDIR} ${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/*.htm ${DOCSDIR}
|
||||
.endif
|
||||
|
||||
post-install:
|
||||
@PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
|
||||
|
||||
.include <bsd.port.post.mk>
|
2
mail/assp/distinfo
Normal file
2
mail/assp/distinfo
Normal file
|
@ -0,0 +1,2 @@
|
|||
MD5 (assp-1.1.1.b12.zip) = ccf11f30f7edbd05d1ab96d68dc5027d
|
||||
SIZE (assp-1.1.1.b12.zip) = 183265
|
31
mail/assp/files/510.assp.in
Normal file
31
mail/assp/files/510.assp.in
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Update ASSP Spam and ClamAV databases
|
||||
|
||||
cd %%ASSP_HOME%%
|
||||
|
||||
if [ ! -f %%PREFIX%%/lib/assp/rebuildspamdb.pl ]
|
||||
then
|
||||
echo "%%PREFIX%%/lib/assp/rebuildspamdb.pl does not exist"
|
||||
rc_spamdb=2
|
||||
else
|
||||
echo ""
|
||||
echo "Running ASSP rebuildspamdb.pl:"
|
||||
%%PERL%% %%PREFIX%%/lib/assp/rebuildspamdb.pl && rc_spamdb=0 || rc_spamdb=3
|
||||
fi
|
||||
|
||||
if [ ! -f %%PREFIX%%/lib/assp/freshclam.sh ]
|
||||
then
|
||||
# existence of freshclam.sh is optional, dependent
|
||||
# on the WITH_CLAMAV setting, so not an error if not there
|
||||
rc_clamav=0
|
||||
else
|
||||
echo ""
|
||||
echo "Fetching ASSP ClamAV virus database updates:"
|
||||
export PATH=$PATH:%%LOCALBASE%%/bin
|
||||
sh %%PREFIX%%/lib/assp/freshclam.sh && rc_clamav=0 || rc_clamav=3
|
||||
fi
|
||||
|
||||
exit $(($rc_spamdb|$rc_clamav))
|
277
mail/assp/files/assp.8.in
Normal file
277
mail/assp/files/assp.8.in
Normal file
|
@ -0,0 +1,277 @@
|
|||
.TH assp 8 "May 16, 2005" "" "ASSP"
|
||||
.SH NAME
|
||||
assp \- Anti-Spam SMTP Proxy
|
||||
.SH SYNOPSIS
|
||||
assp [ base_dir [ admin_port ] ]
|
||||
.PP
|
||||
%%PREFIX%%/etc/rc.d/assp.sh start|stop|restart|status
|
||||
.SH DESCRIPTION
|
||||
.I "Anti-Spam SMTP Proxy"
|
||||
is a spam filter that sits on port 25 in front
|
||||
of your regular SMTP server
|
||||
.RI ( exim (8),
|
||||
.IR postfix (8),
|
||||
.IR qmail (8),
|
||||
.IR sendmail (8),
|
||||
etc).
|
||||
.PP
|
||||
.I ASSP
|
||||
relays the SMTP dialog between an incoming client and your SMTP
|
||||
server, intercepting the dialog as needed.
|
||||
.I ASSP
|
||||
performs a number of configurable spam checks and on detecting
|
||||
a spam message provides an immediate 5xx SMTP error code back to
|
||||
the client. Non-spam messages are passed to your regular SMTP server
|
||||
for further processing and delivery. Spam messages can be blocked
|
||||
from delivery or subject-tagged and delivered.
|
||||
.PP
|
||||
.I ASSP
|
||||
offers:
|
||||
.RS
|
||||
.IP - 2m
|
||||
a whitelist of known good senders
|
||||
.IP -
|
||||
Bayesian checks on message headers and contents
|
||||
.IP -
|
||||
local user validation using RFC822 checks, flat lists or LDAP lookup
|
||||
.IP -
|
||||
relay denial
|
||||
.IP -
|
||||
HELO checking
|
||||
.IP -
|
||||
SPF (Sender Policy Framework) checking
|
||||
.IP -
|
||||
DNSBL (DNS Block List) checking using many block list services
|
||||
.IP -
|
||||
Virus detection
|
||||
.RE
|
||||
.PP
|
||||
.I ASSP
|
||||
is entirely administrator-managed and is almost totally
|
||||
transparent to users. In particular, users do not need to
|
||||
manage
|
||||
.IR procmail (1)
|
||||
spam filters or challenge-response systems of their own.
|
||||
.PP
|
||||
The
|
||||
.I base_dir
|
||||
argument gives the name of
|
||||
.IR ASSP 's
|
||||
working directory. If omitted
|
||||
it defaults to the current directory.
|
||||
.PP
|
||||
.I ASSP
|
||||
is configured using a web interface.
|
||||
The
|
||||
.I admin_port
|
||||
argument gives the network port for accessing
|
||||
.IR ASSP 's
|
||||
configuration menu. It defaults to 55555.
|
||||
To access the configuration menu, start
|
||||
.I ASSP
|
||||
and then point your browser at
|
||||
.IR http://localhost:55555 .
|
||||
The default admin password is
|
||||
.IR nospam4me .
|
||||
.PP
|
||||
Initial setup of
|
||||
.I ASSP
|
||||
involves several steps:
|
||||
.IP 1.
|
||||
Review
|
||||
.IR ASSP 's
|
||||
configuration options and adjust as necessary. Be sure
|
||||
to change the admin password. By default
|
||||
.IR ASSP 's
|
||||
filters are all set to
|
||||
.I "Test Mode"
|
||||
which means all messages will be delivered to their recipients.
|
||||
Leave everything in Test Mode for now.
|
||||
.IP 2.
|
||||
Decide on which network port(s)
|
||||
.I ASSP
|
||||
will listen and on which your normal SMTP server will listen.
|
||||
Typically,
|
||||
.I ASSP
|
||||
will listen on port 25 and your SMTP server will be moved to
|
||||
something like port 125 or 587.
|
||||
.IP 3.
|
||||
Reconfigure your SMTP server to its new port.
|
||||
.IP 4.
|
||||
Reconfigure
|
||||
.I ASSP
|
||||
to port 25 and restart
|
||||
.IR ASSP .
|
||||
Since
|
||||
.I ASSP
|
||||
is in Test Mode, all messages will be delivered to their
|
||||
recipients.
|
||||
.IP 5.
|
||||
Arrange for all users' outbound email to be processed by
|
||||
.IR ASSP .
|
||||
This is necessary for
|
||||
.I ASSP
|
||||
to be able to automatically maintain its whitelist.
|
||||
If a user's MUA uses SMTP to port 25, this will happen
|
||||
without further intervention. If an MUA invokes
|
||||
.I /usr/sbin/sendmail
|
||||
and you're using the default
|
||||
.IR sendmail (8)
|
||||
configuration with submit queues, this will also happen
|
||||
without further intervention. Otherwise, you need to take
|
||||
whatever steps are necessary for each MUA that's being used.
|
||||
.IP 6.
|
||||
Optionally, send a message containing a list of email addresses
|
||||
that you want to receive email from to
|
||||
.IR assp-white@yourdomain.com .
|
||||
Have all your users do this. This will seed
|
||||
.IR ASSP 's
|
||||
whitelist. Messages from senders on the whitelist will
|
||||
never be blocked.
|
||||
.IP 7.
|
||||
To set up the Bayesian word list filtering, do the following:
|
||||
.RS
|
||||
.IP 7a.
|
||||
Ensure some senders' addresses are in the whitelist, either
|
||||
by sending email to them or by seeding the whilelist as described
|
||||
above.
|
||||
.IP 7b.
|
||||
Allow some time (could be hours or days, depending on the
|
||||
volume of email you receive) for enough email to collect.
|
||||
Mesages from senders on the whitelist will be copied in the
|
||||
.I notspam
|
||||
directory. Other messages will either be passed or be copied
|
||||
in the
|
||||
.I spam
|
||||
directory based on word scores in the initial greylist.
|
||||
.IP 7c.
|
||||
Periodically examine the messages in
|
||||
.IR ASSP 's
|
||||
.IR notspam
|
||||
and
|
||||
.I spam
|
||||
directories to make sure they're sorted correctly. Move
|
||||
any to the other directory as needed. If you're unsure about
|
||||
a particular message, just delete it.
|
||||
Also, examine
|
||||
.I maillog.txt
|
||||
for information about what
|
||||
.I ASSP
|
||||
is doing.
|
||||
.IP 7d.
|
||||
After about 400 messages have collected, filtering mode can
|
||||
be enabled.
|
||||
In the
|
||||
.I %%ASSP_HOME%%
|
||||
directory, run the
|
||||
.I %%PREFIX%%/lib/assp/rebuildspamdb.pl
|
||||
script to create the spam database from the logged messages.
|
||||
This is the part where the Bayesian filter ``learns'' about
|
||||
the words in your
|
||||
.I spam
|
||||
and
|
||||
.I notspam
|
||||
collections.
|
||||
.IP 7e.
|
||||
Uncheck the appropriate Test Mode box in
|
||||
.IR ASSP 's
|
||||
configuration menu to enable message blocking.
|
||||
.IP 7f.
|
||||
It is recommended that the
|
||||
.I UseSubjectsAsMaillogNames
|
||||
configuration option is eventually unchecked and that the
|
||||
script
|
||||
.I %%PREFIX%%/lib/assp/move2num.pl
|
||||
is run in the
|
||||
.I %%ASSP_HOME%%
|
||||
directory. This causes messages to be stored with numeric
|
||||
filenames, and overwritten after some time. The benefits
|
||||
of this are that the size of the stored messages will
|
||||
be limited and that older messages are removed from the
|
||||
collection. This keeps the Bayesian word list current.
|
||||
This need not be done immediately; you can do this once
|
||||
you no longer feel the need to examine the spam messages
|
||||
in detail.
|
||||
.RE
|
||||
.IP 8.
|
||||
.IR ASSP 's
|
||||
other filtering options (local user validation, RFC822
|
||||
conformance, client HELO validation, SPF validation,
|
||||
the use of DNSBLs and the ClamAV virus checker)
|
||||
can be enabled by examining and adjusting their
|
||||
configuration options as needed and then unchecking the
|
||||
appropriate Test Mode boxes.
|
||||
.PP
|
||||
Once
|
||||
.I ASSP
|
||||
is live, users should forward a copy of any spam message that
|
||||
still gets through to
|
||||
.I assp-spam@yourdomain.com
|
||||
in order to add it to
|
||||
.IR ASSP 's
|
||||
spam database. Any non-spam that was mis-classified as spam
|
||||
can be copied to
|
||||
.IR assp-notspam@yourdomain.com .
|
||||
.PP
|
||||
The
|
||||
.I rebuildspamdb.pl
|
||||
script needs to be re-run periodically to update the spam database
|
||||
from the latest logged messages. There is a
|
||||
.IR periodic (8)
|
||||
script that will do this overnight.
|
||||
.PP
|
||||
For full details of using
|
||||
.IR ASSP ,
|
||||
see the
|
||||
.I ASSP
|
||||
website and documentation.
|
||||
.SH "STARTING ASSP AT BOOT TIME"
|
||||
The
|
||||
.I /usr/local/etc/rc.d/assp.sh
|
||||
script is run automatically at system boot time.
|
||||
Several variables can be set in
|
||||
.I /etc/rc.conf
|
||||
to control the behavior.
|
||||
.IP assp_enable
|
||||
set to
|
||||
.I "YES"
|
||||
to start ASSP at boot time
|
||||
.IP assp_args
|
||||
passed to the ASSP client, default is
|
||||
.I assp_args="%%ASSP_HOME%%"
|
||||
.SH FILES
|
||||
.IP %%ASSP_HOME%%
|
||||
location of ASSP config file, log file and spam databases
|
||||
.IP %%ASSP_HOME%%/notspam
|
||||
copies of non-spam messages received
|
||||
.IP %%ASSP_HOME%%/spam
|
||||
copies of spam messages received
|
||||
.IP %%ASSP_HOME%%/errors/{notspam,spam}
|
||||
messages forwarded to assp-notspam@ and assp-spam@ addresses
|
||||
.IP %%ASSP_HOME%%/maillog.txt
|
||||
.IR ASSP 's
|
||||
log file
|
||||
.IP %%PREFIX%%/lib/assp/freshclam.sh
|
||||
script to update virus definitions
|
||||
.IP %%PREFIX%%/lib/assp/move2num.pl
|
||||
script to rename stored messages to numeric filenames
|
||||
.IP %%PREFIX%%/lib/assp/rebuildspamdb.pl
|
||||
script to update spam database
|
||||
.IP %%PREFIX%%/etc/periodic/daily/510.assp
|
||||
nightly script to invoke
|
||||
.I rebuildspamdb.pl
|
||||
and
|
||||
.IR freshclam.sh .
|
||||
.SH BUGS
|
||||
.I ASSP
|
||||
currently has no IPv6 support.
|
||||
.SH "SEE ALSO"
|
||||
.IR procmail (1),
|
||||
.IR assplog (8),
|
||||
.IR exim (8),
|
||||
.IR postfix (8),
|
||||
.IR qmail (8),
|
||||
.IR sendmail (8),
|
||||
%%PREFIX%%/share/doc/assp/ASSP Documentation.htm
|
||||
.br
|
||||
http://assp.sourceforge.net/
|
23
mail/assp/files/assp.sh.in
Normal file
23
mail/assp/files/assp.sh.in
Normal file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
# PROVIDE: assp
|
||||
# REQUIRE: LOGIN
|
||||
# KEYWORD: FreeBSD
|
||||
|
||||
. %%RC_SUBR%%
|
||||
|
||||
name=assp
|
||||
rcvar=`set_rcvar`
|
||||
|
||||
command=%%PREFIX%%/sbin/assp
|
||||
command_interpreter=%%PERL%%
|
||||
pidfile=%%ASSP_HOME%%/pid
|
||||
|
||||
load_rc_config $name
|
||||
: ${assp_enable="NO"}
|
||||
: ${assp_flags="%%ASSP_HOME%%"}
|
||||
|
||||
run_rc_command "$1"
|
103
mail/assp/files/assplog.8.in
Normal file
103
mail/assp/files/assplog.8.in
Normal file
|
@ -0,0 +1,103 @@
|
|||
.TH assplog 8 "May 16, 2005" "" "ASSP"
|
||||
.SH NAME
|
||||
assplog \- display colorized ASSP log
|
||||
.SH SYNOPSIS
|
||||
assplog
|
||||
.SH DESCRIPTION
|
||||
.I assplog
|
||||
uses
|
||||
.B "tail -f"
|
||||
to monitor the ASSP Anti-Spam SMTP Proxy log and then displays
|
||||
logged messages using ANSI color sequences for easy reading.
|
||||
.PP
|
||||
The colors have the following meaning:
|
||||
.PP
|
||||
1. Messages that were delivered
|
||||
.RS
|
||||
.TP
|
||||
White
|
||||
Sender was on whitelist (or was added to whitelist)
|
||||
.TP
|
||||
Green
|
||||
Message passed all checks and was delivered
|
||||
.RE
|
||||
.PP
|
||||
2. Messages that were blocked
|
||||
.RS
|
||||
.TP
|
||||
Blue
|
||||
Recipient unknown (failed flat list or LDAP check)
|
||||
.TP
|
||||
Magenta
|
||||
Message failed any of the other checks
|
||||
.TP
|
||||
Red
|
||||
Message failed Bayesian spam check
|
||||
.RE
|
||||
.PP
|
||||
3. Administrative messages
|
||||
.RS
|
||||
.TP
|
||||
Cyan
|
||||
Message to assp-{notspam,spam,white}@ address
|
||||
.TP
|
||||
Yellow
|
||||
Admin change from web interface
|
||||
.RE
|
||||
.PP
|
||||
Entries from the log are reformatted to a consistent format and
|
||||
classified with one of the following tags:
|
||||
.TP
|
||||
BA
|
||||
Bad attachement rejected
|
||||
.TP
|
||||
BL
|
||||
DNSBL check failed
|
||||
.TP
|
||||
BS
|
||||
Bayesian spam check failed
|
||||
.TP
|
||||
HL
|
||||
Bad HELO greeting
|
||||
.TP
|
||||
IR
|
||||
Invalid recipient, failed LDAP or flat list test
|
||||
.TP
|
||||
LW
|
||||
Local or Whitelisted emails
|
||||
.TP
|
||||
MA
|
||||
Malformed RFC822 recipient address
|
||||
.TP
|
||||
NS
|
||||
assp-notspam@ report submission
|
||||
.TP
|
||||
Ok
|
||||
Email that fully passed all tests
|
||||
.TP
|
||||
RB
|
||||
Blocked Relay attempt
|
||||
.TP
|
||||
SP
|
||||
SPF check failed
|
||||
.TP
|
||||
WA+
|
||||
Whitelist addition by local user
|
||||
.TP
|
||||
WL+
|
||||
Whitelist addition of address CC'd in whitelisted email
|
||||
.TP
|
||||
SR
|
||||
assp-spam@ report submission
|
||||
.SH BUGS
|
||||
.I assplog
|
||||
does not display all log messages; for a complete view of
|
||||
the log, use
|
||||
.B "tail -f"
|
||||
directly on the log file.
|
||||
.SH FILES
|
||||
.IP %%ASSP_HOME%%/maillog.txt
|
||||
location of ASSP log file
|
||||
.SH "SEE ALSO"
|
||||
.IR assp (8),
|
||||
.IR tail (1)
|
39
mail/assp/files/patch-assp.pl
Normal file
39
mail/assp/files/patch-assp.pl
Normal file
|
@ -0,0 +1,39 @@
|
|||
--- assp.pl.orig Tue Mar 15 06:41:24 2005
|
||||
+++ assp.pl Wed May 18 11:33:35 2005
|
||||
@@ -58,7 +58,7 @@
|
||||
'The address:port of your message handling system\'s smtp server. For example: 127.0.0.1:125'],
|
||||
[AsAService,'As a Service',0,checkbox,'','(\S*)',undef,
|
||||
'In Windows 2000 / NT you can run it as a service; requires <a href="http://www.roth.net/perl/Daemon/" rel="external">win32::daemon</a>. Requires start from the service control panel.'],
|
||||
- [AsADaemon,'As a Daemon',0,checkbox,'','(\S*)',undef,
|
||||
+ [AsADaemon,'As a Daemon',0,checkbox,1,'(\S*)',undef,
|
||||
'In Linux/BSD/Unix/OSX fork and close file handles, kinda like "perl assp.pl &" but better. Requires restart.'],
|
||||
[myName,'My Name',20,textinput,'ASSP-nospam','(\S+)',undef,
|
||||
'What the program calls itself in the email "received by" header. Usually ASSP-nospam.'],
|
||||
@@ -355,7 +355,7 @@
|
||||
No mail is delivered! For example: assp-notspam'],
|
||||
[EmailWhitelist,'Add to Whitelist Address',20,textinput,'assp-white','(.*)',undef,
|
||||
'Any mail sent by local/authenticated users to this username will be interpreted as a request to add addresses to the whitelist.<br /> No mail is delivered! For example: assp-white'],
|
||||
- [EmailFrom,'From Address for Email',20,textinput,'ASSP <>','(.+)',undef,
|
||||
+ [EmailFrom,'From Address for Email',20,textinput,'ASSP <postmaster@yourdomain.com>','(.+)',undef,
|
||||
'Email sent from ASSP acknowledging your submissions will be sent from this address.<br />
|
||||
Some mailers don\'t like the default setting. For example: ASSP <> or Mail Administrator
|
||||
<mailadmin@mydomain.com>'],
|
||||
@@ -423,9 +423,9 @@
|
||||
'ASSP closes and renames the log file after this number of days. Decimals are ok. For example: 14 or 0.5'],
|
||||
|
||||
[0,0,0,heading,'Security'],
|
||||
- [runAsUser,'Run as UID',20,textinput,'','(\S*)',undef,
|
||||
+ [runAsUser,'Run as UID',20,textinput,'nobody','(\S*)',undef,
|
||||
'The *nix user name to assume after startup: assp or nobody -- requires ASSP restart.'],
|
||||
- [runAsGroup,'Run as GID',20,textinput,'','(\S*)',undef,
|
||||
+ [runAsGroup,'Run as GID',20,textinput,'nobody','(\S*)',undef,
|
||||
'The *nix group to assume after startup: assp or nogroup -- requires ASSP restart.'],
|
||||
[ChangeRoot,'Change Root',60,textinput,'','(.*)',undef,
|
||||
'Non-blank means to run in chroot jail in *nix. You need an etc/protocols file to make this work<br />
|
||||
@@ -4462,4 +4462,4 @@
|
||||
dynablock.njabl.org
|
||||
);
|
||||
}
|
||||
-1;
|
||||
\ No newline at end of file
|
||||
+1;
|
176
mail/assp/files/patch-stats.sh
Normal file
176
mail/assp/files/patch-stats.sh
Normal file
|
@ -0,0 +1,176 @@
|
|||
--- stats.sh.orig Fri Aug 6 20:26:26 2004
|
||||
+++ stats.sh Thu May 26 22:24:20 2005
|
||||
@@ -4,12 +4,12 @@
|
||||
# copy of your standard Unix shell, the 'tail' utility and a working 'awk'
|
||||
# interpreter.
|
||||
|
||||
-# I use the default location for ASSP's maillog file, and the 'maillog.log'
|
||||
+# I use the default location for ASSP's maillog file, and the 'maillog.txt'
|
||||
# name (in assp.cfg) to keep ASSP from changing it on me.
|
||||
|
||||
-# This script attempts to go back at least 300 lines in your maillog.log
|
||||
+# This script attempts to go back at least 300 lines in your maillog.txt
|
||||
# file to give you a nice screenful of goodies to review when it
|
||||
-# first starts. If your maillog.log is nearly empty, then just
|
||||
+# first starts. If your maillog.txt is nearly empty, then just
|
||||
# be patient. As things happen - the logger will reveal it in COLOR!
|
||||
# ------------------------------------ KRL -------------------------
|
||||
|
||||
@@ -30,8 +30,11 @@
|
||||
# BS (in Red) lines are those caught by the Bayesian filter !!
|
||||
# LW (in White .. mostly) are those Local or Whitelisted eMails
|
||||
# Ok (in Green) are eMail that fully pass alltests without exceptions.
|
||||
-# RB (in Cyan) .. Blocked Relay attempt
|
||||
-# WL+ Whitelist ADDITION by an authorized local user
|
||||
+# RB (in Magenta) .. Blocked Relay attempt
|
||||
+# HL (in Magenta) .. Blocked due to spam HELO
|
||||
+# SP (in Magenta) .. Blocked by failed SPF lookup
|
||||
+# WA+ Whitelist ADDITION by an authorized local user
|
||||
+# WL+ Whitelist ADDITION of address CC'd in whitelisted email
|
||||
# BA (in Cyan) .. Bad ATTACHEMENT rejected
|
||||
# SR (in Cyan) .. spam@ report submission
|
||||
# NS (in Cyan) .. notspam@ report submission
|
||||
@@ -46,32 +49,32 @@
|
||||
# Some fields are truncated (with a hard-coded length value, usually 40)
|
||||
# to keep each line more or less intact on your screen as things scroll by
|
||||
# Colors are coded with ANSI Color coding, your mileage may vary ...
|
||||
-# I assume the naming convention of 'maillog.log' so ASSP won't munge
|
||||
+# I assume the naming convention of 'maillog.txt' so ASSP won't munge
|
||||
# each current log into some difficult-to-grok name. You should try
|
||||
# to use this feature - and perhaps roll the log periodically with
|
||||
# your system's 'newsyslog' functionality. You can send a SIGHUP to
|
||||
# ASSP when you roll the log so it starts afresh..KRL
|
||||
|
||||
-tail -300 -f /usr/local/assp/maillog.log | \
|
||||
+tail -300 -f /var/db/assp/maillog.txt | \
|
||||
awk ' \
|
||||
/whitelisted/ { \
|
||||
- printf("%s %s \033[1;32m%-15s L\033[0mW %s \033[1;32m->\033[0m %s\n", \
|
||||
+ 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", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
substr($3,1,length($3)), \
|
||||
substr($4,1,40), \
|
||||
substr($6,1,length($6)) )\
|
||||
} \
|
||||
- /email/ && /whitelist addition/ { \
|
||||
- printf("%s %s \033[1;32m%-15s W\033[0mA+ %s \033[1;32m->\033[0m %s\n", \
|
||||
+ /whitelist addition/ && /email new/ { \
|
||||
+ printf("%s %s \033[1;36m%-15s WA+ %s\033[0m \033[1;37m%s\033[0m\n", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
"+email address+", \
|
||||
- substr($4,1,40), \
|
||||
- substr($6,1,length($6)) )\
|
||||
+ "-adds-", \
|
||||
+ substr($7,1,length($7)) )\
|
||||
} \
|
||||
/whitelist addition/ && !/email/ { \
|
||||
- printf("%s %s \033[1;32m%-15s W\033[0mL+ %s \033[1;32m %s %s\033[0m\n", \
|
||||
+ printf("%s %s \033[1;32m%-15s\033[0m \033[1;37mWL+ %s\033[0m \033[1;32m%s\033[0m \033[1;37m%s\033[0m\n", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
substr($3,1,length($3)), \
|
||||
@@ -79,12 +82,12 @@
|
||||
"-adds-", \
|
||||
substr($9,1,length($9)) )\
|
||||
} \
|
||||
- /Bayesian spam/ { \
|
||||
+ /Bayesian Spam/ { \
|
||||
printf("%s %s \033[1;31m%-15s BS %s -> %s\033[0m\n", \
|
||||
- substr($1,1,length($1)), \
|
||||
- substr($2,1,length($2)), \
|
||||
- substr($3,1,length($3)), \
|
||||
- substr($4,1,40), \
|
||||
+ substr($1,1,length($1)), \
|
||||
+ substr($2,1,length($2)), \
|
||||
+ substr($3,1,length($3)), \
|
||||
+ substr($4,1,40), \
|
||||
substr($6,1,length($6)) )\
|
||||
} \
|
||||
/message ok/ { \
|
||||
@@ -95,7 +98,7 @@
|
||||
substr($4,1,40), \
|
||||
substr($6,1,length($6)) )\
|
||||
} \
|
||||
- /bad attachment/ { \
|
||||
+ /bad attachment/ && !/no bad/ { \
|
||||
printf("%s %s \033[1;35m%-15s BA %s -> %s\033[0m\n", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
@@ -104,29 +107,66 @@
|
||||
substr($6,1,length($6)) )\
|
||||
} \
|
||||
/relay attempt blocked/ { \
|
||||
- printf("%s %s \033[1;35m%-15s RB %s -> %s %s %s %s %s\033[0m\n", \
|
||||
+ printf("%s %s \033[1;35m%-15s RB %s -> %s\033[0m\n", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
substr($3,1,length($3)), \
|
||||
- substr($4,1,length($4)), \
|
||||
- substr($5,1,length($5)), \
|
||||
- substr($6,1,length($6)), \
|
||||
- substr($7,1,length($7)), \
|
||||
- substr($8,1,length($8)), \
|
||||
+ substr($4,1,40), \
|
||||
substr($9,1,length($9)) )\
|
||||
} \
|
||||
+ /Invalid address rejected/ { \
|
||||
+ printf("%s %s \033[1;34m%-15s IR %s -> %s\033[0m\n", \
|
||||
+ substr($1,1,length($1)), \
|
||||
+ substr($2,1,length($2)), \
|
||||
+ substr($3,1,length($3)), \
|
||||
+ substr($4,1,40), \
|
||||
+ substr($NF,1,length($NF)) )\
|
||||
+ } \
|
||||
+ /malformed address/ { \
|
||||
+ printf("%s %s \033[1;35m%-15s MA %s -> %s\033[0m\n", \
|
||||
+ substr($1,1,length($1)), \
|
||||
+ substr($2,1,length($2)), \
|
||||
+ substr($3,1,length($3)), \
|
||||
+ substr($4,1,40), \
|
||||
+ substr($7,1,length($7)) )\
|
||||
+ } \
|
||||
+ /failed RBL checks/ { \
|
||||
+ printf("%s %s \033[1;35m%-15s BL %s -> %s\033[0m\n", \
|
||||
+ substr($1,1,length($1)), \
|
||||
+ substr($2,1,length($2)), \
|
||||
+ substr($3,1,length($3)), \
|
||||
+ substr($4,1,40), \
|
||||
+ substr($6,1,length($6)) )\
|
||||
+ } \
|
||||
+ /failed SPF checks/ { \
|
||||
+ printf("%s %s \033[1;35m%-15s SP %s -> %s\033[0m\n", \
|
||||
+ substr($1,1,length($1)), \
|
||||
+ substr($2,1,length($2)), \
|
||||
+ substr($3,1,length($3)), \
|
||||
+ substr($4,1,40), \
|
||||
+ substr($6,1,length($6)) )\
|
||||
+ } \
|
||||
+ /has spam helo/ { \
|
||||
+ printf("%s %s \033[1;35m%-15s HL %s -> %s %s\033[0m\n", \
|
||||
+ substr($1,1,length($1)), \
|
||||
+ substr($2,1,length($2)), \
|
||||
+ substr($3,1,length($3)), \
|
||||
+ substr($4,1,40), \
|
||||
+ substr($6,1,length($6)), \
|
||||
+ substr($10,1,length($10)) )\
|
||||
+ } \
|
||||
/Admin update:/ { \
|
||||
- printf("\033[1;33m%s %s %s %s %s %s \033[0m\n", $1, $2, $3, $4, $5, $6) \
|
||||
+ printf("\033[1;33m%s\033[0m\n", $0) \
|
||||
} \
|
||||
/Email spamreport/ { \
|
||||
- printf("%s %s\033[0;36m %-15s SR %s Email SPAM Submission\033[0m\n", \
|
||||
+ printf("%s %s\033[1;36m %-15s SR %s\033[0m\n", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
substr($3,1,length($3)), \
|
||||
substr($4,1,length($4)) ) \
|
||||
} \
|
||||
/Email hamreport/ { \
|
||||
- printf("%s %s\033[0;36m %-15s NS %s Email NOTSPAM Submission\033[0m\n", \
|
||||
+ printf("%s %s\033[1;36m %-15s NS %s\033[0m\n", \
|
||||
substr($1,1,length($1)), \
|
||||
substr($2,1,length($2)), \
|
||||
substr($3,1,length($3)), \
|
31
mail/assp/files/periodic-assp.sh.in
Normal file
31
mail/assp/files/periodic-assp.sh.in
Normal file
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Update ASSP Spam and ClamAV databases
|
||||
|
||||
cd %%ASSP_HOME%%
|
||||
|
||||
if [ ! -f %%PREFIX%%/lib/assp/rebuildspamdb.pl ]
|
||||
then
|
||||
echo "%%PREFIX%%/lib/assp/rebuildspamdb.pl does not exist"
|
||||
rc_spamdb=2
|
||||
else
|
||||
echo ""
|
||||
echo "Running ASSP rebuildspamdb.pl:"
|
||||
%%PERL%% %%PREFIX%%/lib/assp/rebuildspamdb.pl && rc_spamdb=0 || rc_spamdb=3
|
||||
fi
|
||||
|
||||
if [ ! -f %%PREFIX%%/lib/assp/freshclam.sh ]
|
||||
then
|
||||
# existence of freshclam.sh is optional, dependent
|
||||
# on the WITH_CLAMAV setting, so not an error if not there
|
||||
rc_clamav=0
|
||||
else
|
||||
echo ""
|
||||
echo "Fetching ASSP ClamAV virus database updates:"
|
||||
export PATH=$PATH:%%LOCALBASE%%/bin
|
||||
sh %%PREFIX%%/lib/assp/freshclam.sh && rc_clamav=0 || rc_clamav=3
|
||||
fi
|
||||
|
||||
exit $(($rc_spamdb|$rc_clamav))
|
6
mail/assp/files/pkg-install.in
Normal file
6
mail/assp/files/pkg-install.in
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ "$2" = "POST-INSTALL" ]; then
|
||||
install -d -m 0700 -o %%ASSP_USER%% -g %%ASSP_GROUP%% %%ASSP_HOME%%
|
||||
ln -s $PKG_PREFIX/lib/assp/*.txt %%ASSP_HOME%%
|
||||
fi
|
21
mail/assp/pkg-descr
Normal file
21
mail/assp/pkg-descr
Normal file
|
@ -0,0 +1,21 @@
|
|||
Anti-Spam SMTP Proxy is a spam filter that sits on port 25 in front of your
|
||||
regular SMTP server (sendmail, postfix, qmail, etc).
|
||||
|
||||
ASSP performs a number of configurable spam checks, and on detecting a spam
|
||||
message, provides an immediate 5xx SMTP error code back to the client.
|
||||
Non-spam messages are passed to your regular SMTP server for further
|
||||
processing and delivery.
|
||||
|
||||
ASSP offers:
|
||||
- a whitelist of known good senders
|
||||
- Bayesian checks on message headers and contents
|
||||
- recipient address validation using LDAP and RFC822 conformance
|
||||
- relay denial
|
||||
- HELO checking
|
||||
- SPF (Sender Policy Framework) checking
|
||||
- DNSBL (DNS Block List) checking using many DNSBL services
|
||||
- Virus detection
|
||||
|
||||
ASSP is a single script with a web-based configuration tool.
|
||||
|
||||
WWW: http://assp.sourceforge.net/
|
25
mail/assp/pkg-plist
Normal file
25
mail/assp/pkg-plist
Normal file
|
@ -0,0 +1,25 @@
|
|||
etc/periodic/daily/510.assp
|
||||
@unexec rmdir %D/etc/periodic/daily 2>/dev/null || true
|
||||
@unexec rmdir %D/etc/periodic 2>/dev/null || true
|
||||
lib/assp/addservice.pl
|
||||
lib/assp/assp.pl
|
||||
lib/assp/move2num.pl
|
||||
lib/assp/notspamreport.txt
|
||||
lib/assp/rebuildspamdb.pl
|
||||
lib/assp/repair.pl
|
||||
lib/assp/spamreport.txt
|
||||
lib/assp/stat.pl
|
||||
lib/assp/stats.sh
|
||||
lib/assp/whitereport.txt
|
||||
%%ASSP_CLAMAV%%lib/assp/freshclam.sh
|
||||
@dirrm lib/assp
|
||||
sbin/assp
|
||||
sbin/assplog
|
||||
%%PORTDOCS%%%%DOCSDIR%%/ASSP Documentation.htm
|
||||
%%PORTDOCS%%%%DOCSDIR%%/Regular Expression Tutorial.htm
|
||||
%%PORTDOCS%%@dirrm %%DOCSDIR%%
|
||||
@unexec rm -f %%ASSP_HOME%%/notspamreport.txt 2>/dev/null || true
|
||||
@unexec rm -f %%ASSP_HOME%%/spamreport.txt 2>/dev/null || true
|
||||
@unexec rm -f %%ASSP_HOME%%/whitereport.txt 2>/dev/null || true
|
||||
@unexec rmdir %%ASSP_HOME%% 2>/dev/null || true
|
||||
@unexec if [ -d %%ASSP_HOME%% ]; then echo "If you are deinstalling ASSP completely, remove the %%ASSP_HOME%% directory."; fi
|
Loading…
Reference in a new issue