anti-spam filter used by the FreeBSD mailing lists.

This commit is contained in:
Jonathan M. Bresler 1997-10-19 16:40:10 +00:00
parent cc75b131a6
commit c38876e369
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=30581
3 changed files with 134 additions and 0 deletions

29
etc/mail/Makefile Normal file
View File

@ -0,0 +1,29 @@
default:
.if exists(/etc/mail/ips.txt)
mv -f /etc/mail/ips.txt /etc/mail/ips.txt.0
.endif
fetch ftp://ftp.gulf.net/pub/docs/ips.txt
cat /etc/mail/ips.txt | cut -d ' ' -f 1 | \
sed -e 's/$$/ #blocked. contact postmaster/' > \
/etc/mail/ips.new
mv /etc/mail/ips.new /etc/mail/ips.txt
.if exists(/etc/mail/domains.txt)
mv -f /etc/mail/domains.txt /etc/mail/domains.txt.0
.endif
fetch ftp://ftp.gulf.net/pub/docs/domains.txt
cat /etc/mail/domains.txt | cut -d ' ' -f 1 | \
sed -e 's/$$/ #blocked. contact postmaster/' > \
/etc/mail/domains.new
mv /etc/mail/domains.new /etc/mail/domains.txt
install:
makemap hash /etc/mail/spamsites < /etc/mail/domains.txt
.if exists(/etc/mail/spamsites.local)
makemap -o hash /etc/mail/spamsites < /etc/mail/spamsites.local
.endif
makemap hash /etc/mail/denyip < /etc/mail/ips.txt
.if exists(/etc/mail/denyip.local)
makemap -o hash /etc/mail/denyip < /etc/mail/denyip.local
.endif
all: default install

65
etc/mail/README Normal file
View File

@ -0,0 +1,65 @@
Filtering out SPAM from your site
Introduction:
The FreeBSD Project filters spam, unsolicited commerical
e-mail, from its mailing lists. The filter has two parts: databases
and rulesets. We have added three rulesets to /etc/sendmail.cf,
check_relay and check_mail and xlat. (xlat is for testing only, as
explained in /etc/mail/sendmail.cf.additions.) These rulesets use
two databases. The denyip, a list of IP addresses, and spamsites,
a list of domains. We do not accept mail from any machine that
matches a entry in either database.
Filtering at your site:
To filter spam at your site you need to:
1. modify your /etc/sendmail.cf,
2. retrieve the database source files from the master site,
3. make the databases and
4. finally signal sendmail that the configuration file has changed.
1. Modifying your /etc/sendmail.cf
Add the database declarations and the rulesets contained
in /etc/mail/sendmail.cf.additions to your .mc file. If you do
not use m4 to generate your /etc/sendmail.cf, add the database
declarations to your /etc/sendmail.cf.
2. Fetching the database source files:
The database source files are available from Gulf Coast
Internet via anonymous FTP. The Makefile in /etc/mail will retreive
the source files for you: as root, type "cd /etc/mail; make" at
the command line. The previous version of the database source
files is moved to <filename>.0. Local additions should be kept in
separate files. We use spamsites.local and denyip.local. You may
want to diff the new versions of the files against the previous
versions to see what has changed.
3. Make the databases:
As root, type "cd /etc/mail; make install" will build the
two databases from the retrieved source files and the local additions
files.
4. Signaling sendmail:
Sendmail will reread its configuration whenever sendmail
receives a HUP signal. As root, type "kill -HUP `cat
/var/run/sendmail.pid`". Check sendmail's log file to be sure that
it has restarted. /var/log/maillog should contain the line: "Oct
15 08:59:16 hub sendmail[6565]: restarting /usr/sbin/sendmail on
signal". Most likely, the date, time, hostname and process id will
be differ.
Testing the spam filter:
How can I tell if its working:
The mail log file, /var/log/maillog, will contain a line
for every message filtered. The lines will be similar to one of
these two log entries:
Check_mail rejects:
"Oct 15 02:43:26 hub sendmail[6565]: CAA06565: ruleset=check_mail,
arg1=<announce@martianconsulate.com>, relay=xxx.isp.net [###.###.###.###],
reject=521 <announce@martianconsulate.com>"
Check_relay rejects:
Oct 19 04:45:24 hub sendmail[3503]: NOQUEUE: ruleset=check_relay,
arg1=imsp015.netvigator.com, arg2=205.252.144.206, relay=root@localhost,
reject=521 blocked.contact postmaster@FreeBSD.ORG

View File

@ -0,0 +1,40 @@
# database declarations
Kdenyip hash -o -a.REJECT /etc/mail/denyip.db
Kspamsites hash -o -a.REJECT /etc/mail/spamsites.db
# called with host.tld and IP address of connecting host.
# ip address must NOT be in the "denyip" database
Scheck_relay
R$* $| [$+ $1 $| $2 should not be needed
R$* $| $+] $1 $| $2 same (bat 2nd ed p510)
R$* $| $* $: $1 $| $(denyip $2 $)
R$* $| $*.REJECT $#error $: 521 blocked. contact postmaster@FreeBSD.ORG ($2)
# host must *not* be in the "spamsites" database
R$+.$+.$+ $| $* $2.$3 $| $4
R$+.$+ $| $* $: $(spamsites $1.$2 $) $| $3
R$*.REJECT $| $* $#error $: 521 blocked. contact postmaster@FreeBSD.ORG ($1)
# Host must be resolvable, currently not used at hub.freebsd.org
#R$* $| $* $: <?> <$1 $| $2> $>3 foo@$1
#R<?> <$*> $*<@$*.> $: $1
#R<?> <$*> $*<@$*> $#error $: 451 Domain does not resolve ($1)
# called with envelope sender, "Mail From: xxx", of SMTP conversation
#
Scheck_mail
R$* $: <?> $>3 $1
R<?> $* < @ $+ . > $: $2
# R<?> $* < @ $+ > $#error $: "451 Domain does not resolve"
R<?> $* < @ $+ > $: $2
R$+.$+.$+ $2.$3
R$* $: $(spamsites $1 $: OK $)
ROK $@ OK
R$+.REJECT $#error $: 521 $1
# for testing check_relay and check_mail
# if we type "$|", sendmail will split this into two tokens "$" and "|"
# this rule glues prevent sendmail from splitting "$|"
# to use: /usr/sbin/sendmail -bt
# host.domain.tld $| 111.222.333.444
Sxlat
R$* $$| $* $: $1 $| $2
R$* $| $* $@ $>check_relay $1 $| $2