Страница 1 из 1

Фильтрация по заголовкам

Добавлено: 2010-12-29 18:35:19
buryanov
Hi All
Стало мне скучно чтото, да и пользователь постоянно жалуются, вот решил поборотся немного соспамом.
Довольно часто приходят письма типа: "Вася пупкин <user@mydomain.ru>" как отправитель или всякие там виагры или тому подобное в сабджекте.
написал пару строк в system-filter:

Код: Выделить всё

if  "1" is "${lookup mysql{select 1 from exim_db.word_blacklist \
             WHERE lcase('$h_from:') like lcase(concat('%',`data`,'%'))  LIMIT 1;}}"
then
        headers add "X-EXIM-FILTER: !!!!!!!!!!!!bla bla bla!!!!!!!!!!!!!!1"
        fail text "this message looks like spam to me"
else
        headers add "X-EXIM-FILTER: !!!!!!!!!!!!ok ok ok ok ok !!!!!!!!!!!!!!1 From: $h_from:"
endif
Начал тестить и сталкнулся с проблемой: не работает на не англ азыках, начал разбиратся вижу следущее:

Код: Выделить всё

...
From: =?WINDOWS-1251?B?xOzo8vDo6SDB8/D8/+3u4g==?= <buryanov@ukr.net>
X-EXIM-FILTER: !!!!!!!!!!!!ok ok ok ok ok !!!!!!!!!!!!!!1 From: Дмитрий Бурьянов <buryanov@ukr.net>
тоесть, Exim перекодирует поле, и потом с ним работает.
Подумал, хоть и боевая система(релей это в основном), но можно переехать на utf8, но тут сталкнулся с ещё одним сюрпризом, exim конектится к базе с latin1 и отказывается работать, если таблица с другой кодировкой, хоть в my.cnf и прописано что у клиентов по умолчанию koi8r.Хотя меня больше устраивает работать с полем вида

Код: Выделить всё

From: =?WINDOWS-1251?B?xOzo8vDo6SDB8/D8/+3u4g==?= <buryanov@ukr.net>
Как с этим боротся?

Re: Фильтрация по заголовкам

Добавлено: 2010-12-29 18:51:31
blade_007
А что конкретно не нравится в поле From: =? *** <user@domain>?
Такое поле есть и в нормальных письмах.

Re: Фильтрация по заголовкам

Добавлено: 2010-12-29 18:58:41
buryanov
мне не нравится, что написано "?WINDOWS-1251?B?xOzo8vDo6SDB8/D8/+3u4g==?=" , я беру и эту сигнатуру использую как спам, а exim подставляет вместо неё "Дмитрий Бурьянов", вот что мне не нравится, не всегда есть возможность фильтровать по перекадированому, хочется по оригиналу

Re: Фильтрация по заголовкам

Добавлено: 2010-12-29 19:30:33
blade_007
Не совсем понимаю зачем это вообще надо. Ну да ладно. mysql-запрос возвращает из БД сигнатуру или что--то типа "Дмитрий Бурьянов"?
Если возможность экранировать строку возвращенную mysql-запросом?

Re: Фильтрация по заголовкам

Добавлено: 2011-02-01 13:03:46
buryanov
не хочу создавать новую тему, сталкнулся со следующей проблемой:

Код: Выделить всё

if  "1" is "${lookup mysql{select 1 from exim_db.word_blacklist \
             WHERE lcase('$h_subject:') like lcase(concat('%',`data`,'%'))  LIMIT 1;}}"
then
                headers add "X-EXIM-FILTER: !!!!!!!!!!!!bla bla bla!!!!!!!!!!!!!!1"
        fail text "this message looks like spam to me"
else
        headers add "X-EXIM-FILTER: !!!!!!!!!!!!ok ok ok ok ok !!!!!!!!!!!!!!1 $h_subject:"
endif
запрос работает, если переменные взяты в одинарные ковычки и в мускул передаются соответственно с одинарными кавычками. Если же в значении переменной присутствует одинарная кавычка - то всё рушится, тк запрос приобретает вид

Код: Выделить всё

"select 1 from exim_db.word_blacklist WHERE lcase('World's Top Pharma') like lcase(concat('%',`data`,'%'))  LIMIT 1;" 
в слове world's кавычка закрывает ранее открытую. Как с этим поборотся

Re: Фильтрация по заголовкам

Добавлено: 2011-02-01 13:14:53
blade_007
Экранирование кавычек поможет. \"data\" или '"data"'

Re: Фильтрация по заголовкам

Добавлено: 2011-02-14 17:06:25
Alex Keda