Razor spam detected

2021.06.03
Очередная ручная рассылка писем потенциальным клиентам была идентифицирована как спам при проверке через сервис mail-tester.com: RAZOR2_CF_RANGE_51_100 и RAZOR2_CHECK. В статье рассмотрим причины попадания в спам и пути решения. Расскажу на примере полученного опыта.

Неудачный тест: RAZOR2 сообщает о наличии спама

Связана ли яндекс.почта и Razor2 мне не известно, проблема недоставок не связанных со спамом очевидно не может иметь отношение к Razor2. Ниже изложена предыстория.

Сегодня пришел убер-менеджер и пожаловался что ручная рассылка писем выдает много недоставок, нужно проанализировать в чем проблема и решить ее.

Просмотрев список abuse-писем, не было ничего необычного: несуществующий/переполненный почтовый ящик приемник, все как обычно.

Однако, проверяя заголовки полученного письма в яндекс.почте было обнаружено:

X-Yandex-Spam: 4

4 дня назад, я уже проверял подобные письма через mail-tester.com, он давал оценку 10 из 10 то есть все хорошо, не спам.

Пришлось снова проверять письма на спам при помощи выше указанного сервиса, и наткнулся на проблемы: Razor обнаружил спам в письме

Текстом (на всякий случай):

-2.43		RAZOR2_CF_RANGE_51_100		Razor2 gives confidence level above 50%
cf: 100
-1.729		RAZOR2_CHECK		Listed in Razor2 (http://razor.sf.net/)

Проект Vipul's Razor

Интернеты исчерпывающей информации по этой проблеме к сожалению не дали (или я плохо искал). Однако, был найден сайт проекта Vipul's Razor.

Обзор репозитория показал что последний апдейт был в 2013 году (7 лет назад, на момент написания этой статьи), но результат работы продукта на лицо (наше письмо в спаме, и mail-tester сообщает о проблеме), а значит проект работающий на реальных почтовых серверах наших потенциальных клиентов. Посмотрев страницу загрузки стало ясно: проект Vipul's Razor входит в состав коммерческого продукта Cloudmark Authority и поддерживается этой компанией.

На сайте spamassassin дается более понятное описание проекта:

Vipul's Razor - это распределенная совместная сеть для обнаружения и фильтрации спама, основанная на отправке спама пользователями. Обнаружение выполняется с помощью сигнатур, которые эффективно обнаруживают изменяющийся спам-контент, а ввод данных пользователем подтверждается путем присвоения репутации.

Так же было найдено еще несколько русскоязычных статей по работе с open-source версией проекта (Artistic License 1.0), вот и вот.

Причины попадания в спам

Изучив документацию проекта Vipul's Razor стало ясно:

Письмо содержит "куски кода" (Listed in Razor2), которые ранее агенты Razor2 пометили как спам и теперь "Razor2 gives confidence level above 50%" - нет доверия содержимому этого письма (если очень коротко).

Здесь высказана мысль о том, что одним из вариантов попадания в немилость Razor2 мог быть факт попадания письма в спам-ловушки. А почистить спам-базу не так то просто: надо обратиться к каждому держателю агента Razor2 ... проще найти и удалить спамные куски.

Решение проблемы с RAZOR2

Начались эксперименты с выявлением спамных кусков: удаление вложений, изменение содержимого письма в разных вариациях с удалением возможных спамных мест (хотя письмо содержало всего-лишь пару коротких предложений).

В конечном итоге спамный кусок был выявлен ... банально ... кто-то "в подпись в письме вставил километровую ссылку на сайт" компании не пойми откуда. Причем судя по всему ссылка была скопирована из одного письма прямо из редактора с версткой, где ссылка была не прямая, а с редиректом из почтового сервиса со свяким хламом в get параметрах. Естественно попадая в ящик получателя ссылка была обернута в чекер почтового сервиса (где это есть), что в итоге приводило минимум к 2-м редиректам.

Изменение href атрибута на прямую ссылку не дали результата, видимо анкор уже является отдельным спамным куском. Даже удаление www (который там не нужен), не дал результата.

В итоге удалив ссылку, оставив только адрес сайта (не ссылка), удалось пройти спам-тест.

После удаление спамного кода из письма удалось пройти тест

Итог

Если следовать описанию проекта Vipul's Razor, нельзя однозначно сказать что спам был обнаружен из-за непрямой ссылки, так как идентификация спама основывается на оценке спама пользователями (если очень просто). Однако, само наличие такой ссылки плохой признак.

Решить проблемы RAZOR2_CF_RANGE_51_100 и RAZOR2_CHECK можно путем удаления спамных кусков из письма, а обнаружить эти куски можно только экспериментальным путем.

Винить кого-то в проблеме бесполезно, нужно просто сделать выводы и предпринять меры по предотвращению таких инцидентов. В итоге мы решили:

В телеграм канале DevOps от первого лица можно оставить комментарий или почитать интересные истории из практики DevOps