@домівка Віктора Чмеля

 
 [Головна / Нотатки консультанта]

Spamassassin for FreeBSD


@ Задача - фільтрація спама на поштовому сервері sendmail під управлінням FreeBSD


Серед різноманітних методів боротьби з цим електронним сміттям було обрано Байесові фільтри (що входять в склад Spamassassin-а), як такі, що можуть приймати рішення за результатами попереднього навчання (докладніше див. "Фильтрация спама по Байесу"). Це добре в тому плані, що, по-перше, інші засоби реагують на спам значно пізніше ніж він реально з'явиться, по-друге, спам на кожному сервері унікальний ;), отже антиспамерські бази скажімо зі Штатів для українських поштових серверів навряд чи будть корисними, а так ви навчаєте систему в тих умовах, в яких вона буде потім працювати. Звичайно це рішення не панацея, залишається ще багато невирішених в тому числі і юридичних питань, але тут описано речі суто технічні.



1)Perl


Виявилося, що перш за все треба оновити perl, бо інакше spamassassin при інсталяції з портів
дуже лається і так до кінця і не становиться.
- upgrade perl to 5.8 (see http://www.tnpi.biz/internet/mail/toaster/docs/upgrade.shtml)
cd /usr/ports/lang/perl5.8;
make -DENABLE_SUIDPERL install clean;
rehash;
use.perl port;

After upgrading Perl, your installed Perl modules will not work with the new version of Perl.
You'll want to update them. I find the easiest approach is something like this:
portupgrade -f `pkg_info | grep p5- | cut -d" " -f1`
portupgrade -f `pkg_info | grep rrdtool- | cut -d" " -f1`

2) Spamassassin-milter


- install /usr/ports/mail/spamass-milter
- cd /usr/local/etc/mail/spamassassin
- cp local.cf.sample local.cf
- vi local.cf (see http://www.3nity.ru/viewtopic.htm?t=1459)
see example local.cf
- cd /usr/local/etc/rc.d
- cp spamass-milter.sh.dist spamass-milter.sh
- vi spamass-milter.sh
"-b" and "-B" options for spamass_milter(8) can redirect all message identified as spam to
specified user (to existing user - for collecting spam, to /dev/null - for deletting spam)
- chmod 755 spamass-milter.sh
- vi /etc/rc.conf
add spamd_enable="YES"
- start demons
# /usr/local/etc/rc.d/spamd.sh start
# /usr/local/etc/rc.d/spamass-milter.sh start

3) Sendmail


- change sendmail configuration
#cd /etc/mail
#vi host.mc (see /etc/mail/Makefile)
add
-----------------------------
dnl # DRWEB , SpamAssassin
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=T, T=C:15m;S:4m;R:4m;E:10m') dnl
INPUT_MAIL_FILTER(`drweb-filter', `S=local:/var/drweb/run/drweb-smf.skt, F=T, T=C:1m;S:5m;R:5m;E:1h') dnl
define(`confINPUT_MAIL_FILTERS', `spamassassin, drweb') dnl
define(`confMILTER_LOG_LEVEL',`6') dnl
-----------------------------
#make
#make install
check config by #mailq
!!! problem in sendmail.cf (solve by deleting empty lines)
#make restart (restart sendmail)

4)Learn Bayesian filter



- learn Bayes filters by sa-learn tool
put SPAM message in .MSG format to ./spam
put not SPAM message in .MSG format to ./ham
#sa-learn --spam ./spam
#sa-laern --ham ./ham
#/usr/local/etc/rc.d/spamd.sh restart

- test by sending mail to this host and view all e-mail headers

Once identified, the mail is then tagged as spam for later filtering
using the _user's_own_mail user-agent application.

Далі


А далі треба дивитися який спам всеж таки проходить через ваші фільтри і відповідно
збільшувати питому вагу відповідних тестів в local.cf, що його могли б не пустити.
І навчати фільтр далі. Процес цей потенційно нескінченний ;)

Ну, і наостанок: spamass-milter - це все ж таки perl, а значить мала продуктивність
на завантажених вузлах. Є відповідне рішення написане на С - див. тут. milter-spamc,
застосування якого не потребує значної перебудови вашої системи, та має працювати швидше.


local.cf

Viktor V. Chmel, 5/27/2004 02:35:00 PM.

 

[Головна / Нотатки консультанта] Last update:

Copyright © Чмель Віктор, , 2001-2004

Hosted by uCoz