Настройка антиспам фильтрации для почтового сервера Zimbra


В OpenSource версии почтового сервера Zimbra, автоматизированная спам-фильтрация это мягко говоря вещь специфичная и требующая некоторой настройки, поэтому в большинстве инсталляций с которыми мне приходилось сталкиваться, подсистема антиспам защиты была фактически не настроенная.

Сегодня я хотел бы пролить немного света на эту довольно темную тему и рассказать вам как все же настроить антиспам в системе групповой работы Zimbra.

Настройка антиспам-фильтрации в почтовом сервере Zimbra

Подсистема спам-фильтров в системе групповой работы Zimbra

В Zimbra имеется два системных пользователя SPAM и HAM:

  • Spam Training User - для обучения спам фильтров на почте которая должна быть помечена как спам
  • Non-spam (называется HAM) - обратная операция в том случае когда письмо было ошибочно отмечено как спам и надо подсказать системе фильтров, что это как раз и не спам

Получить сведения о этих аккаунтах можно при помощи команды:

$ zmprov -l gacf zimbraAmavisQuarantineAccount zimbraSpamIsSpamAccount zimbraSpamIsNotSpamAccount
zimbraAmavisQuarantineAccount: virus-quarantine.xxxxxx@mail.gita-dev.ru
zimbraSpamIsNotSpamAccount: ham._xxxxx@mail.gita-dev.ru
zimbraSpamIsSpamAccount: spam.xxxxxx@mail.gita-dev.ru

Для тренировки антиспам подсистемы вам необходимо собрать в ручную базу спам писем (я думаю, что с этим проблем не возникнет) и переслать их в качестве вложений (message/rfc822 attachments) этим аккаунтам. Следовательно, определенно нормальную корреспонденцию мы отправляем HAM, а весь мусорный ящик отправляем пользователю SPAM.

Подготовка базы спам корреспонденции для трени

Отправляем именно в качестве вложений и после того как вы отправили пакет спама пользователю SPAM, вы можете запустить тренировку антиспам-фильтра на основании отправленных писем при помощи команды zmtrainsa (но запускать ее надо естественно от имени пользователя zimbra):

$ zmtrainsa

В результатах вывода этой команды вы можете увидеть сколько токенов обучения было построено на основании отправленных писем:

...
Learned tokens from 16 message(s) (40 message(s) examined)
...

Если вы посмотрите crontab пользователя zimbra, то вы увидите, что команда zmtrainsa запускается дважды за ночь и первый раз она анализирует почту в аккаунтах SPAM и HAM, а второй запуск производит очистку этих аккаунтов.

$ crontab -l | grep zmtrainsa
0 22 * * * /opt/zimbra/bin/zmtrainsa >> /opt/zimbra/log/spamtrain.log 2>&1
45 23 * * * /opt/zimbra/bin/zmtrainsa --cleanup >> /opt/zimbra/log/spamtrain.log 2>&1

Но так как в большинстве случаев начинающие администраторы Zimbra не знают о этой небольшой особенности подсистемы спам-фильтрации, то как вы понимаете антиспам-фильтры естественно не работают. Я в свою очередь немного автоматизировал этот процесс и написал бота который ходит по пользовательским папкам на сервере и смотрит всю корреспонденцию находящуюся в папке SPAM или отмеченную как спам, после чего отправляет ее в автоматическом режиме для тренировки антиспам фильтров.

Управление списками RBL в почтовом сервере Zimbra

Помимо "интеллектуальной" подсистемы спам-фильтрации в почтовом сервере Zimbra имеются так же и стандартные для почтовых серверов методы антиспам фильтрации основанные на RBL-списках (Realtime Blackhole Lists). RBL это как раз те самые всеми любимые спам-листы в которые адреса серверов переодически попадают и их потом от туда требуется героически доставать.

По умолчанию Zimbra настроена максимально дружелюбно к спамерам и этот режим радушия и гостеприимства конечно необходимо немного подкорректировать, для чего переходим в графическую консоль администратора "Настройка -> Глобальные настройки -> Агент передачи сообщений" и ищем в самом низу два раздела "Проверки протокола" и "Проверки через DNS".

Настройка политик антиспам-проверок в Zimbra

Я лично считаю, что все типы проверок необходимо активировать, ведь если системный администратор некорректно настроил почтовый сервер, то ему об этом в ответе на письмо и сообщат и пусть настраивает. Чем больше серверов отвечают стандартам тем лучше, тем более, что все штатные интернет-чекеры так же проводят такие проверки и если вы не проверили ваш почтовый сервер на соответствие стандартам, то вы сам себе буратина злой.

По поводу "Актуальных черных списков" и RHSBL (Right-Hand Side Blacklist), то здесь уже как говориться на вкус и цвет, я например настроил только использование основных блэк-листов:

  • cbl.abuseat.org
  • bl.spamcop.net
  • dnsbl.sorbs.net
  • sbl.spamhaus.org

Небольшое сравнение блэк-листов вы можете найти в Википедии по адресу https://en.wikipedia.org/wiki/Comparison_of_DNS_blacklists. Как показывает практика, представленных выше методов вполне достаточно для эффективной больбы со спамом в почтовом сервере Zimbra.