настройка spamassassin

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

http://wiki.apache.org/spamas

http://wiki.apache.org/spamassassin/WritingRules, раздел URI rules

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

Отсутствие header

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

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

и еще маленький вопрос - повторяющиеся слова

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

Весьма интересная технология

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

postgrey - зло, если его

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

Затрудняюсь с ответом

Затрудняюсь с ответом сразу.
Пока приведу статистику сервера за прошлую неделю с пон. до пон.

Grand Totals
------------
messages

   6932   received
 251460   rejected (97%)
 258392   total


    Data command rejected: Improper use of SMTP command pipelining (total: 2)
    5.3.4 Message size exceeds fixed limit (total: 2)
    Client host rejected: Greylisted for 300 seconds (total: 42)
    Client host rejected: rDNS client SPAM (total: 4322)
    Helo command rejected: Host not found (total: 2985)
    Helo command rejected: Invalid name (total: 3532)
    Helo command rejected: need fully-qualified hostname (total: 89870)
    Helo command rejected: rDNS helo SPAM (total: 125517)
    Recipient address rejected: Improper use of SMTP command pipelining (total: 1)
    Recipient address rejected: User unknown in virtual mailbox table (total: 7427)
    Relay access denied (total: 5328)
    Sender address rejected: Domain not found (total: 134)
    blocked using bl.spamcop.net (total: 70)
    blocked using psbl.surriel.com (total: 43)
    blocked using zen.spamhaus.org (total: 11092)
    blocked using Country SPAM (total: 504)
    blocked using karmasphere.email-sender.dnsbl.karmasphere.com (total: 338)
    blocked using b.barracudacentral.org (total: 251)

и настройки postfix:

smtpd_recipient_restrictions =
 reject_unauth_pipelining
 permit_mynetworks
 permit_sasl_authenticated
 reject_unauth_destination
 reject_invalid_helo_hostname
 reject_non_fqdn_helo_hostname
 check_helo_access hash:/etc/postfix/helo_access
 check_helo_access pcre:/etc/postfix/helo.pcre
 check_client_access pcre:/etc/postfix/client.pcre
 check_helo_access hash:/etc/postfix/client_access
 reject_non_fqdn_sender
 reject_unknown_sender_domain
 reject_non_fqdn_recipient
 reject_unknown_recipient_domain
 reject_unlisted_recipient
 reject_unknown_helo_hostname
 reject_rbl_client zen.spamhaus.org
 reject_rbl_client psbl.surriel.com
 reject_rbl_client bl.spamcop.net
 check_spam
 check_client_access pcre:/etc/postfix/client_greylist.pcre

Тут нужно подумать, сопоставить статистику и расставить все по местам, как в случае с RBL :)
А также найти наиболее подходящее место для ловушки.
Предварительно я думаю, что ее можно ставить после локальных проверок (без обращения в сеть) поскольку, что проверить
regexp, что записать в mysql по-моему одинаково, только mysql расти начнет.
Еще нужна статистика попыток отправления на адрес, как Вы говорите.
Можно сделать более гибкий вариант - вначале соединения (в точке подключения ловушки) увеличиваем счетчик подключений для IP (подсети). Если счетчк стал большим - выкидываем.
Ставим проверку reject_unlisted_recipient в самый конец, как говорит Avari.
А после этой проверки уменьшаем счетчик на единицу.
Таким образом, у всех кто не дошел до этого момента, счетчик будет расти. Кто прошел, счетчик будет нулевой.
У этого метода есть плюс - не прошел ЛЮБУЮ проверку - больше не пройдешь.
И минус - попал твой клиент в zen - потом неделю не вылезет из бана.
Естественно, такую базу надо чистить раз в неделю или в месяц.
Но думаю, если идею отшлифовать, можно ее использовать.
Например, увеличивать счетчик на единицу, а уменьшать на 2. И большие минусы не чистить - это whitelist.
Такой вариант не требует почтового ящика ловушки.
Что Вы на это скажете?

В таблицу заносим

create table blacklist
triplet
count
timestamp
debug_info - client_name,from etc.

Cron:

раз в день
delete from blacklist where count=1;
раз в неделю
delete from blacklist where count between 0 and 10;
раз в месяц

delete from blacklist where now()-timestamp>30days;
delete from blacklist where count between -10 and 0;

Я вот подумал, для virtual hosting как у меня
reject_unauth_destination - 1 обращение к mysql и ничего, живет.
так что ставим ловушку сразу после permit.

Добавлено.

Проверил на статистике:

#cat mail.log-20090223 | grep reject | awk '{print($10)}' | sort | uniq -c | sort -r -n | awk '{print($1)}' | uniq -c

      1 527
      1 471
      1 467
      1 448
      1 432
      2 431
      1 429
      1 427
      1 424
      1 421
...........
    344 15
    103 14
    106 13
    266 12
     86 11
    500 10
   2132 9
    281 8
    274 7
   1291 6
   1445 5
   1019 4
   4193 3
   2322 2
  10038 1

Первое число - количество хостов, второе - количество отказов за неделю для каждого из этих хостов.

Таким образом, всего хостов, которым отказано = 27412
Хостов, которым отказов меньше 10 = 22995
То есть, в среднем в базе 4417 хостов + 300, от которых я все время получаю + 22995/7=3000 (в среднем в день не успел удалить)
Всего не более 8000.
Общее количество отказов = 251520
Для хостов, которые я постоянно буду удалять (потому что количество отказов меньше 10) общее количество отказов = 69662 или 27,7%
То есть 75% отказов будет происходить минуя все остальные проверки.
По идее, это должно работать быстрее, в 4 раза меньше нагрузка на все сетевые проверки в том числе.

Кстати, число 10 тоже не случайно. 251520/27412 = 9,2 - среднее колчество отказов на 1 хост.

Вот такой анализ

Вот такой анализ получился:

smtpd_recipient_restrictions =
 reject_unauth_pipelining                               #1
 permit_mynetworks
 permit_sasl_authenticated
 check_count
 reject_unauth_destination                              #5328
 reject_invalid_helo_hostname                           #3532
 reject_non_fqdn_helo_hostname                          #89870
 check_helo_access pcre:/etc/postfix/helo.pcre          #125517
 check_helo_access hash:/etc/postfix/client_access      #пропускаем своих
 reject_unknown_helo_hostname                           #2985
 check_client_access pcre:/etc/postfix/client.pcre      #4322
 reject_rbl_client zen.spamhaus.org                     #11092
 check_spam                                             #504+338+251=1093 (2 RBL + Country)
 reject_rbl_client bl.spamcop.net                       #70
 reject_rbl_client psbl.surriel.com                     #43
 reject_non_fqdn_sender                                 #0
 reject_unknown_sender_domain                           #134
 reject_unlisted_recipient                              #7427
 set_count
 check_client_access pcre:/etc/postfix/client_greylist.pcre #42

check_count - установка счетчика. Если больше 10 - отказ.
set_count - счетчик уменьшаем на 2.

 check_helo_access hash:/etc/postfix/helo_access
 reject_non_fqdn_recipient
 reject_unknown_recipient_domain

А эти не сработали ни разу.

reject_unauth_pipelining пусть будет на всякий случай.
Ну а эти

 reject_unknown_sender_domain                           #134
 reject_unlisted_recipient                              #7427

думаю сильно поредеют после 5 RBL.

Grand Totals
------------
messages

   6932   received
 251460   rejected (97%)
 258392   total

Внутренняя почта за неделю составила 5284 сообщения. Эти сообщения не проходили никаких проверок

 permit_mynetworks
 permit_sasl_authenticated

стоит в самом начале.
Таким образом, из внешнего мира было получено 1648 сообщений за неделю.
1648/(1648+251460) = 0,65%
То есть отфильтровалось 99,35% спама.
Из полученных 66 отловил SpamAssassin.
66/1648 = 4,0%
И примерно 70 (10 в день) просочилось, то есть еще 4%.
Вот такая статистика.
Конечно, если эту цифру размазать на всю почту (включая внутреннюю) получится 1%.
Сейчас у меня стоит в SA -2.5 для внутренней почты.
В связи с этим возникает вопрос.
Как отключить amavisd-new для внутренней почты?
Советуют что-то такое:

permit_sasl_authenticated,
check_sender_access regexp:/etc/postfix/amavisd.regexp

amavisd.regexp:
/^/ FILTER smtp-amavis:[127.0.0.1]:10024

у меня стоит

content_filter = smtp-amavis:[127.0.0.1]:10024

Нашел.
http://www200.pair.com/mecham/spam/bypassing.html
Очень подробно написано как сделать BYPASS.

SASL отключается так

SASL отключается так:

main.cf:
content_filter = smtp-amavis:[127.0.0.1]:10026

smtpd_recipient_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 check_client_access regexp:/etc/postfix/amavisd.regexp

amavisd.regexp:
/^/ FILTER smtp-amavis:[127.0.0.1]:10024

master.cf: (на всякий случай? - мне не помогло)
submission inet n       -       n       -       -       smtpd
  -o smtpd_etrn_restrictions=reject
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

/etc/amavisd.conf:

# change this from the original setting
$inet_socket_port = [10024, 10026];

# add these
$interface_policy{'10026'} = 'SASLBYPASS';

$policy_bank{'SASLBYPASS'} = {  # mail from submission and smtps ports
   bypass_spam_checks_maps   => [1],  # don't spam-check this mail
   bypass_banned_checks_maps => [1],  # don't banned-check this mail
   bypass_header_checks_maps => [1],  # don't header-check this mail  
};

То есть, авторизованные пользователи проверку SpamAssassin пропускают.
Правда в лог стало сыпаться

Feb 26 15:21:45 mail postfix/smtpd[32073]: NOQUEUE: filter: RCPT from c204-86.icpnet.pl[85.221.204.86]: <c204-86.icpnet.pl[85.221.204.86]>: Client host triggers FILTER smtp-amavis:[127.0.0.1]:10024; from=<info@feedme.co.uk> to=<andrey@domain.ru> proto=ESMTP helo=<ama_pc.icpnet.pl>

на каждого клиента.

Также пропускают проверку my_networks. Так что эта проблема решена.

И еще.
Засуну-ка я
check_client_access regexp:/etc/postfix/amavisd.regexp
в самый конец проверок. А то лог сильно большой становится.
У меня permit есть только в одном месте -
check_helo_access hash:/etc/postfix/client_access
Надеюсь, они не станут мне спам присылать, а вирусы он проверит.

Теперь для чистоты

Теперь для чистоты эксперимента
Байес я почистил полностью, толку от него все равно было мало.
и настроил SIEVE для dovecot.

recipient_bcc_maps = hash:/etc/postfix/recipient_bcc

Раньше сюда валилась вся входящая почта.
Теперь написал скрипт:

if header :contains "X-Spam-Flag" "NO" {
  if address :contains ["Return-Path"] ["email1",
                                        "email2",
                                        "email3"] {
    discard;
  } else {
  keep;
  }
} else {
  discard;
}

который выкидывает всю локальную почту (Нет "X-Spam-Flag").
Теперь буду заносить постоянных отправителей email[1-2-3...]
чтобы не мешались.
А то получать 1000 писем в день и искать там СПАМ мне надоело.
Завтра посмотрю, что туда накопится. Может папку сделаю для вероятного СПАМ (scores>5).

Кстати...

andribas написал(а):
А то получать 1000 писем в день и искать там СПАМ мне надоело.

На таком объёме правильно настроенный и хорошо обученный Байес Thunderbird'а при стремящейся к нулю вероятности ложного срабатывания отфильтрует 940-980 писем (в предположении того, что полезных писем за указанный интервал - ~2-4).

:wq
--
Live free or die

А если наоборот?

Anarchist написал(а):
andribas написал(а):
А то получать 1000 писем в день и искать там СПАМ мне надоело.

На таком объёме правильно настроенный и хорошо обученный Байес Thunderbird'а при стремящейся к нулю вероятности ложного срабатывания отфильтрует 940-980 писем (в предположении того, что полезных писем за указанный интервал - ~2-4).

Хех..
Если Вы внимательно читали - после фильтрации методами, предоставленными postfix режется 97% входящих сообщений.
Из тех 3%, что приходят пользователям, в моем частном случае 70% - внутренняя почта, которую я не хочу резать, поскольку САМ лично раздавал от нее пароли. Соответственно, проерки никакие эта почта не проходит.
Оставшаяся почта, которая приходит извне, составляет 0,6 процента от всего.
4% от этого остатка я режу с помощью content-filter, то есть spamassassin.
и еще 4% от этого остатка по моим личным наблюдениям является спамом.
Если посчитать этот не отрезанный спам ко всем входящим сообщениям - это будет 0,03%.
Если считать процент к фактически полученным пользователями сообщениями - 1%.
То есть из 1000 сообщений мне нужно найти 10, которые СПАМ.
Ситуация обратная к описанной Вами.
Так что пусть

Цитата:
правильно настроенный и хорошо обученный Байес Thunderbird'а

курит в сторонке.

Не отрезанный спам к входящим сообщениям извне - 4%.
После того, как я еще исключу из своего рассмотрения постоянно мне пишущих адресатов, процент вырастет в несколько раз.
Согласитесь, удобнее искать 10-20 из 100, чем 1.

Но тут мы выходим несколько

Но тут мы выходим несколько за рамки настройки собственно почтовой системы.

Про инфраструктуру же правильнее сочинять на wiki (можно попробовать организовать уголок здесь).
Честно обещаю на следующей неделе постараться наваять там статью про SSL.

:wq
--
Live free or die

Про SSL я бы тоже почитал

Anarchist написал(а):
Но тут мы выходим несколько за рамки настройки собственно почтовой системы.

Про инфраструктуру же правильнее сочинять на wiki (можно попробовать организовать уголок здесь).
Честно обещаю на следующей неделе постараться наваять там статью про SSL.

Про SSL я бы тоже почитал.
Мне вот кажется несколько неудобным организовывать уголок на форуме. Древовидная форма как-то коряво отображает - перемешивает ответы даже в этой теме (посмотрите сообщение ниже - и угадайте к чему оно относится :). Потом я не топик-стартер в этой теме, чтобы вносить изменения вверху. И не знаю способ, как склеить темы. А еще я допускал опечатки несколько раз. Так вот, их нельзя исправить, если кто-то ответил на пост. Если же удается исправить не сразу - ответ перемешивается приклеивается не к месту.
Иногда даже хочется решить вопрос в отдельной теме, а потом результат записать на чистую сюда.
вики действительно было бы удобнее.
А как туда писать?

Там даже есть тема http://ru.gentoo-wiki.com/wiki/Spamassassin
Как туда написать?

.

andribas74 написал(а):
Anarchist написал(а):
Но тут мы выходим несколько за рамки настройки собственно почтовой системы.

Про инфраструктуру же правильнее сочинять на wiki (можно попробовать организовать уголок здесь).
Честно обещаю на следующей неделе постараться наваять там статью про SSL.

Про SSL я бы тоже почитал.

Я честно обещаю :)))

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

Именно поэтому я предпочитаю плоское отображение.

andribas74 написал(а):
А еще я допускал опечатки несколько раз. Так вот, их нельзя исправить, если кто-то ответил на пост.

Это работа для модераторов :) Нефиг им прохлаждаться :)))

andribas74 написал(а):
вики действительно было бы удобнее.
А как туда писать?

Там даже есть тема http://ru.gentoo-wiki.com/wiki/Spamassassin
Как туда написать?

Наверное сначала надо зарегистрироваться.
Правда, у wiki есть свои недостатки...

ЗЫ: В качестве одного из (но безусловно не главного) способа общения можно использовать местный jabber.

:wq
--
Live free or die

оп

Anarchist написал(а):
Это работа для модераторов :) Нефиг им прохлаждаться :)))

Ага, всё бросили, побежали исправлять (-%Е

Цитата:
Наверное сначала надо зарегистрироваться.

Уже не надо.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Првожу улучшенный SIEVE как и

Првожу улучшенный SIEVE как и обещал.
Сразу поясню его задачу.
В postfix сделано bcc всех писем, которые приходят на сервер на

На многих форумах встречал вопрос как оттуда выкинуть локальную почту, то есть отправитель - мы.
На SIEVE это легко написать.
Я же хочу выкинуть не только локальную почту, но и всю бесполезную для анализа СПАМа и настройки spamassassin.
Отрубается вся почта, которая не проверялась SA и разные рассылки, которые приходят каждый день и мешают анализу.

require ["fileinto", "relational", "comparator-i;ascii-numeric"];

if anyof
  (

  #размер = $sa_mail_body_size_limit в amavisd.conf
  size :over 300K,

  #Не было теста
  not header :contains "X-Spam-Flag" "NO",

  #Тест был, но пропущен
  header :contains "X-Spam-Status" "score=x",

  #Рассылки и т.д.
  address :contains "Return-Path" [
    "@mail.subscribe.ru",
    "@prime-tass.ru",
    "@regions.ru"
    ]
  )
{
    discard;
    stop;
}

#Вероятный СПАМ scores>5
#if header :value "ge" :comparator "i;ascii-numeric" ["X-Spam-Score"] ["5"]
#{
#    fileinto ".SPAM5";
#    stop;
#}

В конце оставил комментарий, т.к. еще не решил, как лучше почту разбивать.
Мне больше нравится идея, опять же, только для анализа СПАМа раскидывать почту по разным тестам.
Например, у меня есть тесты:
LOCAL_LANG_RU - русский язык, соответственно нет теста - язык не русский.
LOCAL_COUNTRY_US - страна США
URIBL_* - в письме ссылка на сайт спамеров
LOCAL_RUSLAT - смешанная кодировка
scores>5 - тот, что я привел.

На тесты SIEVE можно натравить так:

if not header :contains "X-Spam-Status" "LOCAL_LANG_RU"  #не русский
if header :contains "X-Spam-Status" "LOCAL_COUNTRY_US"   #привет USA!

Написать мне это очень помогло http://wiki.fastmail.fm/index.php?title=MichaelKloseSieveScript

?

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

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

:wq
--
Live free or die

Трудно сказать

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

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

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".