среда, 23 декабря 2015 г.

Спам. Уменьшаем количество подручными средствами


В одном из офисов у нас свой почтовый сервер. Спама, конечно, сыплется немеряно, особенно на самые старые и "засвеченные" адреса.
Как мы уменьшали количество спама без затрат – расскажу в этой статье.
В качестве сервера у нас Kerio Connect версии 8. В нём есть собственные механизмы защиты от спама: списки, проверки и известный сторонний продукт Spamassassin – обучаемый фильтр.

Встроенная система даже "из коробки" отсеивает довольно много спама, но всё-таки недостаточно – по утрам во "Входящих" бывает до ста рекламных непрошеных писем. Это, конечно, очень неудобно.
Не хочу читать много воды! Скажи, что делать-то!

Раньше спам отлично отбивала "Спамооборона 1024" от Яндекса. К сожалению, эту систему Яндекс больше не предоставляет, предлагая вместо этого размещать почту на своих серверах.

Итак, выходов вроде два: покупать локальный или удалённый спам-фильтр (требует перенастройки сервера, стоит денег, надёжность под вопросом) или переносить всю почту уже защищённые площадки вроде того же Яндекса (куча всяких нюансов и вообще не хочется).

Что ж, применим наш бесценный дар – человеческий мозг! Как оказалось, проблема решается без существенного вмешательства в работающую систему.

Просто идём в самые заваленные спамом ящики пользователей. И, не брезгуя, изучаем спам, который проходит через фильтры во "входящие". Нескольких десятков писем будет вполне достаточно. Смотреть надо "исходный текст" письма – это там, где X-Envelope-To, MIME и прочие служебные данные.

По результатам "расследования" действия разделились на две большие группы:
1. добавление глобальных правил фильтрации;
2. добавление локальных правил в ящиках пользователей.


1. Глобальные правила
У нашего спама выявилось несколько характерных особенностей. Вообще, для таких вещей и нужна самообучающаяся система типа Spamassassin. На практике, конечно, ни фига она не обучилась. Будем обучать руками :)

- национальные домены.
В этом офисе нет и не было переписки с доменами .de или .ua . А спама оттуда сыплется куча. Смело накидываем пару очков спама за эти домены в глобальных правилах;

- структура письма.
Спамеры очень любят html-тэги, например, <h1> . А мы и наши контрагенты никогда ими не пользуемся. Плюс пару спам-очков за наиболее часто встречающиеся тэги;

- общие и "засвеченные" ящики. К общим ящикам типа info или самым старым (которые уже во всех базах есть) можно смело накинуть по одному очку спама. На общую картину это обычно не влияет, зато помогает обучению спам-фильтра.

2. Локальные правила

Глобальные правила не всегда позволяют реализовать нужный функционал, поэтому используем локальные правила.

- письмо не нам. В большинстве спам-писем в поле "To:" отсутствует наш домен. Создаём локальное правило: "ЕСЛИ в поле "To:" нет наш_домен ТО переместить в папку "Спам" ".
Это решение не всегда на 100% верное. Настоящий адресат указывается не в "To:", а в "X-Envelope-To:". Пример не-спам сообщения без нас в "To:" – CC (скрытая копия) для нас. На практике, однако, СС используют только внутри своего домена или вообще о такой функции не знают. У нас пока ложных срабатываний из-за этого не было. Зато по такому правилу очень эффективно и автоматически обучается Spamassassin.

- о спаме не уведомлять. У Керио есть стандартное правило: "помещать спам в папку "Спам" ". К сожалению, письма при этом остаются "непрочитанными". Где редактируется глобальное правило, я пока не нашёл. Когда найду – добавлю в статью. Но можно отредактировать локальные правила – в Kerio Connect они лежат в папке пользователя, в файле filter.sif. Добавляем:

#!1 __WebmailJunk__
if allof (
spamtest
{
setreadflag;
fileinto "Junk E-mail";
stop;
}


Либо можно удалить stop; , а потом создать отдельное локальное правило.
Так можно убить сразу двух зайцев. Во-первых, не будет мозолить глаза непрочитанный спам (глупость же). Во-вторых, так быстрее разобраться с ложными срабатываниями по предыдущему правилу: общий спам будет прочитанным, а по нашему правилу для "To:" останется непрочитанным.


Краткое "итого":


- добавить в глобальные фильтр национальные домены, если вы с ними не переписываетесь.
Например, *.cn .

- добавить в глобальные фильтры html-тэги.
Например, <h1> или <table>. Спамеры пользуются ими гораздо чаще, чем обычные пользователи.

- локальная фильтрация писем, в которых нет нашего адреса.
Создаём правило "ЕСЛИ в полях "To:" , "Copy:", "Cc:" НЕТ наш_домен ТО переместить в папку "Спам" ". Может вызвать ложные срабатывания, но маловероятно.

Проделав это, мы получили по 1-2 спам-писем в день во входящих вместо сотен. Чего и вам желаю! :)

P.S. Не уставайте повторять пользователям:
не надо подписываться корпоративной почтой на рассылки, регистрировать её вконтактике и прочее. Не надо. НЕ НАДО.
Может, и научатся :)


Комментариев нет:

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