[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