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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение buryanov » 2010-12-29 18:35:19

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>
Как с этим боротся?
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2010-12-29 18:51:31

А что конкретно не нравится в поле From: =? *** <user@domain>?
Такое поле есть и в нормальных письмах.

Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение buryanov » 2010-12-29 18:58:41

мне не нравится, что написано "?WINDOWS-1251?B?xOzo8vDo6SDB8/D8/+3u4g==?=" , я беру и эту сигнатуру использую как спам, а exim подставляет вместо неё "Дмитрий Бурьянов", вот что мне не нравится, не всегда есть возможность фильтровать по перекадированому, хочется по оригиналу
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2010-12-29 19:30:33

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

Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение buryanov » 2011-02-01 13:03:46

не хочу создавать новую тему, сталкнулся со следующей проблемой:

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

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 кавычка закрывает ранее открытую. Как с этим поборотся
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-02-01 13:14:53

Экранирование кавычек поможет. \"data\" или '"data"'

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35315
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2011-02-14 17:06:25

Убей их всех! Бог потом рассортирует...