Вы здесь

настройка spamassassin

Можно ли каким-то образом настроить spamassassin так, чтобы он анализировал содержимое "Тела" письма и если встречал заданный url (или может быть часть url-а), то присваивал бы определенное значение спамности (score в local.cf)?
А то одолели спамеры - по байесу их уже не отловишь - содержимое письма на 90% меняют, а урлы вставляют одни и те же на свои гадские сайты :)

Не грусти, товарищ! Всё хорошо, beautiful good!

winterheart написал:
http://wiki.apache.org/spamassassin/WritingRules, раздел URI rules

Азамат, спасибо, за тыкание в нужное место RTFM :) Это действительно то, что мне было нужно и кое-что еще полезное.
А вот такой вопрос: можно ли каким-то образом в правилах задать присвоение веса, если какого-либо хедера вообще в письме нет? Например, нет хедера X-Mailer - тогда присваиваем дополнительно спамности единичку.

Если не боитесь то сделать легко

header __X-Mailer X-Mailer =~ /./
meta LOCAL_No_Mailer (!__X-Mailer)
score LOCAL_No_Mailer 1.0

Как бы только лишнее не порезать.
А что, интересуетесь spamassassin?
Не хватает default?

Андрей, спасибо, действительно просто, я мог и сам додуматься :)
Бояться нечего, я буду использовать не так примитивно, как написал - с помощью META будут сложные правила.
На счет дефолтных настроек - действительно не хватает. У нас более 500 адресов, при чем многие из них чуть ли не 10 лет назад в инете засвечены - спама валит много и он очень разнообразен. Но благодаря spamassassin-у режется почти все, вот теперь затачиваю, чтобы последних прошмыгнувших дорезал.

Попробуйте еще Relay-Country прицепить.
еще процентов 20% отрежет.
Как заточите, готов обменяться опытом.
У меня адресов меньше, но спама почти не стало. Приходит 8-10 писем на 20 адресов.
Я пытаюсь правила на русском написать вот здесь
http://www.gentoo.ru/node/13632#comment-94568

Relay-Country нам не подходит - у нас легальные отправители могут быть где угодно :)
Вот что интересно. К примеру отлавливаю я каким-то шаблоном подозрительное выражение.
Но хочется при многократном его обнаружении увеличивать вес спамности.
Сейчас сколько бы раз попадающее под шаблон выражение в письме не встречалось - хоть один раз хоть десять вес будет присваиваться один раз. Можно ли задать правило на многократное попадание шаблона?

Весьма интересная технология mail-filter/postgrey. В моем случае фильтрует порядка 60% . Ошибок (поначалу) процента два-три (обходится белыми списками). Вкупе с блек листами весьма прилично. Контент фильтр - штука обоюдоострая.

postgrey - зло, если его натравливать на всех.
Задержка большая при получении почты с нового адреса.
Avari посоветовал ставить его только на unknown - http://www.gentoo.ru/node/9827#comment-94964
и я с ним полностью согласен.

Цитата:
Relay-Country нам не подходит - у нас легальные отправители могут быть где угодно :)

насчет где угодно у меня сомнения - KR TH TW CN вам могут подойти?

Пусть Вы хотите прнимать почту отовсюду. Неплохо было бы прогнать архив СПАМ и неСПАМ через geoip - тогда Вы увидите, откуда Вам пшут, а откуда - нет. И если какая-то страна 5 раз встречается в спаме против 1 в неспаме, то почему бы не добавить ей немного scores? Ну а если отношение 1/10? 0/10?

Цитата:
Вот что интересно. К примеру отлавливаю я каким-то шаблоном подозрительное выражение.
Но хочется при многократном его обнаружении увеличивать вес спамности.
Сейчас сколько бы раз попадающее под шаблон выражение в письме не встречалось - хоть один раз хоть десять вес будет присваиваться один раз. Можно ли задать правило на многократное попадание шаблона?

А насчет несколько раз я тоже думал.
Проще все же использовать плагин, про который я писал.
передавать ему 2 параметра - regexp и count.
Тогда для разного count можно сделать разный вес.
Я у себя так и сделал.
Правда с русским языком так и не смог подружить - руки не доходят.
Я правильно понял про шаблон - в тексте?

loadplugin     Mail::SpamAssassin::Plugin::RusEval

body LOCAL_TEST        eval:check_count_regexp("regexp",3)
score LOCAL_TEST 1

Вот это работает. За образец можете взять оттуда.

Есть еще такая идея насчет ссылок в почте. Сейчас Вы поставили regexp на URI и думаете, что победили. Пр этом Вы понимаете, что подстраиваетесь под спамеров, а не они под вас. Вот когда, скажем, рубишь helo по regexp или говоришь, что страна аргентина или корея мне не нужна - это активная защита. а regexp на URI - это на 1 неделю. Может на 2. Потом или regexp менять придется, или совсем его убирать. К слову сказать, однотипные письма обычно приходят с 1-2 хостов. Проще их заблеклистить навсегда, чем подстраиваться regexp.

Чтобы не отлавливать такие хосты и регэкспы, предлагаю по ссылкам такое решение.
Реализовать его несложно.
Берем ссылку и проверяем адрес хоста на RBL - abuse хостинг, zen - в общем выбрать. Если в списке - это спам.
Придется, конечно, проверять не все ссылки, только 1-ю и не в каждом письме - иначе сервер устанет. Можно даже проверить страницу на редирект - взять заголовок http.
Что Вы на это думаете? Я бы напсал если это идея стоящая. Какие минусы?

andribas написал:
насчет где угодно у меня сомнения - KR TH TW CN вам могут подойти?

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

andribas написал:
А насчет несколько раз я тоже думал.
Проще все же использовать плагин, про который я писал.
..
Я правильно понял про шаблон - в тексте?

Да, правильно, спасибо, попробую.

andribas написал:
Есть еще такая идея насчет ссылок в почте. Сейчас Вы поставили regexp на URI и думаете, что победили. Пр этом Вы понимаете, что подстраиваетесь под спамеров, а не они под вас. Вот когда, скажем, рубишь helo по regexp или говоришь, что страна аргентина или корея мне не нужна - это активная защита. а regexp на URI - это на 1 неделю. Может на 2. Потом или regexp менять придется, или совсем его убирать. К слову сказать, однотипные письма обычно приходят с 1-2 хостов. Проще их заблеклистить навсегда, чем подстраиваться regexp.

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

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

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

Приведу Вам примеры.
1. SPF - про это МОЖНО писать, т.к. спамер ВЫНУЖДЕН это учитывать.
2. greylist - сделал - и все, пусть они знают, если им выгодно отправлять почту повторно через 300 секунд, пусть отправляют, но зачастую это не так :).
3. Ну не люблю я слово "рассылка" в англо-русской кодировке. Писать про это не страшно - либо я буду получать это слово на русском и поймаю уже его :) (3-4 характерных слова), либо до меня их почта не дойдет.

Пусть дорабатывают свои снаряды, мне не страшно.
А вот regexp'ы на URI - как раз одни переживания - а вдруг кто-нибудь узнает :).

После
2-х RBL zen.spamhaus.org, psbl.surriel.com,
проверки helo_name, client_name на regexp, - динамические адреса
greylisting всех unknown клиентов
и обычных проверок на RFC
отключения "плохих" стран

SpamAssassin остается практически без работы
у меня срабатывания идут в основном за счет DCC, Pyzor, Razor, SPF - то есть внешних модулей.
и их очень мало. При чем нередко эти срабатывания ложные - вирусы, взломы и т.д. Одноклассники :)
То, что пролезает все-таки - это 0,5-1% от всей почты.
И если есть эффективный способ удалить этот спам, без ложных срабатываний, и таким методом, который не потребует постоянной корректировки, то я готов его применить.
Если я его обнаружу - то обязательно поделюсь и не буду скрывать чтобы кто-то вдруг не узнал :)

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

Это ОЧЕНЬ хороший показатель. А у Вас порог стоит по умолчанию - 5? В amavisd-new стоит 6.31 или у Вас выше?

Ну а насчет RBL по хостам это пример моей лени. Я вот поставил в cron

0       1       *       *       1       /usr/bin/sa-update --allowplugins --nogpg --channel updates.spamassassin.org

и правила обновляются. Если написать правило, которое надо будет менять - придется постоянно анализировать СПАМ, и самому работать кроном :)
А вот RBL - есть люди, которые его обновляют. Почему бы не отдать эту работу им :).
Некоторые вообще не хотят работать и отдают все на откуп zen.spamhaus.org.
По поводу пула адресов - видимо, мы про разное говорим.
Вам не попадаламсь реклама про абузо-устойчивый хостинг?
То бишь реклама для спамеров - хоститесь у нас, отправляйте спам со ссылками на сайт нашего хостинга, мы Вас не отключим.
Есть такие RBL, которые такие хосты abuse заносят в свой список. Это НЕ почтовые сервера. Вот по ним и предлагаю проверять.
Есть еще вот такая заметка - http://www.spamhaus.org/effective_filtering.html
раздел 2nd Stage - именно это я и предлагаю.
Что-то не понял только, как его включить в spamassassin.

andribas написал:
Приведу Вам примеры.
1. SPF - про это МОЖНО писать, т.к. спамер ВЫНУЖДЕН это учитывать.
2. greylist - сделал - и все, пусть они знают, если им выгодно отправлять почту повторно через 300 секунд, пусть отправляют, но зачастую это не так :).
3. Ну не люблю я слово "рассылка" в англо-русской кодировке. Писать про это не страшно - либо я буду получать это слово на русском и поймаю уже его :) (3-4 характерных слова), либо до меня их почта не дойдет.

Согласен, набору в смешанной кодировке можно присваивать половину требуемого уровня спамности. С грейлистами и SPF не все так однозначано, это уже обсуждалось не нами :) В этой связи очень полезный ресурс, который уже подсказали: http://www.spamassassin.tu2.ru/index.php Только в правилах там не нужно писать заглавные буквы в кириллице, а то он для них не генерирует regexp.

andribas написал:
проверки helo_name, client_name на regexp, - динамические адреса

Э... а можно поподробней, как именно их проверять?

andribas написал:
Это ОЧЕНЬ хороший показатель. А у Вас порог стоит по умолчанию - 5? В amavisd-new стоит 6.31 или у Вас выше?

Порог 10 и веса многие переписаны по-своему. Еще раз говорю - у нас ОЧЕНЬ важно не допустить ложных срабатываний - поэтому действуем осторожно и избирательно - согласен больше ручной работы.

andribas написал:
По поводу пула адресов - видимо, мы про разное говорим.
Вам не попадаламсь реклама про абузо-устойчивый хостинг?
То бишь реклама для спамеров - хоститесь у нас, отправляйте спам со ссылками на сайт нашего хостинга, мы Вас не отключим.
Есть такие RBL, которые такие хосты abuse заносят в свой список. Это НЕ почтовые сервера. Вот по ним и предлагаю проверять.
Есть еще вот такая заметка - http://www.spamhaus.org/effective_filtering.html
раздел 2nd Stage - именно это я и предлагаю.
Что-то не понял только, как его включить в spamassassin.

Вот это было бы очень полезно! Я действительно сначала не правильно понял.

dersu написал:
С грейлистами и SPF не все так однозначано, это уже обсуждалось не нами :) В этой связи очень полезный ресурс, который уже подсказали: http://www.spamassassin.tu2.ru/index.php Только в правилах там не нужно писать заглавные буквы в кириллице, а то он для них не генерирует regexp.

andribas написал:
проверки helo_name, client_name на regexp, - динамические адреса

Э... а можно поподробней, как именно их проверять?

andribas написал:
Есть еще вот такая заметка - http://www.spamhaus.org/effective_filtering.html
раздел 2nd Stage - именно это я и предлагаю.
Что-то не понял только, как его включить в spamassassin.

Вот это было бы очень полезно! Я действительно сначала не правильно понял.

SPF предлагается использовать в основном для отсекания "умных" спамеров, которые пишут письма от тебя к тебе, то есть подставляют в поле From адрес пользователя Вашего сервера. Проверка SPF с этим замечательно справляется.
greylist используется для тех клиентов, у которых имя сервера не проходит проверки обратного преобразования IP в имя клиента - наиболее вероятный спам, за исключением админов с кривыми руками или же падения обратной зоны. Но таких у меня 5-7, их можно в whitelist. Остальные отсекаются.

Такое предложение я видел только здесь, остальные действительно не подходят.

По поводу RBL - надо сделать

LoadPlugin Mail::SpamAssassin::Plugin::URIDNSBL

и тогда проверка включится, только у меня стоит skip_rbl = 1
поэтому я не проверял. Надо этим заняться. Если сделаете - напишите.

А насчет regexp helo_name - я могу Вам предлодить только для postfix. То есть делается это ДО spamassassin.
Если такой вариант Вам подходит - прочитайте внимательно ветку
http://www.gentoo.ru/node/9827#comment-94998
http://www.gentoo.ru/node/9827#comment-95444
там есть некоторые ответы.

После такой проверки отсекается ПОЛОВИНА почты до получения DATA - экономия трафика и загрузки spamassassin.

У метода http://www.spamassassin.tu2.ru/index.php есть недостатки - необходимо вести 3 кодировки KOI8-R, WIN1251, UTF-8.
лучше все-таки сделать normalize_charset = 1.
Да и на русском писать ИМХО лучше.
Надеюсь эту тему добьем.
Даешь русские правила и свой канал update!!

Вы же технарь, а не философ - давайте вместе разберемся :)

andribas написал:
По поводу RBL - надо сделать

LoadPlugin Mail::SpamAssassin::Plugin::URIDNSBL

и тогда проверка включится, только у меня стоит skip_rbl = 1
поэтому я не проверял. Надо этим заняться. Если сделаете - напишите.

Ага, спасибо за подсказку. Работает изумительно, все спам-ссылки в теле письма отлавливает. Весом управляем в local.cf

Изначально по смыслу нашего спора могу сказать. Что практика ловить спам по содержимому письма показала свою высокую эффективность. То, что раньше пробивалось спамерами через bayes-фильтр: их причуды с заменой кириллических букв на латиницу в словах, заменой цифр на буквы в номерах телефонов и прочее - все теперь под нашим чутким контролем. :) Потихоньку добавляя и дорабатывая правила я с вашей помощью не ухудшил показатели по ложным срабатываниям и повысил отсев спам-писем примерно в 10 раз.

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

Как и прежде пишу, что local.cf публиковать не хочу, т.к. там много такого, что поможет спамерам обойти эти правила, а гонку вооружений "снаряд-броня" мне вести не хочется. :)

Всем удачи!

dersu написал:
а гонку вооружений "снаряд-броня" мне вести не хочется. :)

Причём как показывает практика: броня давно и монотонно проигрывает. :)
Что, впрочем, не является поводом к полному отказу от неё.

:wq
--
Live free or die

Давайте не будем распылять внимание по разным веткам...
Создадим себе отдельную уютною веточку, повесим в корне ссылки на темы, где оно упоминалось. И поговорим... :)

andribas написал:
А вот regexp'ы на URI - как раз одни переживания - а вдруг кто-нибудь узнает :).

Кстати, тут товарищи подсказывают (указывают на существование сервисов типа URIBL Service Providers). Рекомендуют multi.surbl.org и black.uribl.com (честно скажу, сам пока не читал).
Будем пробовать? :)

:wq
--
Live free or die

Anarchist написал:
Давайте не будем распылять внимание по разным веткам...
Создадим себе отдельную уютною веточку, повесим в корне ссылки на темы, где оно упоминалось. И поговорим... :)

andribas написал:
А вот regexp'ы на URI - как раз одни переживания - а вдруг кто-нибудь узнает :).

Кстати, тут товарищи подсказывают (указывают на существование сервисов типа URIBL Service Providers). Рекомендуют multi.surbl.org и black.uribl.com (честно скажу, сам пока не читал).
Будем пробовать? :)

Пробовать URIBL обязательно будем.
Наконец разобрался как их включить в SpamAssassin:
в файле /etc/spamassassin/init.pre

loadplugin Mail::SpamAssassin::Plugin::URIDNSBL

надо убрать комментарий.
Плагин этот хорошо написан, запросы идут асинхронно, то есть делаются все запросы, а потом пока идут остальные тесты собираются ответы.
По умолчанию таймаут 15 секунд, который может быть отрезан до 7 (смотрите perldoc Mail::SpamAssassin::Conf)
rbl_timeout 15 3
Проверяются следующие списки:

#cat 25_uribl.cf | grep "^uri" | grep -v "skip"

uridnsbl        URIBL_SBL       sbl.spamhaus.org.       TXT
urirhssub       URIBL_SC_SURBL  multi.surbl.org.        A   2
urirhssub       URIBL_WS_SURBL  multi.surbl.org.        A   4
urirhssub       URIBL_PH_SURBL  multi.surbl.org.        A   8
urirhssub       URIBL_OB_SURBL  multi.surbl.org.        A   16
urirhssub       URIBL_AB_SURBL  multi.surbl.org.        A   32
urirhssub       URIBL_JP_SURBL  multi.surbl.org.        A   64
urirhssub       URIBL_BLACK     multi.uribl.com.        A   2
urirhssub       URIBL_GREY      multi.uribl.com.        A   4
urirhssub       URIBL_RED       multi.uribl.com.        A   8

и еще
bl.open-whois.org
rhsbl.ahbl.org
dob.sibl.support-intelligence.net

bl.open-whois.org тоже хорошо проверяет - открытые прокси, всякие нехорошие регистраторы и т.д.

SURBL позволяет сделать локальное зеркало, чтобы не гонять трафик http://www.surbl.org/datafeed/
С начала марта 2009 SURBL будет приниматься запросы только к multi.surbl.org, остальные работать не будут - http://wiki.apache.org/spamassassin/SURBL
Сразу напишу ограничения:
sbl.spamhaus.org - 300К
multi.uribl.com - 500К
multi.surbl.org - 250К
в сутки.
Чем эти ограничения отличны от RBL - проверяется только почта, которая уже прошла все проверки MTA. У меня приходит 500 писем в день, так что не страшно.

Вот хорошая ссылка на списки - http://spamlinks.net/filter-dnsbl-lists.htm
очень интересно.

Таким образом, Second Stage в борьбе со СПАМом можно считать включенной.
Теперь надо посмотреть, как сработает и задрать scores.
Кстати, этот плагин позволяет добавлять и свои списки RBL.

Теперь на очереди будет настройка Spamtrap - как подсказывают товарищи есть вариант с прокси-сервером для любого MTA и policy daemon для postfix.
Смотрю в сторону mail-filter/policyd

andribas написал:
Теперь на очереди будет настройка Spamtrap - как подсказывают товарищи есть вариант с прокси-сервером для любого MTA и policy daemon для postfix.
Смотрю в сторону mail-filter/policyd

Командир, ты не прав :)
Не уподобляйся сам знаешь кому ;)

Я бы настоятельно рекомендовал сначала составить собственное мнение на предмет области применимости фичи и проверить применимость данных условий к твоему частному случаю.

Например: есть злобный спаммер. Попыток отправления [например] на адрес yourdomain@yourdomain.zone в сутки - 20, общее число сессий на твой почтовый сервер в сутки - 100. ИМХО скорее имеет смысл.
Но при соотношении 10/10 целесообразность, как бы это выразиться, несколько менее очевидна.

ИМХО фича скорее всего имеет смысл в ситуации, когда у тебя несколько доменов, причём реальные почтовые адреса представлены не во всех.
Хотя, ещё необходимо учитывать параметр адаптивности спаммеров.

:wq
--
Live free or die

dersu написал:
Но благодаря spamassassin-у режется почти все, вот теперь затачиваю, чтобы последних прошмыгнувших дорезал.

А по false positives какая статистика?

:wq
--
Live free or die

По ложным срабатываниям точную статистику посчитать трудно. Обращаются с жалобами наши получатели, что им кто-то послал и не дошло в среднем раз в неделю (для конторы с 300 адресами-получателями). В основном из-за того, что smtp-сервера отправителей попадают в блэклисты. Уже на многие блэк-листы снизил вес спамности в local.cf из-за этого.