Страница 1 из 1
Сканирование поля Subject:
Добавлено: 2009-02-11 21:50:59
buryanov
Hi All
Подскажите, как сделать сканирования по полю Subject.
У меня есть база (MySQL) в которой хранятся слова или выражения.
Сделал примерно следующее
Код: Выделить всё
deny condition = ${if eq{${lookup mysql{SELECT 1 \
FROM `subject_deny` \
WHERE instr('${quote_mysql:!!!!!$variables!!!!!!}', subj) \
LIMIT 1}}}{1}{yes}{no}}
hosts = !+relay_from_hosts : *
set acl_m2 = 1
message = "!!!!!!!!!!!!!You Ban!!!!!!!!!!!!!"
В случае с адресатами - есть соответствующие переменные, если делать проверку полностью письма - по возможны совпадения непосредственно в самом теле.
по подстроке dvd я письмо забанил
Re: Сканирование поля Subject:
Добавлено: 2009-02-13 16:23:39
buryanov
Перечитал доку, есть такая переменная $h_Subject.
Прописал в конфиге запрос:
Код: Выделить всё
${if eq{${lookup mysql{SELECT 1 \
FROM `subject_deny` \
WHERE instr('${quote_mysql:$h_Subject:}', subj) \
LIMIT 1}}}{1}{yes}{no}}
в mysql он приходит
Код: Выделить всё
SELECT 1 FROM `subject_deny` WHERE instr('', subj) LIMIT 1
тоесть $h_Subject просто непередаётся в независимости от наличия текста в Subject
Re: Сканирование поля Subject:
Добавлено: 2009-02-13 16:42:02
dikens3
Смотри где эта переменная появляется. В системном фильтре она есть. В DATA не знаю.
Re: Сканирование поля Subject:
Добавлено: 2009-02-13 18:00:28
buryanov
Через system-filter запрос идёт, но если написана тема по русски - получаю следующюю ошибку
Feb 13 16:57:30 asterisk exim[50513]: [50513] 1LXzTu-000D8i-Pg Error in system filter: failed to expand "${lookup mysql{SELECT 1 FROM `subject_deny` WHERE instr('${quote_mysql:$h_Subject:}', subj) LIMIT 1}}" in filter file: lookup of "SELECT 1 FROM `subject_deny` WHERE instr('\301\320\336\310\311', subj) LIMIT 1" gave DEFER: MYSQL: query failed: Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (koi8r_general_ci,IMPLICIT) for operation 'locate'\n
хотя в mysql приходит нормально
2829 Connect exim_db@localhost on exim_db
2829 Query SELECT 1 FROM `subject_deny` WHERE instr('вап', subj) LIMIT 1
2829 Quit
Re: Сканирование поля Subject:
Добавлено: 2009-02-19 5:00:19
Dr_Web
У меня примерно такой же вопрос

Нужно прочитать поле
X-Spam-Flag, и если оно
X-Spam-Flag: YES выдать
deny. Делаю это в
acl_check_data при помощи
regex:
Код: Выделить всё
acl_check_data:
deny message = "Spam found"
logwrite = "SPAM ($regex_match_string)"
regex = X-Spam-Flag:: YES
accept
Вроде определяет строку, но письмо пропускает.
Возможно вы по считаете мой вопрос глупым, но я недавно связался exim'ом и вдоволь уже накурился манов и документации, мозг пухнет... Хотя вроде ничего сложного.
Re: Сканирование поля Subject:
Добавлено: 2009-02-20 1:18:52
Dr_Web
Можно ли это сделать не используя system_filter?
Очень нужно, а времени нет совсем

Re: Сканирование поля Subject:
Добавлено: 2009-02-20 4:30:43
Dr_Web
Немного переписал, но всеравно не работает
Код: Выделить всё
acl_check_data:
deny message = This message is spam ($regex_match_string)
regex = ^X.Spam.Flag.\sYES
logwrite = SPAM ($regex_match_string)
accept
Письмо с этим заголовком пропущено:
Код: Выделить всё
...
MIME-Version: 1.0
Content-Type: text/plain;
charset=koi8-r
Content-Transfer-Encoding: 8bit
X-Spam-Ystatus: hits=70.50
X-Spam-Flag: YES
X-Spam-Yversion: Spamooborona-3.0
Subject: [SPAM 70.50] =?koi8-r?B?59LV0NDP19XIwSCWINPNz9TSxdTYIM/C0drB1MXM2M7P?=
...
Re: Сканирование поля Subject:
Добавлено: 2009-02-20 22:58:06
Dr_Web
local_scan() выполняется до или после
acl_check_data?
Поле добавляется именно local_scan'ом и проверка этого поля должна быть после него, может в этом проблема?

Re: Сканирование поля Subject:
Добавлено: 2009-02-21 4:32:03
Dr_Web
Как оказалось local_scan после все ACL, пришлось использовать системный фильтр
Код: Выделить всё
# Exim filter
if $header_X-Spam-Flag: is "YES"
then
fail text "Spam is not wanted here"
endif
Все заработало, спасибо за помощь
Только вылезла еще проблема:
Код: Выделить всё
2009-02-21 04:15:29 1LagSn-000Kzq-1S server did not confirm, answ=
2009-02-21 04:15:29 1LagSn-000Kzq-1S read() error 54, len=-1
2009-02-21 04:15:29 1LagSn-000Kzq-1S sp-exim: error 53 sending envelope data
2009-02-21 04:15:29 1LagSn-000Kzq-1S F=izeld@nm.ru H=mail3.ks.pochta.ru [82.204.219.182] I=[82.146.41.246]:25 P=esmtp temporarily rejected by local_scan(): Temporary local problem