Ну вот, я почти доделал свою антиспам-систему.
К сожалению, подробно описывать процедуру практически нет времени, да
и лениво. Потому на все вопросы готов ответить по почте
stranger03@mail.ru.
Но сначала небольшое отступление. В данной статье будет описана
процедура надстройки для вашего почтового сервера для фильтрации
почтового мусора (спама) и проверки входящей и исходящей почты на
вирусы. Надеюсь для чего это надо, объяснять не надо. Так же полагаю,
что вы хоть чуть-чуть знакомы с системой и вам не придеться объяснять,
как поставить систему, как настоить сам почтовый сервер и что такое
make и на кой она нужна.
Вся процедура состоит из нескольких частей:
1. Обновление дерева портов
2. Обновление почтового демона
3. Установка и настройка демона spamd, который разбирает сообщение по
кусочкам и ставит спам-балл Если балл превышает некую цифру,
которую вы можете изменять, письмо преобразуется определенным
образом.
4. Установка и настройка milter-а (spamass-milter) для почтового
демона. Он будет передавать сообщение демону spamd и принимать его
обратно, пересылая дальше по цепочке
5. Установка и настройка Касперского. В пояснении не нуждается.
6. Установка и настройка milter-а (kavmilter) для почтового демона.
Он будет передавать сообщение Касперскому.
7. И последнее, настройка самого почтового демона.
Вот собственно и все отступление, icon_smile.gif . Приступим.
1. Обновление дерева портов
---------------------------
Для начала обновим дерево портов:
cd /usr/ports/net/cvsup-without-gui
make
make install
Далее в домашнем каталоге создаем для большего удобства два файлика.
Один со списком обновляемых портов, другой со скриптом запуска.
cd /home/user
mkdir cvsup
cd cvsup
vi cvsup.ports
В принципе вы можете здесь обновлять все порты, систему, если вам это
необходимо. Для меня было достаточно этих портов. Про сам cvsup можете
почитать здесь: http://www.freebsd.org.ru/how-to/cvsup/
vi cvsup.sh
После такой процедуры ваши волосы, тьфу, порты станут относительно
новыми. Из них вам понадобится поставить следующие порты (технология
стандартная, make & make install):
Поскольку изначально в FreeBSD 5.1 ставится Sendmail 8.12.9, обновим
его до 8.12.10 из портов. После установки его будет удобно собирать
отсюда:
/usr/ports/mail/sendmail/work/sendmail-8.12.10/cf/cf
Как, поясню чуть позже. Дополнительно, в каталоге
/usr/ports/mail/sendmail надо сделать make mailer.conf
3. Установка и настройка демона spamd
-------------------------------------
Далее, с sendmail все понятно. Для двух других портов небольшие
пояснения.
Основной демон, фильтрующий вашу почту - spamd. Его конфигурационный
файл находится здесь: /usr/local/etc/mail/spamassassin/local.cf
# ==========начало файла local.cf========
# don't use agent
use_razor2 0
use_dcc 0
use_pyzor 0
# check rdl
skip_rbl_checks 0
# autowhitelist
use_auto_whitelist 1
auto_whitelist_path /var/spool/filter/.spamassassin/auto_whitelist
# bayes
use_bayes 1
bayes_path /var/spool/filter/.spamassassin/bayes
auto_learn 1
ok_languages en ru de
ok_locales en ru de
# rewrite subject
rewrite_subject 1
subject_tag *SPAM*_HITS_ points* :
required_hits 3.5
report_charset koi8-r
allow_user_rules 0
clear_report_template
report This message has identified this incoming email as possible spam.
report
report Content preview: _PREVIEW_
report
report Content analysis details: (_HITS_ points, _REQD_ required,_BAYES_ bayes score)
report
report pts rule name description
report ---- ---------------------- --------------------------------------------------
report _SUMMARY_
clear_unsafe_report_template
# network whitelist
whitelist_from localhost
whitelist_to spam@mycompany.ru (mailto:spam@mycompany.ru)
# ==========конец файла local.cf=========
По пунктам объяснять не буду. Многое разжовано в статье Сергея Тараненко
http://www.3nity.ru/viewtopic.htm?t=1459
Файл /usr/local/etc/rc.d/spammerdaemon.sh. Собственно скрипт,
запускающий сам демон. Обратите внимание на два параметра. Первый -u
filter означает, что демон запускается от некоего виртуального
пользователя, имеющего ограниченные права. Про самого пользователя
чуть ниже. Второй параметр -s local5. Это вывод сообщений в другой
файл-лог. Изначальньно демон spamd все пишет в maillog. Мне это не
понравилось, я вывел сообщения от него в другой файл. Так удобнее
анализировать. В принципе, я бы вообще его отключил, да вот в
документации не нашел, как.
Как я уже говорил, мне удобнее, когда сообщения от разных демонов
пишутся в разные лог-файлы. Потому, чтобы перенаправить сообщения от
spamd в другой файл, создадим пустой файл spamd.log:
cd /var/log
cat >./spamd.log
chown filter:filter spamd.log
И скорректируем содержимое двух файлов syslog.conf и newsyslog.conf:
# ======добавка в файл newsyslog.conf=====
/var/log/spamd.log filter:filter 640 3 2000 * Z
# =======конец файла newsyslog.conf=======
4. Установка и настройка milter-а (spamass-milter) для почтового демона.
------------------------------------------------------------------------
Собственно, сам демон, разбирающий почту по косточкам готов. Перейдем
к настройкам milter-а, который будет передавать письмо от sendmail к
spamd. При установке spamass-milter файлик, объясняющий процедуру
активизации фильтра, лежит здесь: /usr/local/share/doc/spamass-milter/activation.txt.
Из всего этого я вынес для себя только одну полезную строчку:
Ну и собственно скрипт для запуска milter-фильтра. Там ничего сложного
нет. Единственное изменение, которое я сделал - это добавил в скрипт
адрес, на который будет пересылаться почта, идентифицированная
как "СПАМ".
case "$1" in
start)
if [ -f "${DAEMON}" -a -x "${DAEMON}" ]
then
"${DAEMON}" -b "${SPAMADRESS}" -p "${SOCKET}" -f &
echo $! > "${PIDFILE}"
sleep 1
kill -HUP `head -1 /var/run/sendmail.pid`
echo -n ' spamass-milter running'
fi
;;
stop)
if [ -f "${PIDFILE}" ]
then
read -r pid junk < "${PIDFILE}"
kill ${pid}
rm -f "${SOCKET}" "${PIDFILE}"
sleep 1
kill -HUP `head -1 /var/run/sendmail.pid`
echo -n ' spamass-milter stopped'
fi
;;
esac
# ========конец файла spamass-milter.sh===
5. Установка и настройка Касперского.
-------------------------------------
С настройками фильтров, определяющих наличие спама в сообщениях
покончено. Перейдем к установке господина Касперского и мильтера для
почтовика. Соответсвенно, качаем откуда-нибудь kav-MailServer-4.0.4.0-FreeBSD-4.x.tgz
tar xzvf kav-MailServer-4.0.4.0-FreeBSD-4.x.tgz
pkg_add kav-WorkStationSuite-4.0.4.0-FreeBSD-4.x.tgz
Из всего, что поставится в каталог /usr/local/share/AVP - интересны
только эти файлы:
В стандартных конфигах я кое-что переделал. Во первых, при установке
Касперского, он норовит свои конфигурационные файлы поместить в
/etc/Avp. Мне это не понравилось, я выкинул оттуда все и поместил в
домашний каталог Касперского /usr/local/share/AVP. Отсюда несколько
изменений в перечисленных конфигах. Далее, создал два каталога, куда
будут валиться логи и временные файлы для проверки на вирусы.
mkdir /var/log/kav
mkdir /tmp/kav
6. Установка и настройка milter-а (kavmilter) для почтового демона.
-------------------------------------------------------------------
Осталось поставить milter для Касперского. Сам порт находится здесь:
/usr/ports/mail/kavmilter.
Процедура все таже, make & make install
При установке kavmilter создается три файлика, один файл запуска
самого kavmilter, второй файл запуска демона kavdaemon, третий
конфигурационный. Там опять же, я многое поменял, потому просто
содержимое файликов:
При установке Касперского в /usr/local/etc/rc.d/ создается файл kavd.sh.
Я его удалил, вместо него следует использовать другой, что ставится
вместе с kavmilter. Некоторые строки мною изменены, потому просто
содежимое файла /usr/local/etc/rc.d/kavdaemon.sh:
dnl Realtime Blocking List - AntiSpam Control
dnl FEATURE(dnsbl)
dnl FEATURE(dnsbl, `relays.osirusoft.com', `Mail rejected - see http://relays.osirusoft.com/')
FEATURE(dnsbl,`relays.ordb.org',`Mail rejected - see http://ordb.org/')
FEATURE(dnsbl,`blackholes.easynet.nl',`Mail rejected - see http://blackholes.easynet.nl/')
dnl FEATURE(dnsbl,`inputs.orbz.org', `Mail rejected - see http://orbz.org/')
dnl FEATURE(dnsbl,`relays.visi.com', `Mail rejected - see http://relays.visi.com/')
dnl FEATURE(dnsbl, `ex.dnsbl.org', `Mail rejected - see http://www.dnsbl.org/')
dnl FEATURE(dnsbl,`blackholes.mail-abuse.org',`Mail rejected - see http://mail-abuse.org/')
dnl FEATURE(dnsbl,`relays.mail-abuse.org',`Mail rejected - see http://work-rss.mail-abuse.org/')
dnl FEATURE(dnsbl,`dialups.mail-abuse.org',`Mail rejected; see http://mail-abuse.org/dul/enduser.htm')
dnl Russian DialUp Blocking List
FEATURE(`dnsbl',`dul.ru',`Mail rejected - your are spammer')
dnl Uncomment the first line to change the location of the default
dnl /etc/mail/local-host-names and comment out the second line.
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`confCW_FILE', `-o /etc/mail/local-host-names')
Эта строчка говорит, что при получении письма почтовиком, письмо
передается фильтру spamassassin для проверки на спам. В результате
обработки письму присваивается некий рейтинг.
Эта строчка говорит о том, что после обработки письма на потенциальный
спам, письмо попадает к Касперскому, а тот уже делает вывод, содержит ли
письмо вирус или нет.
define(`confMILTER_LOG_LEVEL',`6')
Ну и эта строка лишь уменьшает количество выводимой информации в логи.
Что удобно после отладки. Мне ведь нужны в принципе только строки о
поступлении и пересылке письма. Для разбора полета письма их вполне
достаточно, icon_smile.gif.
Собираем конфигурационный файл sendmail:
m4 main.mc>sendmail.cf
Его надо перезаписать поверх старого файла /etc/mail/sendmail.cf.
Ну и несколько последних штрихов. На самом деле вы можете этот шаг
пропустить или сделать так, как вам удобнее. Я для собственного
успокоения создал каталог /usr/local/etc/script. Переместил туда все
необходимые мне стартовые скрипты kavdaemon.sh, spammerdaemon.sh,
kavmilter.sh, spamass-milter.sh. В каталоге /usr/local/etc/rc.d создал
исполняемый скрипт следующего содержания:
# =======начало файла start.sh===============
#!/bin/sh
# my start script
# kavdaemon - antiviral tolkien pro
/usr/local/etc/script/kavdaemon.sh start
Вот вроде бы и все. Буду благодарен за любые замечания на адрес stranger03@mail.ru
Все права на этот документ принадлежат мне.
Огромное спасибо:
Андрееву Павлу, системному администратору Novavox и Тараненко Сергею,
системному администратору Trinity за неоценимую помощь в создании данной системы.
С уважением, Дмитриев Геннадий Федорович.
Системный администратор ООО "Компьютеры Линтек"