ClamAV + clamsmtpd + Postfix
ClamAV — это бесплатный антивирус,
распространяемый по лицензии GPL. В этой статье я расскажу о том,
как прикрутить антивирус ClamAV к почтовой системе postfix.
Т.к. делал я это всё в дистрибутиве ASP Linux 9, то
и установку с настройкой тоже опишу под него. Но это вовсе не
значит, что эта статья больше никому не пригодится. Всё описанное
ниже будет работать и в другом дистрибутиве Linux, а отличаться
будет только установкой пакетов (и, например, добавлением clamd в
автозагрузку — прим. ред.).
Для начала нам понадобится скачать сам антивирус ClamAV (clamav.sourceforge.net), clamsmtpd (memberwebs.com/nielsen/software/clamsmtp/) и
MTA Postfix (http://www.postfix.org/).
Итак, качаем пакет clamav-0.72-1.i386.rpm (хоть он и для Fedora Core,
но прекрасно подошел и к моему ASP9), устанавливаем:
# rpm -ivh clamav-0.72-1.i386.rpm
После установки в директории /etc появится файл
конфигурации clamav.conf. В принципе, ничего менять там не надо, за
исключением того, что нужно закомментировать (если они
раскомментированы, конечно) опции TCPAddr и TCPSocket, и
раскомментировать строку
LocalSocket /var/run/clamav/clamd.sock.
Таким образом укажем антивирусу, что работать он
будет только на локальной машине.
Затем запустить сервис clamd: # service clamd
start. И также поместить его в автозагрузку (в консоли
запустить ntsysv и отметить звёздочкой сервис clamd).
Для обновления антивирусных баз используется
утилита freshclam, которая входит в состав пакета clamav. Для того,
чтобы базы обновлялись два раза в день и при этом в логи
записывались результаты обновления, freshclam нужно запускать
следующим образом:
# freshclam -d -c 2 -l /var/log/clamav/clam-update.log
Рекомендую разместить строку с этой командой в файл
/etc/rc.d/rc.local.
С установкой и настройкой clamav все.
Теперь качаем clamsmtpd: clamsmtp-1.1.tar.gz. Устанавливаем его:
$ tar -xvzf clamsmtp-1.1.tar.gz $ cd clamsmtp-1.1 $
./configure $ make $ su - # make install
После этого копируем пример конфигурационного файла
clamsmtpd.conf из директории с исходниками (находится в
подкаталоге doc/) в директорию /usr/local/etc (именно в
этой директории clamsmtpd будет искать свой конфигурационный файл по
умолчанию). После правки этот файл будет выглядеть следующим
образом:
# cat /usr/local/etc/clamsmtpd.conf
OutAddress: 10026
Listen: 0.0.0.0:10025 ClamAddress:
/var/run/clamav/clamd.sock TempDirectory: /tmp User:
clamav
На самом деле, параметров в этом файле может быть
больше, но я указал лишь необходимые. Для более подробного изучения
рекомендую почитать man clamsmtpd.conf.
Запуск clamsmtpd выполняется одноименной командой
clamsmtpd.
Таким образом clamsmtpd будет открывать 10025-ый
порт, на который postfix будет как бы отсылать почту для проверки
антивирусом (соответствующая настройка будет описана ниже), а затем,
после проверки, clamsmtpd будет возвращать её обратно postfix'у на
порт 10026.
Настройка postfix
Саму установку и настройку postfix я описывать не
буду, т.к. существует множество статей в интернете, описывающих этот
процесс подробно и, к тому же, на русском. Опишу лишь те опции,
которые отвечают за привязку антивируса к почтовой системе.
В файл main.cf необходимо добавить две строчки:
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings
Первая говорит postfix'у о том, что необходимо
пересылать всю почту через сервис (фильтр) 'scan' на 10025-ый порт,
который, как раз, открыт clamsmtpd.
Вторая строчка говорит о том, чтобы postfix не
делал никаких манипуляций с адресами до того, как они дойдут до
content_filter. Так что получается, что фильтр работает с реальными
почтовыми адресами, а не с результатами перевода в виртуальные
псевдонимы, маскарадингом и т.п.
В файл master.cf необходимо добавить следующие строки:
# AV scan filter (used by content_filter)
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet n - n - 16 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_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
Примечание: вокруг знака '=' пробелы не
ставить. Значение 127.0.0.1:10026 открывает 10026-порт
для возвращения почты обратно от clamsmtpd. Остальные значения см. в
соответствующем мануале.
Вот, собственно, и все.
Автор: fly4life
Источник: www.nixp.ru
|