Sendmail: Spamassassin and ClamAV as
Daemons
Category: Sendmail Milters
Level:
Intermediate
OS: FreeBSD 5.x (у меня на FreeBSD
4.9)
Created: 03/09/2004
Author: JTSage (wisesage98)
с исправлениями и
коментариями PomidorOFF ;)
Введение: Это
инструкция по развертыванию антивирусной проверки на основе ClamAV и спам
фильтра SpamAssassin на уровне MTA используя
sendmail.
Необходимо:
1. Рабочая система freebsd.
2.
Обновленное дерево портов и знания, необходимые для установки программ из
портов.
Рабочая инсталяция sendmail и минимальные познания для его
настройки.
Инсталяция из портов:
Во первых установим
необходимые
программы.
# cd
/usr/ports/mail/p5-Mail-SpamAssassin
#
make install clean
# cd
/usr/ports/mail/spamass-milter
#
make install clean
# cd
/usr/ports/security/clamav-devel
#
make -DWITH_MILTER install clean
ClamAV устанавливаем с поддержкой
MILTER. Это необходимо для данной конфигурации. На мой взгляд это лучший
вариант, по крайней мере для sendmail.
Настройка -
ClamAV:
Нам нужны
файлы:
/usr/local/etc/freshclam.conf
/usr/local/etc/clamav.conf
/usr/local/etc/rc.d/clamav-clamd.sh
/usr/local/etc/rc.d/clamav-milter.sh
/usr/local/etc/rc.d/freshclam.sh
/etc/rc.conf
Настройка
- /usr/local/etc/freshclam.conf:
Это файл настройки обновлений
вирусной базы ClamAV. По умолчанию обновление происходит каждые 12 часов.
ClamAV рекомендует изменить время на 2 часа.
Настройка -
/usr/local/etc/clamav.conf:
Это файл конфигурации функций ClamAV.
Измените следующие
параметры:
#Example
#Закоментарьте
эту строку!! Не нужно
коментить, просто ниже
исправите ошибку автора!
LocalSocket
/var/run/clamav/clamd.sock
ScanMail
#Раскоментируйте
эту строку!! И так раскоментарен, остальное по вкусу, у меня только
не заработала фишка пометки зашифрованного архива как вирус. Кроме того
обладателям старых и слабых компьютеров нужно быть осторожным с проверкой на
вирусы архивов – они существенно загружают систему!
Настройка -
/usr/local/etc/rc.d/clamav-clamd.sh:
Проверьте, что бы следующая
строка присудствовала и права на файл были - chmod
755:
clamav_clamd_socket=${clamav_clamd_socket:-"/var/run/clamav/clamd.sock"}
здесь автор помоему совершил ошибку! Он
пропустил .sock в конце строки.
Настройка -
/usr/local/etc/rc.d/clamav-milter.sh:
Проверьте, что бы следующая
строка присудствовала и права на файл были - chmod
755:
clamav_milter_socket=${clamav_milter_socket:-"/var/run/clamav/clmilter.sock"}
Настройка
- /usr/local/etc/rc.d/freshclam.sh:
Проверьте, что бы права на файл
были - chmod 755:
Настройка - /etc/rc.conf:
Добавьте
следующие
строки:
clamav_clamd_enable="YES"
clamav_milter_enable="YES"
freshclam_enable="YES"
Запуск
- ClamAV:
Запустите
следующее:
#
/usr/local/etc/rc.d/clamav-clamd.sh
start
#
/usr/local/etc/rc.d/clamav-milter.sh
start
#
/usr/local/etc/rc.d/freshclam.sh start
Внимание: убедитесь что на
/var/run/clamav стоит chmod 700. Также убедитесь что 2 сокета (файлы) в этой
директории НЕ доступны для чтения и записи для группы или
мира.
Настройка - Spamassassin:
Нам нужны
файлы:
/usr/local/etc/mail/spamassassin/local.cf
/usr/local/etc/rc.d/spamd.sh
/usr/local/etc/rc.d/spamass-milter.sh
/etc/rc.conf
Настройка
- /usr/local/etc/mail/spamassassin/local.cf:
Скопируйте
local.cf.sample в local.cf. Это файл конфигурации spamassassin. Смотрите
документацию для настройки опций.
Где то нарыл образец (помоему от Lavr) и немного его изменил под себя:
local.cf
# This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
###########################################################################
trusted_networks 192.168/16 127/8 # all in 192.168.*.* and 127.*.*.*
trusted_networks 127. # all in 127.*.*.* localhost
# whitelist
whitelist_from *@my_domain.ua
whitelist_from *@my_provaider.com
whitelist_from *@my_provaider2.com
whitelist_from localhost
# blacklist
#blacklist_from
#blacklist_to
# переписать поле subject
rewrite_subject 1
subject_tag ***SPAM***
required_hits 5.0
report_safe 0
use_terse_report 0
use_bayes 1
auto_learn 1
skip_rbl_checks 0
use_razor2 0
use_dcc 0
use_pyzor 0
always_add_report 1
#use_auto_whitelist 1
#auto_whitelist_path /etc/mail/spamassassin/auto_whitelist
#bayes_path /etc/mail/spamassassin/bayes
ok_languages ru en
ok_locales ru en
report_charset windows-1251
lang ru
#score NAME_OF_TEST 3.0
#score MIME_HTML_ONLY 2.0
#score HTML_MESSAGE 1.0
#score HTML_FONTCOLOR_RED 2.0
score FROM_ILLEGAL_CHARS 1.5
score HEAD_ILLEGAL_CHARS
1.5
#end
Настройка -
/usr/local/etc/rc.d/spamd.sh:
Проверьте, что бы права на файл были -
chmod 755:
Настройка -
/usr/local/etc/rc.d/spamass-milter.sh:
Проверьте, что бы следующая
строка присудствовала и права на файл были - chmod
755:
SOCKET=/var/run/spamass-milter.sock
Настройка
- /etc/rc.conf:
Добавьте
строку:
spamd_enable="YES"
Запуск
-
SpamAssassin:
Запустите:
#
/usr/local/etc/rc.d/spamd.sh
start
#
/usr/local/etc/rc.d/spamass-milter.sh start
Настройка -
Sendmail:
Войдите в директорию /etc/mail и отредактируйте freebsd.mc.
Добавьте следующие
строки:
INPUT_MAIL_FILTER(`spamassassin',
`S=local:/var/run/spamass-milter.sock, F=,
T=C:15m;S:4m;R:4m;E:10m')
INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clmilter.sock,F=,
T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS',
`spamassassin, clmilter')
Здесь автор тоже что то напутал! Во первых freebsd.mc не обязательно, конфиг сендмейла может и не так называться. Если устанавливалось все по умолчанию, то все верно. Иначе нужно коректировать ваш файл конфигурации сендмейла. Его название можна посмотреть например в /etc/make.conf в строке:
SENDMAIL_MC=/etc/mail/myconfig.mc
Во вторых добавляем так:
INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')
INPUT_MAIL_FILTER(`clmilter', `S=local:/var/run/clamav/clmilter.sock, F=, T=S:4m;R:4m')
dnl
define(`confINPUT_MAIL_FILTERS', `spamassassin,
clmilter')
Запустите в директории /etc/mail для перезагрузки
sendmail
#
make
# make
install
# make
restart
#
newaliases
Теперь, sendmail *должен* отбрасывать вирусы, и помечать спам.
Проверьте. Тестовые файлы есть в дистрибутивах Spamassassin и
ClamAV.
Настройка - Mail::Audit
Я использую Mail::Audit, вы
тоже должны. Вовсе не должны, не слушайте его, это вам решать! :) Если вы
тоже используете его, то здесь быстрый и простой пример для переноса всего спама
в другую папку. Добавьте следующее в ваш
скрипт:
my $spamdir =
"/home/username/Mail/SPAM";
if
($item->get("X-Spam-Flag")) { $item->accept($spamdir);
}
------UPDATE-------
Если вы следовали моим советам для настройки
ClamAV, когда его лог превысит 5MB, clamav отказывается работать. Вот
исправление этой проблемы:
Ротация логов Clamd:
Первое и
основное, убедитесь что clamav бросает pidfile. В /usr/local/etc/clamav.conf
раскоментируйте:
# This option allows you to save the process identifier
of the listening
# daemon (main thread).
PidFile /var/run/clamd.pid
(сейчас правильно /var/run/clamav/clamd.pid)
Потом, добавьте следующее
(одной строкой) в /etc/newsyslog.conf
/var/log/clamd.log 644 3 * $W0D1 BJ
/var/run/clamd.pid 1
(соответственно: var/run/clamav/clamd.log 644 3 * $W0D1 BJ var/run/clamav/clamd.pid 1)
Это будет перезаписывать ваш лог раз в неделю, сохранять 3
из них (текущий + 3 недели). Старые будут сжиматься bzip2 и посылать SIGHUP
процессу clamd.
FWIW – Я использую SpamAssassin и ClamAV более 6 месяцев
и не могу сказать ничего плохого о них.
P.S. От меня:
У меня все красиво заработало, юзерам приходят письма помеченные в теме письма -
***SPAM*** потом в The Bat! За 5 сек настраивается фильтр, отсекающий письма с такимим заголовками (или удалять или ложить в папку для спама и т.п. и т.д.)
Завирусованые письма удаляются – отправляются сообщения постмастеру и отравителю вида:
The message i4O4ofrS005467 sent from <***@***.kiev.ua> to
<***@***.ua>
contained a virus and has not been delivered.
stream: Worm.Bagle.Z FOUND