Версия для печати

clam_av_logo

Как известно для прикручивания антивируса ClamAV к CGP есть два открытых helper’а: clamav-cgp и cgpav.

Есть еще один платный от  "Niversoft", но его мы рассматривать не будем.

Как выяснилось, работают они не одинаково. При рассылке большого потока одинаковых сообщений, заметили, что письма уходят медленно — в среднем 1 в секунду. Анализ SMTP диалога отправки сообщений показал, что тормозит проверка антивирусом. При отключенном антивирусе трафик вырос до 30 писем в секунду.

Исследования показали, что сам антивирус не потребляет особо много ресурсов. Тогда возникла мысль про тормоза «прокладки» между CGP и ClamAV. В это время у нас работал cgpav, решили попробовать  clamav-cgp. И о чудо, с новым helper`ом трафик вырос до 15 писем в секунду. Спасибо Andy Igoshin’у за замечательный продукт!

У себя я выложил слегка модифицированную «под себя» версию:

  1. Добавлено отрезание CGP-ных заголовков перед отправкой письма на проверку к ClamAV (рекомендации Николая Варинова из рассылки mx.ru: http://mx.ru/Lists/CGatePro/Message/17475-P.txt).
  2. Немного изменена логика работа helper’а. В случае каких-то внутренних проблем он всегда пропускает сообщение. В логи пишется диагностика ошибки.
  3. Если ClamAV сообщает, что письмо инфицировано, то вместо молчаливого удаления сообщения, генерируется ответ с причиной: в сообщении <YYYYY> найден <XXXXX> вирус.

Комментарии к изменениям:

  1. Есть маленький накладной расход при отрезании: надо сначала найти место по которое отрезать. Мне кажется, что это сделано не совсем «красиво». Происходит еще одно открытее и чтение исходного письма для поиска места отрезания. Возможно, это можно делать прямо в момент передачи его в ClamAV. Но пока и такой вариант достаточно хорошо работает.Спасибо Николаю!
  2. Идея пропускать сообщения, в случае, когда антивирус не смог проверить сообщение, на самом деле, не самая удачная. Лучше оставить оригинальную логику: отвергать сообщения с временной ошибкой. Тогда к вам перестанут приходить сообщения и проще заметить, что что-то не так. В моём случае при проблемах с антивирусом почта будет приходить не проверенная, и вы можете не узнать, что антивирус сломался. Потому стоит иметь это в виду и применять для мониторинга работы антивируса какие-то дополнительные меры.
  3. Генерация «ответа с причиной недоставки» вместо «удаления» также имеет ограничения. Не стоит это применять, если вы используете асинхронную постановку в очередь в CGP. Такое поведение антивируса приведёт к потоку сообщений в адрес отправителя. А если адрес отправителя подделан, то вы «завалите» чьи-то невинные ящики ошибками доставки. В синхронном режиме постановки в очередь это вполне работает. Это поможет отправляющей стороне получить в своих логах запись, что письмо не доставлено и причину недоставки. «Молчаливое удаление» на нашей стороне никак не покажет отправителю о проблеме.

Вот сколько сейчас занимает проверка на вирус одного сообщения:

17:26:48.884 4 EXTFILTER(CLAMAV) out(030): 67327 FILE Queue/74176095.msg\n
17:26:48.886 4 EXTFILTER(CLAMAV) inp(008): 67327 OK

Оставить комментарий


Антиспам-картинка