URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 77201
[ Назад ]

Исходное сообщение
"Spamassassin и русский язык. Прямая фильтрация по словам."

Отправлено nightowl , 06-Ноя-07 16:23 
Доброго всем времени суток !


Вопрос такой, как сделатьчтоб SA всеже реагировал на
body            CUST_RUS_SEX            /плохое слово|очень плохое слово/i
Дело в том, что когда плохие слова на кирилице, то SA их не замечает :( а латиницей - нормально... парсит когда в windows-1251 приходят письма.

ТЕ вопрос в следующем, как SA помочь понимать больше русскоязычных кодировок, не средствами баеса. а прямой фильтрацией ?

Спасибо


Содержание

Сообщения в этом обсуждении
"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено nightowl , 08-Ноя-07 12:14 
Неужели никто не сталкивался ? с такой проблемой ?

"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено anonyous , 09-Ноя-07 01:29 
>Неужели никто не сталкивался ? с такой проблемой ?

Сталкивались. Кстати, в последней версии 3.2.3, кажется, сделана нормализация к Unicod-у.
Так вот, она не работает (если ещё не исправили, в чём сомневаюсь) в среде отличной от Unicode. Правда, это легко исправить.
Там ещё и флажок есть в конфиге. Включать ли эту нормализацию.
В общем, есть чего покопаться.

Я как-то у себя это настроил с бубном. Успехов.


"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено nightowl , 09-Ноя-07 10:18 
>>Неужели никто не сталкивался ? с такой проблемой ?
>
>Сталкивались. Кстати, в последней версии 3.2.3, кажется,

Вотож :) "Кажется". UTF-8 не понимает :(

> сделана нормализация к Unicod-у.

Кстати, а что под "нормализацие" Вы понимаете ?

>Так вот, она не работает (если ещё не исправили, в чём сомневаюсь)
>в среде отличной от Unicode. Правда, это легко исправить.

Путем переписывания Перловых модулей ?

>Там ещё и флажок есть в конфиге. Включать ли эту нормализацию.

Буду Вам очень признателен, если "тыкнете" где это.

>В общем, есть чего покопаться.

Спасибо, не сомниваюсь.

>
>Я как-то у себя это настроил с бубном. Успехов.

Честное слово, искренне рад ! Спасибо за пожелание :) Но чтоб не оказалось как у Классиков "Пилите, Шура, пилите они - золотые".


"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено anonymous , 09-Ноя-07 12:35 
Вы уж почитайте там про нормализацию. Она в недавней версии появилась только.
В конфиге это выглядит так:

normalize_charset 1


Под нормализацией я понимаю вот что. Скажем, слово "реклама", может быть в в разных кодировках. Если нормализации нет, то чтобы его "выловить" пришлось бы писать что-то такое:

body __REKLAMA /реклама|то же во второй кодировке|то же в третьей/
в коi8,cp1251,utf-8.

Причем //i едва ли будет работать, так что придётся писать [Рр]еклама|РЕКЛАМА ...

А когда есть нормализация, достаточно написать в юникоде - /реклама/i.  Spamassassin перекодирует сообщение в юникод и сравнит с регулярным выражением.


Если номарлизация выключена (normalize_charset 0), всё работает, только нужно длинные и некрасивые регулярные выражения писать.
Если нормализация включена, то у меня, например, просто никогда не находил русских (российских, для политкоректности) слов. Ни в какой кодировке. Если же написать, опять же, это работало только у меня, в файл Plugins/Check.pm "use utf8", то всё переменится к лучшему. Так что, править перловый модуль особо не нужно.

>Но чтоб не оказалось как у Классиков "Пилите, Шура, пилите они - золотые".

А то нет!



"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено nightowl , 09-Ноя-07 16:20 
>Вы уж почитайте там про нормализацию. Она в недавней версии появилась только.
>
>В конфиге это выглядит так:
>
>normalize_charset 1
>

Спасибо, огромное, человеческое.

>[оверквотинг удален]
>А когда есть нормализация, достаточно написать в юникоде - /реклама/i.  Spamassassin
>перекодирует сообщение в юникод и сравнит с регулярным выражением.
>
>
>Если номарлизация выключена (normalize_charset 0), всё работает, только нужно длинные и некрасивые
>регулярные выражения писать.
>Если нормализация включена, то у меня, например, просто никогда не находил русских
>(российских, для политкоректности) слов. Ни в какой кодировке. Если же написать,
>опять же, это работало только у меня, в файл Plugins/Check.pm "use
>utf8",

В результате, на данный момент, у меня распознаются письма только в koi8-r(u)
и то только при

normalize_charset 0

/usr/local/lib/perl5/site_perl/5.8.8/Mail/SpamAssassin/Plugin/Check.pm

вот тут ничего подобного не нашел :(
Да и еще, врядли важно, но у меня FreeBSD 6.2.

>то всё переменится к лучшему. Так что, править перловый модуль
>особо не нужно.
>
>>Но чтоб не оказалось как у Классиков "Пилите, Шура, пилите они - золотые".
>
>А то нет!


"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено anonymous , 09-Ноя-07 17:11 
>В результате, на данный момент, у меня распознаются письма только в koi8-r(u)
>и то только при normalize_charset 0

Так я и писал. Выхода мне видно два:

1. "normalize_charset 0" и писать регулярные выражения с учетом всех кодировок
   (вот пример для koi8 и cp1251: /реклама|ТЕЛМБНБ/)
2. "normalize_charset 1" и писать регулярные выражение в кодировке utf-8
   (пример: /реклама/i) Но "из коробки" это сейчас не работает, нужно добавить "use utf8" в этот файл:

>/usr/local/lib/perl5/site_perl/5.8.8/Mail/SpamAssassin/Plugin/Check.pm
>вот тут ничего подобного не нашел :(

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

>Да и еще, врядли важно, но у меня FreeBSD 6.2.

Как же, не важно, у меня тоже такая.


"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено Golub Mikhail , 09-Ноя-07 19:35 
>[оверквотинг удален]
>
>>/usr/local/lib/perl5/site_perl/5.8.8/Mail/SpamAssassin/Plugin/Check.pm
>>вот тут ничего подобного не нашел :(
>
>Не нашли Вы этого там, потому что это как раз нужно туда
>добавить.
>
>>Да и еще, врядли важно, но у меня FreeBSD 6.2.
>
>Как же, не важно, у меня тоже такая.

Добавил в /usr/local/lib/perl5/site_perl/5.8.8/Mail/SpamAssassin/Plugin/Check.pm "use utf8;"
В конфиге - "normalize_charset 1"
Рестарт spamd (version 3.2.3) - ругани нет.
Но не реагирует всеравно на такие правила:
body            TEST123       /п©яп╬п╡п╣яп╨п╟|проверка/i
score           TEST123       1.0
describe        TEST123       Test normalize_charset


"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено anonymous , 09-Ноя-07 19:56 
> body TEST123       /п©яп╬п╡п╣яп╨п╟|проверка/i

По-моему, эта строка не является юникод-строкой...
Попробуйте так: body TEST123       /п©яп╬п╡п╣яп╨п╟/i

И вообще, spamassassin --lint -d Вам в помощь.
Больше ничем помочь не могу, конец связи, желаю победы.


"Spamassassin и русский язык. Прямая фильтрация по словам."
Отправлено Golub Mikhail , 09-Ноя-07 20:07 
>> body TEST123       /п©яп╬п╡п╣яп╨п╟|проверка/i
>
>По-моему, эта строка не является юникод-строкой...
>Попробуйте так: body TEST123       /п©яп╬п╡п╣яп╨п╟/i

Пробовал. Изначально так и было.
Потом уже добавил /unicode_string|koi8-r_string/i
>
>И вообще, spamassassin --lint -d Вам в помощь.
>Больше ничем помочь не могу, конец связи, желаю победы.


"нормальная нормализация в ненормальной обстановке"
Отправлено anonymous , 05-Мрт-08 18:44 
Вот ещё решил добавить кое-что.
Помните люди, бубен не нужен тому, кто владеет ru_RU.UTF-8.

Можно ещё добавить в Config.pm это:

use utf8;

use POSIX qw (locale_h);
setlocale(LC_CTYPE,'ru_RU.UTF-8');

чтобы работали регулярные выражения вроде таких: /[а-я][abcekmnopruxy][а-я]/i



"нормальная нормализация в ненормальной обстановке"
Отправлено arkady , 07-Окт-08 14:46 
Я сделал так:

Я добавил в Mail/Spamassassin/Message.pm после use warnings;
#===========
use bytes;
#===========
в Mail/SpamAssassin/Plugin/Check.pm после use warnings; добавил
#=====================
use utf8;
use POSIX qw (locale_h);
POSIX::setlocale(&POSIX::LC_CTYPE,'ru_RU.UTF-8');
#=====================
в /etc/mail/spamassassin/local.cf
#=====================
normalize_charset 1
#=====================

Таблицы кодировки utf8 можно найти здесь: http://www.utf8-chartable.de/unicode-utf8-table.pl
И еще /i в хексах не работает (по крайней мере у меня не получилось), поэтому скажем русскую букву а я обозначаю как: (\xd0\x90)|(\xd0\xb0)|(\x40)|(\x41)|(\x61)
имеется ввиду: А а @ A a

а далее исключительно Ваше творчество.


"нормальная нормализация в ненормальной обстановке"
Отправлено andribas , 29-Янв-09 12:50 
>[оверквотинг удален]
>normalize_charset 1
>#=====================
>
>Таблицы кодировки utf8 можно найти здесь: http://www.utf8-chartable.de/unicode-utf8-table.pl
>И еще /i в хексах не работает (по крайней мере у меня
>не получилось), поэтому скажем русскую букву а я обозначаю как: (\xd0\x90)|(\xd0\xb0)|(\x40)|(\x41)|(\x61)
>
>имеется ввиду: А а @ A a
>
>а далее исключительно Ваше творчество.

Сделал первый плагин на русском языке - http://www.gentoo.ru/node/13632
Когда закончу - regexp'ы можно будет писать на русском и правила будут легче.