Доброго всем времени суток !
Вопрос такой, как сделатьчтоб SA всеже реагировал на
body CUST_RUS_SEX /плохое слово|очень плохое слово/i
Дело в том, что когда плохие слова на кирилице, то SA их не замечает :( а латиницей - нормально... парсит когда в windows-1251 приходят письма.ТЕ вопрос в следующем, как SA помочь понимать больше русскоязычных кодировок, не средствами баеса. а прямой фильтрацией ?
Спасибо
Неужели никто не сталкивался ? с такой проблемой ?
>Неужели никто не сталкивался ? с такой проблемой ?Сталкивались. Кстати, в последней версии 3.2.3, кажется, сделана нормализация к Unicod-у.
Так вот, она не работает (если ещё не исправили, в чём сомневаюсь) в среде отличной от Unicode. Правда, это легко исправить.
Там ещё и флажок есть в конфиге. Включать ли эту нормализацию.
В общем, есть чего покопаться.Я как-то у себя это настроил с бубном. Успехов.
>>Неужели никто не сталкивался ? с такой проблемой ?
>
>Сталкивались. Кстати, в последней версии 3.2.3, кажется,Вотож :) "Кажется". UTF-8 не понимает :(
> сделана нормализация к Unicod-у.
Кстати, а что под "нормализацие" Вы понимаете ?
>Так вот, она не работает (если ещё не исправили, в чём сомневаюсь)
>в среде отличной от Unicode. Правда, это легко исправить.Путем переписывания Перловых модулей ?
>Там ещё и флажок есть в конфиге. Включать ли эту нормализацию.
Буду Вам очень признателен, если "тыкнете" где это.
>В общем, есть чего покопаться.
Спасибо, не сомниваюсь.
>
>Я как-то у себя это настроил с бубном. Успехов.Честное слово, искренне рад ! Спасибо за пожелание :) Но чтоб не оказалось как у Классиков "Пилите, Шура, пилите они - золотые".
Вы уж почитайте там про нормализацию. Она в недавней версии появилась только.
В конфиге это выглядит так:normalize_charset 1
Под нормализацией я понимаю вот что. Скажем, слово "реклама", может быть в в разных кодировках. Если нормализации нет, то чтобы его "выловить" пришлось бы писать что-то такое:body __REKLAMA /реклама|то же во второй кодировке|то же в третьей/
в коi8,cp1251,utf-8.Причем //i едва ли будет работать, так что придётся писать [Рр]еклама|РЕКЛАМА ...
А когда есть нормализация, достаточно написать в юникоде - /реклама/i. Spamassassin перекодирует сообщение в юникод и сравнит с регулярным выражением.
Если номарлизация выключена (normalize_charset 0), всё работает, только нужно длинные и некрасивые регулярные выражения писать.
Если нормализация включена, то у меня, например, просто никогда не находил русских (российских, для политкоректности) слов. Ни в какой кодировке. Если же написать, опять же, это работало только у меня, в файл Plugins/Check.pm "use utf8", то всё переменится к лучшему. Так что, править перловый модуль особо не нужно.>Но чтоб не оказалось как у Классиков "Пилите, Шура, пилите они - золотые".
А то нет!
>Вы уж почитайте там про нормализацию. Она в недавней версии появилась только.
>
>В конфиге это выглядит так:
>
>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.>то всё переменится к лучшему. Так что, править перловый модуль
>особо не нужно.
>
>>Но чтоб не оказалось как у Классиков "Пилите, Шура, пилите они - золотые".
>
>А то нет!
>В результате, на данный момент, у меня распознаются письма только в 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.
Как же, не важно, у меня тоже такая.
>[оверквотинг удален]
>
>>/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
> body TEST123 /п©яп╬п╡п╣яп╨п╟|проверка/iПо-моему, эта строка не является юникод-строкой...
Попробуйте так: body TEST123 /п©яп╬п╡п╣яп╨п╟/iИ вообще, spamassassin --lint -d Вам в помощь.
Больше ничем помочь не могу, конец связи, желаю победы.
>> body TEST123 /п©яп╬п╡п╣яп╨п╟|проверка/i
>
>По-моему, эта строка не является юникод-строкой...
>Попробуйте так: body TEST123 /п©яп╬п╡п╣яп╨п╟/iПробовал. Изначально так и было.
Потом уже добавил /unicode_string|koi8-r_string/i
>
>И вообще, spamassassin --lint -d Вам в помощь.
>Больше ничем помочь не могу, конец связи, желаю победы.
Вот ещё решил добавить кое-что.
Помните люди, бубен не нужен тому, кто владеет ru_RU.UTF-8.Можно ещё добавить в Config.pm это:
use utf8;
use POSIX qw (locale_h);
setlocale(LC_CTYPE,'ru_RU.UTF-8');чтобы работали регулярные выражения вроде таких: /[а-я][abcekmnopruxy][а-я]/i
Я сделал так:Я добавил в 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а далее исключительно Ваше творчество.
>[оверквотинг удален]
>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'ы можно будет писать на русском и правила будут легче.