Как работают спам-фильтры: от списков слов до нейросетей
Спам-фильтр (spam filter) решает, что сделать с письмом: принять во «Входящие», положить в спам или отклонить ещё на входе. Фильтры стоят у почтовых провайдеров, на корпоративных шлюзах и в самих почтовых программах, и письмо часто проходит через несколько сразу.
От списков слов к машинному обучению
Первые фильтры держались на списках запрещённых слов и чёрных списках IP. Спамеры обходили их быстро, меняя написание и арендуя новые сервера. В 2002 году Пол Грэм опубликовал эссе «A Plan for Spam» и предложил байесовский подход. Фильтр перестаёт искать конкретные слова и считает вероятность спама по совокупности признаков, которым научился на письмах самого пользователя.
Сейчас крупные провайдеры используют машинное обучение. Google писал в 2019 году, что его модели вместе с другими защитами не пускают во «Входящие» больше 99,9% спама, фишинга и вредоносных писем, а переход на TensorFlow добавил около 100 миллионов заблокированных писем в сутки. Среди того, что стало ловиться лучше, Google назвал письма из картинок, письма со скрытым содержимым и рассылки с новых доменов, которые прячут немного спама в обычном потоке.
В 2023 году Gmail сменил способ перевода текста в числа для своего классификатора. Новый векторизатор RETVec устойчив к подмене букв похожими символами, невидимым знакам и набивке ключевыми словами. По данным Google, он поднял долю пойманного спама на 38% и снизил ложные срабатывания на 19,4%.
Как устроен спам-фильтр
Современный фильтр это не одно правило, а цепочка проверок. Каждая даёт свой сигнал, и решение складывается из всех вместе.
Соединение и отправитель
Ещё до чтения письма сервер смотрит на IP отправителя: есть ли он в чёрных списках и какая у него история. Адрес из списка Spamhaus может получить отказ сразу, и до содержания дело не дойдёт. Здесь же работает грейлистинг, когда незнакомому отправителю отказывают временно и ждут повтора.
Аутентификация
Сервер проверяет SPF, DKIM и DMARC: разрешён ли IP для домена, цела ли подпись, совпадает ли домен в From с проверенным. Gmail требует SPF или DKIM от всех отправителей, а массовых без SPF, DKIM и DMARC с ноября 2025 года наказывает вплоть до отказов. Как это настроить, описано в пошаговой инструкции.
Репутация и содержание письма
Фильтр учитывает историю домена и IP, то есть жалобы, отказы, попадания в ловушки и скачки объёма (подробно в статье о репутации отправителя). Отдельно оценивается само письмо: тема, текст, HTML, ссылки и вложения. Об этом слое подробнее ниже.
Реакция получателей
Провайдер видит, что люди делают с письмами отправителя. Они открывают, отвечают, достают из спама или, наоборот, жалуются и удаляют не читая. Google советует держать долю жалоб ниже 0,1% и никогда не доходить до 0,3%. Кнопка «Не спам» тоже сигнал, так получатель показывает, что письмо ему нужно.
Контентная фильтрация: что проверяют в письме
Контентная фильтрация (content filtering) разбирает само сообщение и выставляет ему оценку, spam score. Одно подозрительное слово ничего не решает, срабатывает сочетание признаков. Подробнее о том, как считается оценка, в словарной статье «Контентная фильтрация email».
- Текст и тема. Навязчивые призывы, капслок, россыпь восклицательных знаков, тема, которая не совпадает с содержанием. Google отдельно просит не начинать тему с «Re:» и «Fwd:», если письмо не ответ и не пересылка.
- HTML. Скрытый текст опасен. Google прямо пишет, что письма, где содержимое спрятано через HTML и CSS, могут попасть в спам. Письмо из одной картинки фильтру почти нечего прочитать, а такие письма Gmail называет среди того, что ловит лучше.
- Ссылки. Домены из ссылок сверяют с доменными чёрными списками, например Spamhaus DBL. Google советует делать ссылки понятными, чтобы человек знал, куда попадёт. Сокращатели ссылок скрывают адрес, и фильтры им не доверяют.
- Заголовки. Согласованность From, Reply-To и Return-Path, один адрес в From, результаты SPF, DKIM и DMARC.
- Вложения. Gmail вообще не пропускает исполняемые файлы (.exe, .bat, .js и десятки других), документы с вредоносными макросами и запароленные архивы, внутри которых архив.
SpamAssassin и оценка в баллах
Открытые фильтры вроде SpamAssassin и Rspamd стоят у хостеров и на корпоративных серверах. SpamAssassin прогоняет письмо через набор правил с весами и складывает баллы. По умолчанию письмо считается спамом с 5 баллов, и в документации сказано, что это довольно агрессивный порог, а провайдерам лучше ставить 8 или 10. Сервисы проверки вроде mail-tester показывают, какие правила сработали на вашем письме.
Провайдеры, шлюзы и почтовые программы
- У почтовых провайдеров. Gmail, Outlook.com, Яндекс, Mail.ru используют собственные системы и оценку не раскрывают. У Mail.ru есть Постмастер, где видно, сколько писем из рассылки прочитали, сколько удалили не открывая и сколько отметили как спам. Для Gmail такие данные в Postmaster Tools.
- На корпоративных шлюзах. Proofpoint, Mimecast, Microsoft Defender for Office 365 стоят перед почтовым сервером компании. Администратор может запретить типы вложений или целые домены, и правила там бывают строже, чем у публичных почтовиков.
- В почтовых программах. Thunderbird и другие клиенты учатся на решениях конкретного пользователя. Если он переносит ваши письма в спам, клиент начнёт делать это сам.
У Gmail есть ещё и вкладки. Промоакции не спам, письмо там остаётся во «Входящих», но в отдельной категории. Туда обычно попадают рекламные рассылки. Если получатель перетащит письмо на другую вкладку, Gmail, по его собственной справке, со временем учтёт это при сортировке.
Как проходить спам-фильтры
Фильтры и спамеры учатся друг у друга, поэтому трюки для обхода устаревают быстрее, чем их успевают внедрить. Вам поможет то, что фильтры сами считают признаками честного отправителя.
- Настройте SPF, DKIM и DMARC и проверяйте их после каждого изменения DNS в проверке почтового домена.
- Чистите базу. Несуществующие адреса дают отказы, заброшенные превращаются в ловушки.
- Добавьте отписку в один клик по RFC 8058 и заметную ссылку в тексте. Человек, который не нашёл, как отписаться, жмёт «Спам».
- Пишите тем, кто читает. Если подписчик долго молчит, отправьте ему сначала реактивацию, а потом решайте, оставлять ли его в базе.
- Новый домен и IP прогревайте без резких скачков объёма.
- Перед крупной отправкой проверьте письмо на спам на своих ящиках в Gmail, Яндексе и Mail.ru.
Если письма уже уходят в спам, порядок действий описан в разделе почему письма попадают в спам.
Источники
- Paul Graham: A Plan for Spam (2002)
- Google, 2019: TensorFlow в фильтре Gmail
- Google Security Blog, 2023: RETVec
- Google: рекомендации для отправителей писем в Gmail
- Google: типы файлов, которые блокирует Gmail
- Google: категории и вкладки во входящих Gmail
- SpamAssassin: параметр required_score
- Постмастер Mail.ru
- RFC 8058: отписка в один клик
Отказы и ловушки фильтр запоминает надолго, поэтому мёртвые адреса лучше убрать до отправки. В uChecker за первые 100 проверенных адресов платить не нужно.
Марк Аврилов · Автор материала
Опубликовано Обновлено
