[Sysadmins] спам фильтр

Алексей Шенцев =?iso-8859-1?q?ashen_=CE=C1_nsrz=2Eru?=
Чт Апр 3 16:34:05 MSD 2008


В сообщении от Thursday 03 April 2008 19:03:23 tosh17 написал(а):
> если чесно как то не получилось поднять сервис dspam :(
> статьи которые нахожу dspam настраивается через чето другое например
> довекот а у меня dbmail было и напрямую но там через sql у меня без
> исходников и поэтому нет файлов в usr/local/share/examples/dspam/pgsq
> пробывал скачать несколько но в них тоже небыло этих файлов

Вообще то он не так сложно настраивается. Прям сейчас постараюсь вам объяснить 
что к чему. Используем postfix+dspam+mysql. Конфиг dspam'а для такого случая 
(пример):
[root на gw /]# cat /etc/dspam.conf
## $Id: dspam.conf.in,v 1.82 2006/06/23 03:11:31 jonz Exp $
## dspam.conf -- DSPAM configuration file
# DSPAM Home: Specifies the base directory to be used for DSPAM storage
Home /var/lib/dspam

UntrustedDeliveryAgent "/usr/bin/procmail -d %u"

#Server parametrs
ServerMode              auto
ServerParameters        "--deliver=innocent -d %u, spam"
ServerIdent             "localhost.localdomain"
ServerPID               /var/run/dspam.pid
#Так как в Alt Linux postfix работает в chroot'е,
#то сокет dspam'а помещаем в спуле postfix'а
ServerDomainSocketPath  "/var/spool/postfix/dspam.sock"

#Delivery for return the good mail back into Postfix
DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP

LocalMX 127.0.0.1

#Проверка почты на спам/неспам
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full

##MySQL
StorageDriver /usr/lib/libmysql_drv.so
MySQLServer     /var/lib/mysql/mysql.sock
MySQLPort       3306
MySQLUser       dspam
MySQLPass       NEED_SET_YOU_PASSWORD
MySQLDb         dspam
MySQLCompress   true
MySQLReadSignaturesFromWriteDb  on
MySQLConnectionCache    10

#Other
TrainingMode teft
TestConditionalTraining on

Trust root
Trust mail
Trust mailnull
Trust smmsp
Trust daemon
Trust dspam
Trust amavisd

Feature whitelist

Algorithm graham burton
PValue graham

Preference "spamAction=quarantine"
Preference "signatureLocation=headers"  # 'message' or 'headers'
Preference "showFactors=on"
Preference "spamSubject=***SPAM***"

#Кто отправляет письма в карантин
QuarantineAgent        "/usr/bin/procmail -d spam"

#Укладываем спам в карантин, а не отдаём его пользователю.
QuarantineMailbox       +quarantine

EnablePlusedDetail      on

#Рассылаем сообщения об спаме/карантине или нет?
Notifications   off

#Вести ли логи?
#Не путать с /var/log/dspam/dspam.log
#лог демона
#А так же с тем, что выдаётся в /var/log/maillog
#Системный лог - да.
#Местоположение /var/lib/dspam/system.log
SystemLog on

#Логи по пользователям - да.
#Местоположение /var/lib/dspam/data/$u
UserLog   on

Tokenizer chain
WebStats on

AllowOverride trainingMode
AllowOverride spamAction spamSubject
AllowOverride statisticalSedation
AllowOverride enableBNR
AllowOverride enableWhitelist
AllowOverride signatureLocation
AllowOverride showFactors
AllowOverride optIn optOut
AllowOverride whitelistThreshold

TrackSources spam nonspam
ProcessorURLContext on
ProcessorBias on

#EOF dspam.conf
[root на gw /]#

Что необходимо и достаточно прописать для postfix'а:
[root на gw /]# cat /etc/postfix/master.cf
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp    inet    n       -       n       -       -       smtpd
##For dspam
 -o content_filter=lmtp:unix:/dspam.sock
#dspam
localhost:10026 inet  n -       n       -       -        smtpd
 -o content_filter=
 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 -o smtpd_helo_restrictions=
 -o smtpd_client_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks=127.0.0.0/8
 -o smtpd_authorized_xforward_hosts=127.0.0.0/8

pickup  fifo    n       -       -       60      1       pickup
cleanup unix    n       -       -       -       0       cleanup
qmgr    fifo    n       -       -       300     1       qmgr
tlsmgr  unix    -       -       -       1000?   1       tlsmgr
rewrite unix    -       -       -       -       -       trivial-rewrite
bounce  unix    -       -       -       -       0       bounce
defer   unix    -       -       -       -       0       bounce
trace   unix    -       -       -       -       0       bounce
verify  unix    -       -       -       -       1       verify
flush   unix    n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp    unix    -       -       -       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay   unix    -       -       -       -       -       smtp
        -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq   unix    n       -       -       -       -       showq
error   unix    -       -       -       -       -       error
discard unix    -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp    unix    -       -       -       -       -       lmtp
anvil   unix    -       -       -       -       1       anvil
scache  unix    -       -       -       -       1       scache
retry     unix  -       -       -       -       -       error
[root на gw /]#

Создание БД в MySQL:

создаём БД dspam и пользователя dspam в ней с 
помощью /usr/share/dspam-3.8.0/create_dspam_db.sql

Создаём таблицы в БД с помощью /usr/share/dspam-3.8.0/mysql_objects-space.sql
Создаём таблицу виртуальных пользхователей с 
помощью /usr/share/dspam-3.8.0/virtual_users.sql

В сборку dspam-3.8.0-alt1.8 я добавил скрипт train для первоначального 
обучения dspam'а что есть spam/ham. Работать с ним просто: раскладываем 
спам-письма и нормальные письма по двум папкам spa и ham соотвественно и 
запускаем этот скрипт. Когда отработает, то БД dspam'а уже будет заполенена.

В принципе и всё.  Мои конфиги конечно не идеальные, если есть знающию люди 
пусть поправят где я ошибся.
-- 
С уважением Шенцев Алексей Владимирович.
E-mail: ashen на nsrz.ru
XMPP: ashen на altlinux.org, AlexShen на jabber.ru
ICQ: 271053845


Подробная информация о списке рассылки Sysadmins