ClamAV + clamsmtpd + Postfix
Администрирование
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.
Постоянная ссылка: http://www.nixp.ru/articles/53.html
ClamAV — это бесплатный антивирус, распространяемый по лицензии GPL. В этой статье я расскажу о том, как прикрутить антивирус ClamAV к почтовой системе postfix.
ClamAV — это бесплатный антивирус, распространяемый по лицензии GPL. В этой статье я расскажу о том, как прикрутить антивирус ClamAV к почтовой системе postfix.
Т.к. делал я это всё в дистрибутиве ASP Linux 9, то и установку с настройкой тоже опишу под него. Но это вовсе не значит, что эта статья больше никому не пригодится. Всё описанное ниже будет работать и в другом дистрибутиве Linux, а отличаться будет только установкой пакетов (и, например, добавлением clamd в автозагрузку — прим. ред.).
Для начала нам понадобится скачать сам антивирус ClamAV (clamav.sourceforge.net), clamsmtpd (memberwebs.com/nielsen/software/clamsmtp/) и MTA Postfix (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. Остальные значения см. в соответствующем мануале.
Вот, собственно, и все.
-
Популярные в этом разделе:
- «Настройка сервера SSH (теория и практика)»,
- «Реализация отправки и приёма SMS с помощью Gnokii»,
- «Настройка сервера OpenLDAP».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1