Использование ClamAV, SpamAssassin, MIMEDefang для борьбы с нежелательной почтой в Sendmail
Материал из Xgu.ru
ОС и ПО: FreeBSD, Sendmail, MIMEDefang, SpamAssassin, ClamAV, Mailgraph
В основу положена статья: Mail Server Filtering на O'Reilly
Перевод, редактирование: Игорь Чубин
- Короткий URL: sendmail/filtering
Эта статья является переводом статьи [1] с небольшими дополнениями, исправлениями и пояснениями. В частности, добавлена информация об обучении SpamAssassin и другие сведения об этой программе, а также описана процедура настройки mailgraph для визуализации величины потока писем, спама и вирусов.
[править] Введение
Большая часть того, что приходит на почтовый сервер совсем не желательно: это вирусы, спам и исполняемый мусор. Даже если у вас на десктопе стоит не Windows, всё равно, появление нового вируса вызывает быстрое заполнение почтового ящика. Если вы администратор, то вы знаете, что на ваших пользователей нельзя положиться в том, что они не будут кликать на прикрепленных exe-файлах. Добавьте к этому огромный поток спама и прочего хлама, и вы почувствуете, что дальше так продолжаться не может. Защита от спама и вирусов может сэкономить много вашего времени и сил.
В статье описывается процедура настройки для FreeBSD, но с небольшими поправками, она может быть применена к любой Unix/Linux-системе, в которой используется Sendmail.
Здесь показано, как с помощью свободно распространяемых программ организовать защиту от вирусов, а также ограничение нежелательного контента в электронных письмах и спама.
Используются следующие программы:
- Sendmail - почтовый сервер;
- MIMEDefang - программа управления контентом;
- ClamAV - антивирус;
- SpamAssassin - программа по борьбе со спамом и нежелательной корреспонденцией.
Cвязка этих программ, настроенная соответствующим образом, позволяет практически полностью избавиться от вирусов/спама, без всякого вреда для легальных писем.
В Sendmail есть специальный интерфейс - milter API (milter = mail filter), предназначенный для подключения сторонних программ. Это означает, что можно легко добавить дополнительную функциональность к Sendmail'у, которой у него раньше не было.
В данном случае через milter к Sendmail'у будет подключен MIMEDefang, а программы SpamAssassin и ClamAV будут в свою очередь подключаться к MIMEDefang'у.
Для того чтобы связка заработала, нужно проинсталлировать все компоненты, настроить их соответствующим образом и запустить в правильном порядке.
[править] Инсталляция ClamAV
Установите ClamAV из каталога /usr/ports/security/clamav с помощью команды make install. Пока что не вызывайте make clean! В каталоге сборки work/ есть примеры вирусов, на которых позже можно будет проверить, что программа работает правильно.
Из порта будет установлены:
- главный сканер вирусов,clamd;
- утилита командной строки clamscan;
- предварительная база сигнатур вирусов;
- документация;
- вспомогательные программы.
В нормальном режиме работы clamd должен работать постоянно, а другие программы, которые желают проверить файл на наличие вирусов, будут связываться с ним и передавать ему соответствующие файлы.
Запустите clamd из командной строки. Вообще-то его нужно конфигурировать, но в этот раз запуск выполняется только с целью проверки. Находясь в каталоге порта запустите проверку текущего каталога на наличие вирусов.
# clamscan -r -l testoutput.txt
Ключ -r заставляет clamscan выполнять рекурсивную проверку каталога. А ключ -l указывает на то, что результат сканирования нужно записать в файл testoutput.txt.
В результате выполнения команды clamscan проверит все файлы в текущем каталоге на вирусы и выведет сведения о каждом из них. В лог-файле testoutput.txt будет сжатый отчёт, в котором будут присутствовать только список инфицированных файлов и статистическая информация о проверке. Для версии ClamAV 0.65, должно быть найдено 5 инфицированных файлов.
Теперь нужно сконфигурировать ClamAV для совместной работы с MIMEDefang. Его главный конфигурационный файл /usr/local/etc/clamd.conf. Многие возможности и функции программы являются конфигурируемыми, многие можно по желанию отключить. Дополнительную информацию об опциях можно получить в man-странице файла clamd.conf.
Как минимум, нужно изменить пользователя, от имени которого будет работать ClamAV. Его нужно установить равным mailnull, это пользователь от имени которого работают Sendmail и MIMEDefang.
#User clamav User mailnull
После того как вы изменили эти настройки, нужно также изменить права доступа на каталоги, в которые ClamAV выполняет запись.
# chown -R mailnull:mailnull /var/run/clamav/ # chown -R mailnull:mailnull /var/log/clamav/
После того как заработал сканер, можно заняться обновлением баз. Вирусные базы поддерживаются добровольцами со всего мира. Когда появляется новый популярный вирус, его сигнатуры и описание добавляются в базы в течение нескольких часов. На момент написания оригинальной статьи (апрель 2004) в базе содержалось 10,131 вирусов, а на момент написания перевода (октябрь 2006) уже 71,517.
Для начала нужно запустить freshclam от имени root'а, чтобы проверить, что программа может связаться с одним из зеркал серверов описания вирусов и скачать с него базу. Убедитесь, что программа прежде чем завершиться проверяет свежесть файлов main.cvd и daily.cvd.
Когда уже известно, что обновление успешно выполняется, включите демон freshclam для выполнения периодических обновлений. Единственный нюанс связан с правами, с которыми работает freshclam. Демон freshclam работает с правами clamav, а ClamAV - с правами mailnull, поэтому freshclam не сможет писать файлы в каталог журналов ClamAV. Проще всего изменить права, с которыми будет работать freshclam или положить его журналы в другое место.
В /etc/rc.conf нужно добавить строки
clamav_clamd_enable="YES" clamav_freshclam_enable="YES" clamav_freshclam_flags="-u mailnull --checks=1 --daemon-notify=/usr/local/etc/clamd.conf"
или
clamav_clamd_enable="YES" clamav_freshclam_enable="YES" clamav_freshclam_flags="--checks=1 --datadir=/usr/local/share/clamav [без переноса] --daemon-notify=/usr/local/etc/clamd.conf --log=/var/log/clamav/freshclam.log"
в зависимости от того какой вариант вы выберите. В первом случае freshlam работает с правами mailnull, а во втором он кидает логи в другое место.
После следующей перезагрузки система запустит сканер вирусов и программу обновления базы сигнатур ClamAV. Если будут проблемы с запуском freshclam, попробуйте создать журнал и сделать его принадлежащим clamav.
# touch /var/log/clamav/freshclam.log # chown clamav:clamav /var/log/clamav/freshclam.log
[править] SpamAssassin
SpamAssassin это одна из самых известных программ по борьбе со спамом. Это Perl-скрипт, который анализирует письмо, сравнивает его с рядом шаблонов, и в зависимости от результатов анализа присваивает каждому письму определённое число, спам-рейтинг. Например, ключевые слова, такие как "Viagra", или фразы, такие как "Make money fast" увеличивают рейтинг письма. Рейтинг также увеличивается из-за отсутствия адреса получателя в заголовке или неизвестного имени для IP-адреса отправителя. Почтовый клиент, потом, может удалять письма в зависимости от набранного спам-рейтинга.
В действительности, методы, которые SpamAssassin использует для обнаружения спама значительно шире:
- Проверка заголовков письма на правильность и соответствие стандартам Интернета
- Проверка заголовков и тела письма на наличие определённых фраз и строк, часто встречающихся в спам-письмах. Проверка может выполняться на нескольких языках.
- Заголовок и тело письма могут проверяться по онлайн-базам, содержащим контрольные суммы спам-сообщений
- IP-адрес отправителя письма может проверяться по онлайн-спискам с адресами известных спаммеров или подозрительных почтовых серверов
- Определённые адреса, хосты или домены могут быть занесены в чёрный или белый список. Белый список может быть создан автоматически, основываясь на истории отправленных сообщений
[править] Инсталляция SpamAssassin
Установите SpamAssassin из порта /usr/ports/mail/p5-Mail-SpamAssassin.
Поскольку SpamAssassin будет работать как часть MIMEDefang,
конфигурировать его сам по себе не стоит.
Его конфигурация входит в состав MIMEDefang.
Сейчас можно переходить к конфигурированию MIMEDefang.
[править] Инсталляция MIMEDefang
MIMEDefang может менять письма множеством различных способов; с его помощью можно очень гибко организовать регулировку прав по использованию почтовой системы. В данном случае, главная причина использования MIMEDefang это обрубать лишние атачменты и скоординировать действия ClamAV и SpamAssassin.
Порт MIMEDefang находится в /usr/ports/mail/mimedefang. Также как и SpamAssassin он написан на Perl. Также как и ClamAV он работает в режиме демона. Это позволяет избежать большой нагрузки на систему при старте Perl-скрипта при получении каждого почтового сообщения. При инсталляции инсталляционный скрипт MIMEDefang определяет, что в системе присутствуют ClamAV и SpamAssassin и выполняет сборку соответствующим образом.
Конфигурационный файл MIMEDefang, /usr/local/etc/mimedefang/mimedefang-filter, содержит фрагменты Perl-кода, который интегрируется в код главного демона MIMEDefang. Если вы не очень хорошо разбираетесь в Perl, не переживайте; просто проверяйте что вы добавили новые строчки именно в том виде, в каком они показаны ниже (вообще, автор статьи рекомендует и переводчик присоединяется, потратить немного времени на изучение Perl, даже если вы не программист; неизвестно, кому он ещё полезней - программистам или администраторам Unix).
Нужно установить несколько переменных в mimedefang, такие как $AdminAddress и $AdminName. Если отдельный человек будет заниматься администрированием MIMEDefang, укажите его имя и адрес, в противном случае, можете указать обычный адрес почтового администратора. (Кавычки указывать обязательно. Двойные или одинарные имеет значение, поэтому не нужно их менять.)
$AdminAddress = 'postmaster@blackhelicopters.org'; $AdminName = "Mail Administrator";
MIMEDefang время от времени отправляет сообщения с информацией о выполненных действиях. Укажите адрес, на который должны приходить письма, в переменной $DaemonAddress.
$DaemonAddress = 'mimedefang@blackhelicopters.org';
Остальные настройки в этом файле опциональны. Просмотрите, какие настройки вообще можно делать, возможно, какие-то из них покажутся вам полезными. Там же есть примеры, как настроить блокировку сообщений с слишком большим количеством частей MIME (MIME parts). По умолчанию включены функции антиспама и антивируса и постановки письма на карантин.
Можно довериться MIMEDefang и просто отбрасывать письма, зараженные с точки зрения MIMEDefang вирусами. Если вы не хотите ставить письма с вирусами на карантин, просто закомментируйте в файле mimedefang-filter эти строки:
# but quarantine the part for examination later. Comment # the next line out if you don't want to bother. action_quarantine($entity, "A known virus was discovered and deleted. \ Virus-scanner messages follow:\n$VirusScannerMessages\n\n");
Если закомментировать эти строки, MIMEDefang заставит Sendmail отбрасывать входящие письма с вирусами сразу же.
Переменная $bad_exts содержит список расширений файлов, которые MIMEDefang будет блокировать. Можете расширить или, наоборот, сократить этот список, если нужно. Для того чтобы запретить, например, пересылку файлов с расширением .mp3, нужно просто добавить в список это расширение и перезапустить MIMEDefang.
Для того чтобы MIMEDefang стартовал во время загрузки системы, в каталоге /usr/local/etc/rc.d найдите файл mimedefang.sh-dist и переименуйте его в mimedefang.sh. Если там уже есть такой файл, значит это действие выполнять не нужно - MIMEDefang уже будет стартовать.
Нужно чтобы после завершения загрузки системы работали MIMEDefang и clamd; SpamAssassin вызывает MIMEDefang, так что выполнять его запуск при загрузке не нужно.
[править] Проверка правильности инсталляции MIMEDefang
На первом этапе сборки MIMEDefang выполняется скрипт ./configure, который осуществляет поиск проинсталлированных в системе ClamAV и SpamAssassin. При условии, что они проинсталлированы, скрипт обнаруживает их и дальнейшую сборку выполняет с учётом необходимости поддержки этих программ.
Если вы не уверены, что при сборке MIMEDefang увидел ClamAV и SpamAssassin, вы можете убедиться в этом следующим образом: воспользуйтесь ключом -features программы. Вы получите полный список возможностей MIMEDefang с указанием на соответствующие модули. Отфильтровав этот список по интересующим нас словам, можно убедиться что MIMEDefang интегрирован с ClamAV/SpamAssassin или нет:
# mimedefang.pl -features | egrep -i '(clam|spamass)' SpamAssassin : yes Virus:CLAMAV : yes (/usr/local/bin/clamscan) Virus:CLAMD : yes (/usr/local/sbin/clamd) Mail::SpamAssassin : Version 3.001003
Если в результате поиска обнаружилось, что параметры имеют значения ~no~ или вообще отсутствуют, MIMEDefang не увидел соответствующую программу. Возможно, это связано с тем, что при он устанавливался до того как в системе были инсталлированы ClamAV и SpamAssassin. Нужно выполнить сборку повторно.
[править] Точное имя сокета для связи MIMEDefang - ClamAV
MIMEDefang и ClamAV используют файловый сокет (доменное гнездо UNIX) для обмена информацией между собой. Несовпадение имён сокетов в настройках одной и другой программы может привести к тому, что проверка писем на наличие вирусов выполняться не будет.
В статье [2], которая была положена в основу начальной версии этой страницы указывается имя сокета /var/spool/MIMEDefang/clamd.sock. В последующих версиях MIMEDefang имя сокета изменилось, и сейчас оно такое: /var/run/clamav/clamd.
Например, если у вас в скрипте MIMEDefang /usr/local/bin/mimedefang.pl указан сокет$ClamdSock = "/var/run/clamav/clamd";тогда Вам надо соответствующим образом изменить имя сокета в конфигурационном файле ClamAV /usr/local/etc/clamd.conf на
LocalSocket /var/run/clamav/clamd
Имя этого сокета нужно указать в конфигурационном файле ClamAV, и такой же сокет должен использоваться в MIMEDefang. Если сокет или в одном, или в другом месте указан неверно (т.е. если имена не совпадают), в системном журнале будет появляться сообщение об ошибке. Оно будет появляться каждый раз, когда MIMEDefang захочет воспользоваться помощью ClamAV для проверки файла.
Nov 4 15:14:14 fbsd1 mimedefang.pl[78707]: kA4DED6b078772: Could not connect to clamd daemon at /var/run/clamav/clamd Nov 4 15:14:14 fbsd1 mimedefang.pl[78707]: Problem running virus scanner: code=999, category=cannot-execute, action=tempfail
Имя сокета, указанное в сообщении, естественно, может отличаться.
Проще всего изменить конфигурацию ClamAV и заставить слушать его на нужном MIMEDefang'у сокете. Как это сделать, было рассказано выше. Если же по какой-то причине, сделать это невозможно, найти файл в MIMEDefang, где указано имя сокета, можно следующим образом (метод подходит только для FreeBSD, для других систем вместо pkg_info нужно использовать соответствующую программу просмотра пакета):
# pkg_info -Lx defang | grep / | while read file > do > grep /var/run/clamav/clamd $file /dev/null > done /usr/local/bin/mimedefang.pl:$ClamdSock = "/var/run/clamav/clamd";
[править] Настройка SpamAssassin для использования с MIMEDefang
MIMEDefang вызывает SpamAssassin с конфигурационным файлом /usr/local/etc/mimedefang/sa-mimedefang.cf. Если вы хотите делать какие-то изменения в конфигурации SpamAssassin'а, меняйте этот файл. Редактирование других файлов ни к чему не приведёт, поскольку SpamAssassin их даже не будет читать. Ниже рассматриваются самые-самые базовые вопросы по конфигурированию SpamAssassin'а, вообще же конфигурация может быть намного более гибкой.
Отрегулируйте чувствительность фильтра с помощью переменной required_hits. По умолчанию её значение равно 5. Когда в результате анализа, SpamAssassin ставит спам-оценку письму выше чем 5, он маркирует письмо соответствующим образом, и у клиента есть возможность отфильтровать письмо и поступить с ним по собственному усмотрению.
Другая важная вещь это белый список (whitelist), в ней можно указывать адреса, письма с которых никогда нельзя воспринимать как спам. Например, сестра автора англоязычной статьи любит частенько отправлять письма перегруженные разметкой HTML, картинка и прочей дрянью, ну прям как заправский спамер. Если указать её адрес в строке whitelist_from, SpamAssassin никогда не будет считать её письма спамом. Даже в том случае, если она отфорвардит самый отъявленный спам порнографического содержания с вопросом "Что это?". Аналогичным образом blacklist_from позволяет блокировать всю почту с определённых адресов.
[править] Упрощение фильтрации на клиенте
MIMEDefang не позволяет SpamAssassin'у менять письмо! Вместо этого SpamAssassin сообщает spam-рейтинг письма MIMEDefang'у, и изменения делает уже он. В FAQ на MIMEDefang есть несколько хороших советов касающихся того, как настроить вывод информации в желаемом формате.
По умолчанию, MIMEDefang добавляет одну строку заголовка, которая содержит спам-рейтинг письма, вычисленный SpamAssassin'ом, и последовательность звездочек, соответствующую величине рейтинга, как в показанном ниже примере.
X-Spam-Score: 21.207 (*********************)
Для многих почтовых клиентов фильтрация по такому заголовку оказывается непростым делом: они не могут сравнивать численный рейтинг. С помощью небольшого изменения в MIMEDefang вы можете сильно облегчить жизнь таким пользователям.
В файле /usr/local/etc/mimedefang/mimedefang-filter будет такая строка;
action_change_header("X-Spam-Score", "$hits ($score) $names");
Если поменять местами переменные $score и $hits, пользователи смогут организовать фильтрацию по количеству звездочек.
action_change_header("X-Spam-Score", "$score ($hits) $names");
Теперь заголовок в письме будет выглядеть так:
X-Spam-Score: ************* (13.002)
Теперь можно написать правило, которое будет находить определенное количество звездочек за X-Spam-Score: и фильтровать сообщения по этому признаку. Теперь пользователи сами, самостоятельно, могут регулировать величину барьера для спама. А на сервере можно ужесточить правила проверки, ведь письмо все равно дойдет до пользователя, и он будет уже сам решать, какие письма считать спамом, а какие нет. Если пользователь слишком сильно зажмет спам, и потеряет из-за этого какое-то важное письмо, виноват будет он сам.
Для придания заголовку письма со спамом привычного вида типа ***SPAM*** надо либо заменить строкуaction_change_header("X-Spam-Score", "$hits ($score) $names");на строку
action_change_header('Subject', "***SPAM*** $Subject");либо добавить после или до строки
action_change_header("X-Spam-Score", "$hits ($score) $names");и вуаля - получаем заголовок
***SPAM*** Providing quality meds since 1996 (реальный заголовок пришедшего спама) == Обучение SpamAssassin == Если у вас есть файлы с отъявленным спамом, и файлы с гарантированно хорошими письмами, вы можете провести обучение SpamAssassin и рассказать ему, что такое хорошо и что такое плохо. Пусть, например: * '''Mail/spam''' - файл со спамом; * '''Mail/goodmail''' и '''/var/spool/mail/$LOGNAME''' - файлы с хорошими письмами (неспам, ham); <pre> $ ls Mail spam goodmail
О том, как обучать SpamAssassin можно подглядеть в статье http://www.3nity.ru/viewtopic.htm?t=1459, автором которой является setar
Вот выдержка из статьиТеперь как учить - в комплекте есть программа sa-learn ей нужно скормить каталог с письмами ham и spam сами письма нужно иметь в немодифицированном виде (без forward`а и прочих почтовых пересылок перенаправлений) я их получал прямым экспортом из программы TheBat в формат .MSG для удобства завёл специальные папочки в которых скидывал примеры писем, а в конце дня делал экспорт на сервер. Для процесса обучения не требуется восстанавливать оригинальный заголовок письма вырезая пометку ****SPAM**** и оценочное содержимое заголовка, система их просто игнорирует. Для автоматизации процесса обучения я написал http://www.3nity.ru/files/antispam/learn маленький скриптик который забирает файлы сообщений с файлового сервера по ftp и скармливает их обучалке. Обучение до включения в работу системы Баеса у меня заняло 4 дня.
Обучение выполняется следующим способом:
$ sa-learn --mbox --spam Mail/spam $ sa-learn --mbox --ham Mail/goodmail $ sa-learn --mbox --ham /var/spool/mail/$LOGNAME
Просмотр результатов обучения:
$ sa-learn --dump data | sort -n 0.000 0 110 1072880922 discussion 0.000 0 112 1071162080 HMBOX-Line:2002 0.000 0 112 1072907632 modify 0.000 0 113 1072915324 H*u:Windows 0.000 0 115 1072900545 Sender ... 1.000 310 0 1071162080 N:HEADER_NBITS 1.000 316 0 1072026198 8-bit 1.000 323 0 1071162080 HEADER_8BITS 1.000 328 0 1072026198 N:N-bit 1.000 394 0 1072910571 Forged
[править] Интеграция с Sendmail
Теперь, когда у вас есть рабочая инсталляция MIMEDefang/SpamAssassin/ClamAV, их как-то нужно подключить к Sendmail. В современном Sednmail'е есть Makefile, который упрощает создание конфигурационного файла. В каталоге должен быть .mc файл с названием хоста. Если такого нет, скопируйте файл freebsd.mc в файл, который называется имя.вашего.хоста.mc. После этого в файле /etc/make.conf укажите имя этого файла в переменной SENDMAIL_MC.
SENDMAIL_MC=/etc/mail/bewilderbeast.mc
Когда будете пересобирать систему, эта переменная укажет make использовать ваш .mc файл вместо стандартного. Иначе после каждого make installworld пришлось бы изменять конфигурацию Sendmail заново. Правда, теперь после каждого апргрейда системы не забудьте сравнить новый freebsd.mc с ваши .mc, для того чтобы не пропустить каких-то важных изменений в конфигурации Sendmail.
В ваш новый .mc-файл добавьте следующие строки:
MAIL_FILTER(`mimedefang', `S=local:/var/spool/MIMEDefang/mimedefang.sock, [без переноса] F=T, T=C:15m;S:4m;R:4m;E:10m')dnl define(`confINPUT_MAIL_FILTERS', `mimedefang')dnl
Находясь в каталоге /etc/mail нужно запустить команду make all, которая перестроит файл sendmail.cf. После этого нужно перезапустить Sendmail с новым конфигурационным файлом.
[править] Запуск MIMEDefang
На моей машине 6.3-RELEASE FreeBSD возникла проблема с запуском установленного MIMEDefang 2.64 с помощью скрипта автозагрузки /usr/local/etc/rc.d/mimedefang.sh
Опытным путем была найдена возможность запустить MIMEDefang из консоли/usr/local/bin/mimedefang-multiplexor -U mailnull /usr/local/bin/mimedefang -p /var/spool/MIMEDefang/mimedefang.sock -m /var/spool/MIMEDefang/mimedefang-multiplexor.sock -U mailnullДля автоматического запуска при старте сервера надо добавить эти строки в файл /etc/rc.local и изменить права на запуск у скрипта /usr/local/etc/rc.d/mimedefang.sh
# chmod -x /usr/local/etc/rc.d/mimedefang.sh
[править] Проблема интеграции ClamAV и Sendmail
- Спасибо Алексею Медведеву (БХФЗ)
Ниже описывается проблема, которая может возникнуть при интеграции почтовика Sendmail и антивируса ClamAV в FreeBSD. В приведённом примере Mimedefang не используется, но похожая проблема может возникнуть и при использовании Mimedefang.
Имена сокетов для связи Sendmail и ClamAV, указанные в соответствующих конфигурационных файлах, одинаковы:
sendmail.cf: INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clmilter, T=S:4m;R:4m') clamd.conf: LocalSocket /var/run/clamav/clmilter
Sendmail перезапускается нормально:
%# /etc/rc.d/sendmail restart Stopping sendmail. Starting sendmail.
А clamav-milter не запускается
%# /usr/local/etc/rc.d/clamav-milter start Waiting for clamd socket.. 60.. 50.. 40.. 30.. 20.. 10.. There is no clamd socket (/var/run/clamav/clamd)!
при этом через некоторое время падает sendmail, в /var/log/mailog :
Cannot allocate memory Jul 9 13:22:57 mail sm-mta[1580]: l69AMv1o001580: SYSERR(root): out of memory: Cannot allocate memory Jul 9 13:23:08 mail sm-mta[1581]: l69AN8um001581: SYSERR(root): out of memory: Cannot allocate memory Jul 9 13:23:39 mail sm-mta[1586]: l69ANdPM001586: SYSERR(root): out of memory: Cannot allocate memory
Нашел на форуме opennet.ru такое сообщение:
После нескольких дней войны - нашёл таки причину. Скорее всего у тебя в sysctl.conf стоит kern.ipc.somaxconn=32768 при таком значениии перестают нормально работать unix-sockets и в результате ты наблюдаешь Milter (clmilter): error connecting to filter: Connection refused by /var/run/clamav/clmilter.sock Я уменьшил это значение до kern.ipc.somaxconn=16384
Все так и сделал, запустил:
%# clamav-milter -o local:/var/run/clamav/clmilter.sock
и все заработало.
[править] Проверка
Самый простой способ проверить работоспособность настроенной связки, это отправить себе письмо заражённое вирусом.
Воспользуемся примером вируса, который распространяется в составе дистрибутива ClamAV. В дистрибутиве исходного кода ClamAV (если инсталляция выполнялась из портов, то он будет находиться в каталоге work/ порта clamav) есть каталог test/, содержащий примеры вирусов. Они использовались при проверке ClamAV выше.
# cd /usr/ports/security/clamav/work/clamav-* # ls test/ README clam.cab clam.exe.bz2 clam.zip clam-error.rar clam.exe clam.rar mbox
Перешлите себе файл clam.zip как прикреплённый файл. Вирус должен быть обнаружен MIMEDefang: письмо заблокировано, а в системном журнале должна появиться строка с сообщением об обнаруженном вирусе.
# grep -r 'Discarding because' /var/log/* /var/log/maillog:Nov 4 15:20:16 fbsd1 mimedefang.pl[78707]: Discarding because of virus ClamAV-Test-File
Строка содержит слова Discarding because, поэтому поиск выполнялся по ним. Сообщение об обнаруженном вирусе было найдено в файле /var/log/maillog. Обнаруженный вирус был классифицирован как ClamAV-Test-File.
Проверить, работает ли SpamAssassin можно, отправив письмо с отъявленным спамом на один из защищаемых адресов. Если такое письмо отсутствует, его можно написать вручную, правда, если не очень стараться, то спамоподобия может не хватить. В этом случае в заголовках прошедшего проверку письма не появится ни строчки о спаме.
Чтобы увидеть такие строки, нужно занизить критический уровень спам-рейтинга, так чтобы срабатывание выполнялось даже на самых безобидных письмах. Измените значение required_hits в файле /usr/local/etc/mimedefang/sa-mimedefang.cf до 1 и перезапустите MIMEDefang.
# /usr/local/etc/rc.d/mimedefang.sh restart Shutting down mimedefang: [ OK ] Shutting down mimedefang-multiplexor: [ OK ] Waiting for daemons to exit. Starting mimedefang-multiplexor: [ OK ] Starting mimedefang: [ OK ]
Не забудьте после проверки вернуть спам-порог обратно и перезагрузить MIMEDefang!
Отправьте с другой машины письмо, содержащее слово viagra в теле.
$ echo viagra | mutt -s 'Spam Test' devi@fbsd1.xgu.ru
Письмо должно быть классифицировано как спам. Вот как выглядит полученное письмо:
Date: Sun, 5 Nov 2006 12:06:01 +0200 To: devi@fbsd1.xgu.ru Subject: Spam Test User-Agent: Mutt/1.5.6+20040907i From: devi@kievnet.kiev.ua X-Spam-Score: 2.44 (**) DRUGS_ERECTILE,RCVD_BY_IP X-Scanned-By: MIMEDefang 2.57 on 217.27.159.219 [-- Вложение #1 --] [-- Тип: text/plain, кодировка: 7bit, размер: 0,1K --] viagra [-- Вложение #2: SpamAssassinReport.txt --] [-- Тип: text/plain, кодировка: 7bit, размер: 0,6K --] Spam detection software, running on the system "fbsd1.xgu.ru", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see The administrator of that system for details. Content preview: viagra [...] Content analysis details: (2.4 points, 0.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.3 RCVD_BY_IP Received by mail server with no name 2.2 DRUGS_ERECTILE Refers to an erectile drug
[править] Заключение
Если сделать tail -f /var/log/maillog, можно увидеть, как MIMEDefang обрабатывает каждое сообщение. Вирусы отбрасываются сразу же, спам маркируется и передается пользователю. Даже маленькие почтовые серверы могут получить сотни вирусов и тысячи спам-писем в день. Теперь такие письма обнаруживаются. И вы можете не так сильно беспокоиться о том, какой мусор путешествует по Интернет.
[править] Дополнительная информация
Дополнительные сведения о совместном использовании Sendmail, ClamAV, SpamAssassin и MIMEDefang могут быть найдены здесь:
- http://sial.org/howto/mimedefang/clamav/
- http://www.sun.com/bigadmin/features/articles/spam_virus.html
Другие сведения о борьбе со спамом:
[править] Материалы по настройке почтовых систем на Xgu.ru
- Sendmail
- Борьба со спамом в Sendmail
- Использование ClamAV, SpamAssassin, MIMEDefang для борьбы с нежелательной почтой в Sendmail
- Переход с POP3 на IMAP4
- Копирование исходящей почты с помощью Sendmail
- Отправка e-mail из скриптов
- Cyrus IMAP Server