Logo    
Деловая газета CitCity.ru CITKIT.ru - все об Open Source Форумы Все публикации Учебный центр Курилка
CitForum    CITForum на CD    Подписка на новости портала Море(!) аналитической информации! :: CITFORUM.RU
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

23.03.2017

Google
WWW CITForum.ru
С Новым годом!

2006 г.

Взаимодействие MTA exim и clamAV

Антон Жаровцев, "Slackware Linux в Томске"

Данная статьюшечка кратенько описывает взаимодействие MTA exim-4.30 и clamAV-0.65. Домашние страницы пакетов программ: http://www.exim.org/ и http://www.clamav.net/. Ещё нам потребуется патч для exim, который расширяет и без того богатые возможности фильтрации этого MTA, патч берётся на http://duncanthrax.net/exiscan-acl/.

Кратко о программах

Exim - это MTA, который имеет широкие возможности фильтрации, он как раз и был написан с основным направлением на фильтрацию почты. Отличается от других МТА исчерпывающей документацией (книга на сотни страниц, точное число зависит от версии) и тем, что нет большого изобилия разного рода ХАУТУ (я сильно не искал, но ни разу мне не попадались такие). Это говорит о том, что exim является настоящим конструктором, надо только читать и понимать его документацию :-).

Патч нужен для более простой интеграции МТА с различными сканнерами вирусов и спама (наверное все популярные АВ сканнеры и даже более, а так же spamassassin, но это темы других статей). Главное, патч позволяет оттесить почту на более ранней стадии, чем родной фильтр МТА. Мы сможем проверять почту любыми фичами патча (АВ сканнер, spam detection) и выдать ответ до завершения команды DATA. К сожалению, полностью не брать заражённые письма патч не позволяет, видимо, нельзя рвать сессию во время команды DATA по RFC. Зато после DATA можно сказать код какой-нибудь ошибки :-), тогда предыдущий МТА или клиент сразу узнает, что данное письмо не будет доставлено, при этом наш МТА не будет посылать никакого уведомления о вирусе или о спаме. Круто, не правда ли?

ClamAV... как я уже говорил, с патчем exim имеет родную поддержку интерфейса к большинству АВ демонов, просто clamAV самый бесплатный из них :-). Кроме того, он регулярно обновляется. Если я не ошибаюсь, то clamAV стал ловить MyDoom раньше чем DrWeb. К сожалению, clamAV не умеет лечить заражённые файлы, но что вы хотели от бесплатного антивируса? Самый большой недостаток ИМХО - это то, что clamAV умеет RAR2.0 и не выше :-(, остальные архиваторы он умеет, но не все. За RAR просто обидно.

Установка

Если Вы решили ставить всё с нуля, то нам потребуются последние версии исходных кодов программ, которые можно найти на домашних сайтах. О том, как конфигурировать exim вообще, я рассказывать не буду :-), читайте его документацию.

Порядок сборки вобщем-то значения не имеет. Берём исходники exim, распаковываем, копируем в корень исходников патч и патчим:

patch -p1 < exiscan-acl-4.ХХ-ХХ.patch

Потом собираем exim как написано в его доке: Edit the file called src/EDITME and put the result in a new file called Local/Makefile. Там много комментариев, но если Вы что-то не знаете (пока), то оставьте как есть, потом в доке найдёте :-). Юзера и группу, под которыми обычно будет работать exim, ИМХО лучше выбрать mail и mail, т.к. они есть в большинстве систем, но можно и завести отдельно для exim'а...

Выходим в корень исходников и делаем make. После этого make install или checkinstall, кому что больше нравится :-) (checkinstall - это пакет программ, который надо запускать вместо make install чтобы инсталлировать программу и одновременно создать её RPM, pkg(.tgz) или deb чтобы потом проще было удалять). Если в Вашей системе можно поставить готовый пакадж от производителя дистрибутива (exim + exiscan), то наверное лучше так и сделать, просто не всегда есть такие пакаджи.

Дальше ставим или компилим clamAV. Можно выбрать другой префикс и т.д, но я предпочёл ограничится указанием местоположения конфига: ./configure --sysconfig-dir=/etc/clamav/ Запустите ./configure --help дабы узнать полный и точный список возможных опций :-). Потом как всегда make && make install или make && checkinstall...

Запускаем clamd. Оба-на, надо пойти и поправить конфиг его :-). Там много коментариев, по-моему, по умолчанию там почти всё правильно, надо лишь закоментировать слово Example вначале и указать TCP порт вместо юникосового сокета. TCP лучше тем, что при крахе питания, например, не остаётся файла сокета :-), clamd не запустится если видит созданный ранее юниксовый сокет. К тому же файловый дескриптор сокета может стереть кто угодно, а кокнуть TCP порт посложнее будет :-).

Если он запустился, то можно посмотреть его лог, местоположение которого Вы должны знать, Вы же полностью прочитали конфиг? Потом можно потестить, возьмите какой-нить вирус и натравите на него clamdscan. "Легко сказать" - возразите Вы :-), "где ж брать вирусы-то, когда все от них пытаются избавиться?" В исходниках clamav есть тестовый каталог test, вот и тренируйтесь на нём, там не вирусы, а просто засигнатуренные файлики, некоторые заархивированы различными архиваторами. Допустим у Вас пока всё получилось...

Теперь конфигурим exim чтобы он сам, т.е. без костылей, мог обращаться к демону АВ и просить его посканить временный файлик.

Для начала немножко теории. Пропатченный эксим имеет новую опцию в главной секции конфига: av_scanner. С помощью неё можно указать MTA любой сканнер АВ командной строки или (что гораздо более интересно) тип демона и порт (или домайн и сокет). Разумеется, только из списка демонов, которые поддерживает патч; благо, что их там много :-). Мы напишем ему про clamd:

av_scanner = clamd:127.0.0.1 3310

Это так по-умолчанию clamd запускается. Далее, мы собрались проверять тело письма, а для этого у exim'а есть специальный acl - acl_smtp_data, который в умолчальном конфиге не используется (читаем доку про этот acl если интересно :-)). А мы будем его использовать так:

# в главной секции укажем имя acl, а потом опишем его (см. ниже)
acl_smtp_data = acl_check_virus

# в секции описания acl
acl_check_virus:
        deny  message   = Message rejected: virus found. I don't need virus :-).
            hosts       = *
            malware     = *
        accept

Тут мы не пускаем сообщение, если оно содержит malware (злобное программное обеспечение!). Это очень простой пример. Рекомендуется так же распаковывать MIME содержимое, это делается добавлением demime = * перед malware = *. А вообще, советую посмотреть acl в дефалтном конфиге пропатченного exim-4.30, acl имеет имя acl_check_content: и по умолчанию не выполняется.

Проверить всё целиком можно так: послать с другого хоста тестовые файлики на хост с установленным exim+exiscan+clamd письмо, если Вы тут же получите отлуп, то всё замечательно, если письмо пройдёт, то надо читать логи МТА и clamd, думать головой и разбираться ... Я тестировал вирусом MyDoom, у меня срабатывал отлуп без demime. Наверное, clamd продвинулся? :-).

Будет полезным настроить демон обновления баз для clamd, точнее запускать программу freshclam в режиме демона при старет системы. Я не мудрствовал и сделал у себя так:

# кусочек моего rc.local, я юзаю Слакварь.
if [ -x /usr/local/bin/freshclam ]; then
    /usr/local/bin/freshclam --http-proxy=proxy.tomsk.net \
        --proxy-user=warm:passwd \
        -l /var/log/freshclam.log \
        -d \
        -c 4
    echo "Starting freshclam AV update ..."
fi

Это запускает freshclam, если он есть, и говорит ему использовать прокси, имя юзера и пароль, писать свои действия в указанный лог, демонизироваться и проверять новые базы 4 раза в сутки. Подробнее читайте в документации (man freshclam?).

В результате выше изложенных действий можно получить МТА, который не возьмёт почту, содержащую malware, имеющую неправильные MIME типы данных (например, 8-и битные символы в поле Subject не допустимы по RFC и должны кодироваться 7-и битными), так же прикрутить spamasassin. Разумеется, что это можно сделать с любым современным МТА, главная же фишка состоит в том, что сообщение об отлупе письма даётся так скоро как это только возможно, а это умеют делать далеко не все МТА. В основном встречаются варинаты, когда МТА принимает сообщение и говорит "ОК", потом начинает его рассматривать, проверять на вирусы, пропускать или посылать обратное сообщение и(или) сообщение администратору об ошибке и вирусах, занимать дисковое пространство под карантин :-).

Зачем это надо? Когда можно сначала всё проверить, а потом окончательно принять сообщение для дальнейшей передачи или просто дать отлуп и ничего не посылать.

Вот и всё, что я хотел рассказать. В следующий раз, может быть, расскажу о своих наработках "как связать MySQL, exim и cyrus-imapd"...

Размещение рекламы — тел. +7 495 4119920, ICQ 232284597

Подписка на новости IT-портала CITForum.ru
(библиотека, CITKIT.ru, CitCity)

Новые публикации:

24 декабря

CITKIT.ru:

  • Новогодние поздравления
  • Сергей Кузнецов. Цикл Операционные системы: Ностальгия по будущему:

  • Алексей Федорчук. OpenSolaris 2008.11 Release

  • Сергей Голубев:

  • Евгений Чайкин aka StraNNik (Блогометки):

    17 декабря

  • С.Д.Кузнецов. Базы данных. Вводный курс

    10 декабря

    CITKIT.ru:

  • OpenSolaris 2008.11 Release

  • Альтернативные ОС: две грустные истории (С.Кузнецов)
  • Nokia N810 — доведение до ума
  • CitCity:

  • Платформа 2009: заоблачные перспективы Microsoft

    4 декабря

  • Лекция С.Д.Кузнецова Понятие модели данных. Обзор разновидностей моделей данных

    CITKIT.ru:

  • OpenSolaris 2008.11 Release. Первые впечатления

  • Linux vs FreeBSD: продолжим "Священные войны"?

  • Nokia N810 as is

  • Индульгенция для FOSS

  • Друзья СПО'2008

    26 ноября

  • Нечеткое сравнение коллекций: семантический и алгоритмический аспекты

    CitCity:

    CITKIT.ru:

  • Глава из книги А.Федорчука
    Сага о FreeBSD:
  • 19 ноября

  • Проблемы экономики производства крупных программных продуктов

  • Язык модификации данных формата XML функциональными методами

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    Заметки к книге:

  • FreeBSD: монтирование сменных устройств и механизм HAL
  • Текстовый редактор ee

    12 ноября

  • Правило пяти минут двадцать лет спустя, и как флэш-память изменяет правила (Гоц Грейф, перевод: Сергей Кузнецов)

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:
  • OSS в России: взгляд правоведа (В.Житомирский)

  • Новая статья из цикла С.Голубева "Железный марш":

    29 октября

  • О некоторых задачах обратной инженерии

  • Веб-сервисы и Ruby

  • Тестирование web-приложений с помощью Ruby

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

  • PuppyRus Linux - беседа с разработчиком (С.Голубев)

  • Сергей Кузнецов. Заметка не про Linux

    22 октября

  • Обзор методов описания встраиваемой аппаратуры и построения инструментария кросс-разработки

    CITKIT.ru:

  • Сергей Кузнецов. Почему я равнодушен к Linux

  • Глава из книги А.Федорчука
    Сага о FreeBSD:
  • Что надо иметь
    3. Базовые познания

    CitCity:

  • Управление IT-инфраструктурой на основе продуктов Microsoft

    15 октября

  • Методы бикластеризации для анализа интернет-данных

    CitCity:

  • Разъемы на ноутбуках: что они дают и зачем их так много?
  • AMD Puma и Intel Centrino 2: кто лучше?

    CITKIT.ru:

  • Новый цикл статей С.Голубева
    Железный марш:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    8 октября

  • Автоматизация тестирования web-приложений, основанных на скриптовых языках
  • Опыт применения технологии Azov для тестирования библиотеки Qt3

    Обзоры журнала Computer:

  • SOA с гарантией качества
  • Пикоджоуль ватт бережет
  • ICT и всемирное развитие

    CitCity:

  • Пиррова победа корпорации Microsoft

    CITKIT.ru:

  • Главы из книги А.Федорчука
    Сага о FreeBSD:

    Статья из архива:

  • Я живу в FreeBSD (Вадим Колонцов)

    Новые Блогометки:

  • Перекройка шаблона Blogger или N шагов к настоящему
  • Blogger. Comment style
  • Screenie или глянцевый снимок экрана

    2 октября

    CITKIT.ru:

  • Сага о FreeBSD (А. Федорчук)

    Zenwalk: пакет недели

  • Банинг — интеллектуальное развлечение (С.Голубев)

    CitCity:

    25 сентября

  • Клермонтский отчет об исследованиях в области баз данных

    CITKIT.ru:

  • Пользователям просьба не беспокоиться... (В.Попов)

  • Снова про ZFS: диск хорошо, а два лучше
  • Командная оболочка tcsh (А.Федорчук)

    Zenwalk: пакет недели

    17 сентября

  • T2C: технология автоматизированной разработки тестов базовой функциональности программных интерфейсов
  • Технология Azov автоматизации массового создания тестов работоспособности

    CITKIT.ru:

  • FreeBSD: ZFS vs UFS, и обе-две — против всех (А.Федорчук)

    Zenwalk: пакет недели

  • Дачнет — практика без теории (С.Голубев)

    10 сентября

  • За чем следить и чем управлять при работе приложений с Oracle
  • Планировщик заданий в Oracle
    (В.Пржиялковский)

    CITKIT.ru:

  • Microsoft: ответный "боян" (С.Голубев)

  • Причуды симбиоза, или снова "сделай сам" (В.Попов)

  • Файловые системы современного Linux'а: последнее тестирование
  • Zsh. Введение и обзор возможностей
    (А.Федорчук)

    Описания пакетов Zenwalk: Zsh, Thunar, Thunar-bulk-rename, Xfce4-places-plugin, Xfce4-fsguard-plugin

    Блогометки:

  • Google Chrome
  • Лончер для ASUS Eee PC 701

    3 сентября

    CITKIT.ru:

  • Заметки о ядре (А.Федорчук):

    Добавлены описания пакетов Zenwalk: Galculator, Screenshot, Gnumeric, Pidgin

    В дискуссинном клубе:

  • И еще о Википедии и Google Knol

  • Лекция для начинающего линуксоида (С.Голубев)

    26 августа

  • Транзакционная память (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • Открыт новый проект Zenwalk: пакет недели

  • Статья Текстовые процессоры и их быстродействие: конец еще одной легенды?

    21 августа

    CITKIT.ru:

  • Почему школам следует использовать только свободные программы (Ричард Столлман)
  • Беседа Сергея Голубева с учителем В.В.Михайловым

  • Википедия или Гуглезнание? Приглашение к обсуждению (Алексей Федорчук)
  • Народная энциклопедия от Google (StraNNik)

  • Обзор Mandriva 2009.0 Beta 1 Thornicrofti
  • Новичок в Линукс: Оптимизируем Mandriva 2008.1

  • Книга Zenwalk. Приобщение к Linux:

    13 августа

    CitCity:

  • Мирный Atom на службе человеку. Обзор платы Intel D945GCLF с интегрированным процессором
  • Обзор процессоров Intel Atom 230 на ядре Diamondville

  • iPhone - год спустя. Скоро и в России?

    CITKIT.ru:

  • Интермедия 3.4. GRUB: установка и настройка (из книги Zenwalk. Приобщение к Linux)

    6 августа

  • СУБД с хранением данных по столбцами и по строкам: насколько они отличаются в действительности? (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • Интермедия 2.2. Что неплохо знать для начала (из книги Zenwalk. Приобщение к Linux)

  • И снова про шрифты в Иксах (А.Федорчук)

  • 20 самых быстрых и простых оконных менеджеров для Linux

  • Дело о трех миллиардах (С.Голубев)

    30 июля

  • OLTP в Зазеркалье (Пересказ: С. Кузнецов)

    CitCity:

  • Будущее BI в облаках?
  • Тиражные приложения и заказная разработка. Преимущества для заказчика
  • Дискуссия со сторонниками заказной разработки

    CITKIT.ru:

  • Новые главы книги Zenwalk. Приобщение к Linux:
  • Глава 8. Пакеты: средства установки, системы управления, системы построения
  • Глава 9. Zenwalk: репозитории, пакеты, методы установки

    23 июля

    CITKIT.ru:

  • Все против всех. 64 vs 32, Intel vs AMD, tmpfs vs ext3
  • Две головы от Intel

  • Zenwalk: обзор штатных приложений (глава из книги "Zenwalk. Приобщение к Linux")

  • Нормально, Григорий...

    16 июля

    Обзоры журнала Computer:

  • Перспективы и проблемы программной инженерии в XXI веке
  • Большие хлопоты с большими объемами данных
  • Перспективы наноэлектроники

    CITKIT.ru:

  • Интермедия о лицензиях (А.Федорчук. "Zenwalk. Приобщение к Linux")

  • Есть ли будущее у KDE?

  • Linux в школе: альтернативный вариант в задачах

  • Шифр (приключения агента Никодима)

    10 июля

    CITKIT.ru:

  • Новые разделы книги А. Федорчука Zenwalk. Приобщение к Linux:
  • Интермедия вступительная. Linux или GNU/Linux? Как вас теперь называть?
  • Глава 5. Среда Xfce
  • Глава 6. Xfce: приложения и плагины

  • ZUR (Zenwalk User Repository) FAQ

    2 июля

  • Персистентность данных в объектно-ориентированных приложениях (С. Кузнецов)

    CITKIT.ru:

  • Новые разделы книги А. Федорчука Zenwalk. Приобщение к Linux:
  • Интермедия 1.2. Дорога к Zenwalk'у. Период бури и натиска
  • Интермедия 3.3. Немного о Linux'е и "железе"
  • Глава 4. Настройка: инструментами и руками
  • Интермедия 4.1. Zenpanel и конфиги: поиски корреляции

  • Интервью с Жан-Филиппом Гийоменом, создателем дистрибутива Zenwalk

  • Linux в школе: первые итоги (С. Голубев)

    25 июня

    CITKIT.ru:

  • Zenwalk. Приобщение к Linux (А. Федорчук)

  • Логика и риторика (С.Голубев)

  • Технология Tru64 AdvFS

  • Ханс Райзер предлагает отвести полицейских к телу Нины

    18 июня

  • Проекты по управлению данными в Google (Пересказ: С. Кузнецов)

    CITKIT.ru:

  • ОС и поддержка "железа": мифы и реальность (А. Федорчук)

  • Linux в школе: другие дистрибутивы

  • Пинок (С. Голубев)

    4 июня

  • Ландшафт области управления данными: аналитический обзор (С. Кузнецов)

    CITKIT.ru:

  • Linux в школе: слово заинтересованным лицам

  • SlackBuild: пакеты своими руками

  • Linux от компании Novell. Установка и обзор openSUSE Linux

    Все публикации >>>




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

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