Сервер - статьи

       

Установка


Если Вы решили ставить всё с нуля, то нам потребуются последние версии исходных кодов программ, которые можно найти на домашних сайтах. О том, как конфигурировать 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"... document.write('');

Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий