Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Обучение от Mail.Ru Group.
Онлайн-университет
для программистов с
гарантией трудоустройства.
Набор открыт!
2004 г.

ClamAV + clamsmtpd + Postfix

Автор: fly4life
E-mail: fly4life[at]nixp[dot]ru
Сайт: nixp.ru

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. Остальные значения см. в соответствующем мануале.

Вот, собственно, и все.

Новости мира IT:

Архив новостей

Последние комментарии:

Релиз ядра Linux 4.14  (9)
Среда 22.11, 19:04
Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...