Среда, 08.05.2024, 05:30
Приветствую Вас Гость

Mandriva Linux

Меню сайта
Форма входа
Категории раздела
ClamAV + Spam assissian + Postfix [1]
Postfix [1]
Почтовый сервер Postfix.
Поиск
Главная » Статьи » Почтовый сервер » ClamAV + Spam assissian + Postfix

Настройка спам фильтрва на базе ClamAV + Spam assissian + Postfix

Установка пакетов

Устанавливаем: 
  • spammassissian*.rpm со всеми зависимостями
  • spamd.rpm
  • spamc.rpm
  • clamav*.rpm
  • clamav-db-*.rpm
  • clamd*.rpm и все остальные, которые предложит инсталятор.

Настройка ClamAV

После установки пакетов, в директории /etc появится файл конфигурации clamav.conf.
В принципе, ничего менять там не надо, за исключением того, что нужно закомментировать (если они раскомментированы, конечно)опции TCPAddr и TCPSocket, и раскомментировать строку LocalSocket /var/run/clamav/clamd.sock
Таким образом укажем антивирусу, что работать он будет только на локальной машине.
Затем запустить сервис clamd:
# service clamd start

И также поместить его в автозагрузку (в консоли запустить drakxconf, зайти в раздел "службы" и отметить звёздочкой сервис clamd).
Для обновления антивирусных баз используется утилита freshclam, которая входит в состав пакета clamav. Для того, чтобы базы обновлялись два раза в день и при этом в логи записывались результаты обновления, freshclam нужно запускать следующим образом:
# freshclam -d -c 2 -l /var/log/clamav/clam-update.log

Рекомендую разместить строку с этой командой в файл /etc/rc.d/rc.local.

С установкой и настройкой clamav все.

Настройка спамфильтра

1. Редактируем файл /etc/sysconfig/spamd

# Customized settings for spamassassin (spamd)

# Cmdline options SPAMDOPTIONS="-d -c -m5 -H --socketpath=/var/lib/spamd/spamd.socket --socketowner=clamav --socketgroup=clamav --socketmode=660"

2. Создать директорию для socket файла
 
# mkdir /var/lib/spamd
# chown clamav /var/lib/spamd


3. Затем запустить сервис spamd:
 
# service spamd start.
 
И также поместить его в автозагрузку (в консоли запустить drakxconf, зайти в раздел "службы" и отметить звёздочкой сервис spamd).
 

Настройка Postfix

Редактируем /etc/postfix/master.cf Вконец добавляем строки
 
pparanoid unix - n n - - pipe flags=Rq user=clamav argv=/usr/local/etc/postfix/post-paranoid.sh -f ${sender} -- ${recipient}
 
Редактируем строку с smtp
 
smtp inet n - y - - smtpd -o content_filter=pparanoid:dummy
 

Создание скрипта обработки почты


Создаем файл /usr/local/etc/postfix/post-paranoid.sh следующего содержания
 
SENDMAIL="/usr/sbin/sendmail -i "
POSTLOG="/usr/sbin/postlog -t "
AVCMD="/usr/bin/clamdscan --no-summary --stdout"
SPAMC="/usr/bin/spamc -u clamav -U /var/lib/spamd/spamd.socket"
EX_TEMPFAIL=75
trap "cd $INSPECT_DIR && rm -f $TMPMSG $TMPDATA" 0 1 2 3 15
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
umask 006
cat | $SPAMC > $TMPMSG || { echo Cannot save message to file; exit $EX_TEMPFAIL; }
AV_OUTPUT=`$AVCMD $TMPMSG`
AV_RESULT=$?
from=$2
to=$4
msgid=`head -n 200 $TMPMSG | grep -i "^message-id" | cut -d: -f 2- | sed 's/^ *//' | head -n 1`
case "$AV_RESULT" in
0)
$SENDMAIL "$@" <$TMPMSG
$POSTLOG postfix/virus-filter message-id=$msgid status: CLEAN from=\<$from\> to=\<$to\> 2>/dev/null
exit 0
;;
1)
AV_OUTPUT=`echo $AV_OUTPUT | awk -F ":" '{print $2}'`
cat /dev/null > $TMPDATA || { echo "Cannot write to $INSPECT_DIR/$TMPDATA"; exit $EX_TEMPFAIL; }
head -n 200 $TMPMSG | grep -i -m 1 "^Message-ID:" >> $TMPDATA
head -n 200 $TMPMSG | grep -i -m 1 "^Date:" >> $TMPDATA
echo "From: $from" >> $TMPDATA
echo "To: $to" >> $TMPDATA
head -n 200 $TMPMSG | grep -i "^X-Original-To:" >> $TMPDATA
head -n 200 $TMPMSG | grep -i "^Delivered-To:" >> $TMPDATA
head -n 200 $TMPMSG | grep -i -m 1 "^Subject:" >> $TMPDATA
head -n 200 $TMPMSG | grep -i "^Received:" >> $TMPDATA
head -n 200 $TMPMSG | grep -i "^User-Agent:" >> $TMPDATA
head -n 200 $TMPMSG | grep -i "^X-Mailer:" >> $TMPDATA
echo -n "Message-Size: " >> $TMPDATA
ls -l $TMPMSG | awk '{print $5}' >> $TMPDATA
echo Virus-Status: $AV_OUTPUT >> $TMPDATA
cat $TMPDATA | mail -s "ClamAV: VIRUS FOUND " $REP_TO
$POSTLOG postfix/virus-filter message-id=$msgid reject: INFECTED from=\<$from\> to=\<$to\> 2>/dev/null
exit 0
;;
*)
AV_ERR="ERROR CODE: $AV_RESULT. $AV_OUTPUT"
echo $AV_ERR | mail -s "ClamAV: ERROR!" $REP_TO
exit $EX_TEMPFAIL
;;
esac
 
Меняем владельца и тип
 
# chown clamav /usr/local/etc/postfix/post-paranoid.sh
# chmod 755 /usr/local/etc/postfix/post-paranoid.sh
 
Создаем директорию для временных файлов
 
# mkdir /var/spool/postfix/filters
# chown clamav /var/spool/postfix/filters
 
И перезапускаем Postfix
 
# postfix restart

Приэтом директория /.spamssassin с файлами auto-whitelist, bayes_seen, bayes_toks, user_prefs будет находится в /var/lib/clamav


Замечания

При использовании clamd была замечена одна неприятная вещь.
Появилось сообщение от nagios о сильной загрузке cpu на почтовом сервере. Как потом выяснилось, грузил его как раз clamd. Почта естественно перестала ходить и в INSPECT_DIR скопилось около сотни писем.
После перезапуска clamd все встало на свои места, но письма которые находились в INSPECT_DIR естественно не отправились.
Для отправки этих писем был написан второй скрипт. Его нужно положить в файл /usr/local/etc/postfix/post-after-crash.sh
 
#!/bin/sh
INSPECT_DIR="/var/spool/postfix/filters"
SENDMAIL="/usr/sbin/sendmail -t "
CNT=0
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit 1; }
ls | (
while read TMPMSG
do
CNT=`expr $CNT + 1`
echo "Processing message #$CNT: $TMPMSG"
cat $TMPMSG | $SENDMAIL
rm -f $TMPMSG
done)
echo "Done."


При написани данного мануала была использована и переработана статья : Установка бесплатного антивируса ClamAV + Spam assissian + Postfix под Linux (www.volmed.org.ru/wiki/)
Оригинал статьи лежит тут
Категория: ClamAV + Spam assissian + Postfix | Добавил: Direnor (13.11.2010)
Просмотров: 2182 | Комментарии: 13 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Ресурсы Mandriva
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0