exim+mysql ошибка синтаксиса мускула

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-05-24 23:54:01

Доброй ночи!
Появился вопрос, самому в голову ничего не придумалось, решил написать - вдруг кто-то сможет помочь.
Настраивал почтовую систему по статье http://jared.kiev.ua/2010/01/isp-mailserver-1-exim/
И вот в логе /var/log/exim/mainlog возникает ошибка , ругается на синтаксис мускула, но где конкретно понять не могу, и не могу понять где конкретно почитать про изменения в синтаксисе.
Вот кусок лога

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

2012-05-25 00:25:50 no IP address found for host 240-144-f.pppoe.atknet.ru (during SMTP connection from [88.888.240.144])
2012-05-25 00:25:52 1SXebW-000C2i-N1 H=(lavalva.pro) [88.888.240.144] Warning: ACL "warn" statement skipped: condition test deferred: MYSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and users.domain_id = domains.domain_id' at line 1

2012-05-25 00:25:52 1SXebW-000C2i-N1 H=(lavalava.pro) [88.888.240.144] Warning: ACL "warn" statement skipped: condition test deferred: MYSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and users.domain_id = domains.domain_id' at line 1

2012-05-25 00:25:52 1SXebW-000C2i-N1 <= tt@lavalava.pro H=(lavalava.pro) [88.888.240.144] P=esmtpa A=fixed_login:tt@lavalava.pro S=1486 id=76aa6a0293486785dcd85daa06d6a3a4@lavalava.pro T="Fwd: 222" from <tt@lavalava.pro> for tt@lavalava.pro
2012-05-25 00:25:52 1SXebW-000C2i-N1 => /var/mail/lavalava.pro/tt <tt@lavalava.pro> R=virtual_domains T=virtual_delivery
2012-05-25 00:25:52 1SXebW-000C2i-N1 Completed
Имена и ip адреса вымышлены, но суть отображена.
Заранее спасибо за помощь

Хостинговая компания 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/

ChihPih
ст. прапорщик
Сообщения: 566
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение ChihPih » 2012-05-25 10:22:08

2012-05-25 00:25:52 1SXebW-000C2i-N1 H=(lavalava.pro) [88.888.240.144] Warning: ACL "warn" statement skipped: condition test deferred: MYSQL: query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and users.domain_id = domains.domain_id' at line 1
Проверять все warn,ы в конфиге, где есть запросы.
www.info-x.org - информационный ресурс о ОС FreeBSD.

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение hizel » 2012-05-25 10:29:28

а почему вы не задаете этот вопрос автору статьи?
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-05-25 10:48:19

2 ChihPih
А где посомтреть отличия синаксиса в версиях?

ChihPih
ст. прапорщик
Сообщения: 566
Зарегистрирован: 2009-09-04 12:23:30
Откуда: Где-то в России...
Контактная информация:

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение ChihPih » 2012-05-25 10:49:24

Командой diff можно
www.info-x.org - информационный ресурс о ОС FreeBSD.

Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-05-29 9:07:53

Немного разобрался ещё, тут проблема не в синтаксисе мускула нового и старого, а немного в другом.
Вот запрос который не отрабатывает

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

use exim;
  select count(users.on_spamassassin) from users,domains where username = 'ququ@mail.ru' and domains.enabled = '1' and users.enabled = '1' and users.sa_tag>0  and users.sa_tag< and users.domain_id = domains.domain_id
and users.sa_tag< - из-за этого ошибка

Собака зарыта думаю тут, но понять не могу )

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

# Проверки на спам
.ifdef USE_SPAMD

warn set acl_m3 = $acl_c_spam

warn set acl_m5 = $acl_c_lp

warn    message = X-Spam-Report: $spam_report
 spam = exim:true
#        spam = nobody:true

# Если SpamAssassin вернул больше +1 балла, добавляем кол-во баллов*20 к общему спам-рейтингу
warn    condition = ${if >{$spam_score_int}{10}{1}{0}}
 set acl_m3 = ${eval:$acl_c_spam+$spam_score_int*2}

# На основании общего кол-ва спам-очков и юзерских настроек определяем, помечать письмо спамом или удалять
warn    set acl_m4 = ${lookup mysql{select count(users.on_spamassassin) from users,domains where username = '$acl_m5' \
 and domains.enabled = '1' and users.enabled = '1' and users.sa_tag>0  \
 and users.sa_tag<$acl_m3 and users.domain_id = domains.domain_id}}

warn    set acl_m6 = ${lookup mysql{select count(users.on_spamassassin) from users,domains where username = '$acl_m5' \
 and domains.enabled = '1' and users.enabled = '1' and users.sa_refuse>0 \
 and users.sa_refuse<$acl_m3 and users.domain_id = domains.domain_id}}

warn    condition       = ${if >{$acl_m3}{60}{1}{0}}
 log_message = SPAM: $acl_m3 points

warn    condition       = ${if eq{$acl_m6}{yes}{yes}{no}}
 log_message = SPAM: $acl_m3 points

.endif
переменная acl_m3 почему-то не получает никакого значения. Кто знает тонкости работы в shell подскажите в чём проблема, если не затруднит.

Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-06-04 22:44:39

Читаю, читаю --> http://www.lissyara.su/doc/programming/shell/

Понять не могу где ошибка (

она где-то где переменной значение присваивается, пытаюсь разобраться с синтаксисом :unknown:

Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-06-14 11:39:44

Всё фигня, выражение правильно, проблема не в этом

Проблема в том, что файл экзима разбит на много мелких, и нужно передать значение из одного файла, в другой. Но ничего не передаётся, таким образом acl_m3 получает null

410.acl-check-rcpt-spam.conf:

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

warn    set acl_c_spam = $acl_m0
500.acl-check-data.conf:

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

warn set acl_m3 = $acl_c_spam
acl_c_spam должна быть видна между файлами, кто умный, подскажите как проверить?

Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-06-14 11:51:08

закрывайте тему , а то я с ума сойду в одиночестве, и ошибка эта, то есть, то нет. Беда какая-то

ikarus
рядовой
Сообщения: 36
Зарегистрирован: 2010-11-19 6:56:39
Контактная информация:

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение ikarus » 2012-08-14 12:04:50

но если запихать все в один файл проблема не исчезает, та же ошибка.

ikarus
рядовой
Сообщения: 36
Зарегистрирован: 2010-11-19 6:56:39
Контактная информация:

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение ikarus » 2012-08-20 11:50:27

Дело не в том что конфиг разбит на много мелких, переменные acl_c_ живут на протяжении всей сессии, нюанс конфига от jared'a в том что почтовый клиент нашего сервера, отправляя почту на внешний ящик естественно авторизуется и екзим согласно данному конфигу, а именно директиве 'accept authenticated = *' принимает почту и останавливает проверку rcpt не дойдя до директивы 'warn set acl_c_spam = $acl_m0' (так как она идет ниже в секции) и в итоге переменная acl_c_spam просто не объявляется, отсюда и ошибка мускульного запроса с несуществующим значением, в секции 'acl_check_content' (на который и ругается екзим). Тут в общем нужно было наверное либо объявить acl_c_spam в начале секции 'acl_check_rcpt', либо добавить условный оператор перед мускульным запросом, ну или убрать 'accept authenticated = *' в конец секции acl_check_rcpt.. кому как нравиться..

Аватара пользователя
T_T
ефрейтор
Сообщения: 65
Зарегистрирован: 2011-02-21 9:56:36

Re: exim+mysql ошибка синтаксиса мускула

Непрочитанное сообщение T_T » 2012-11-16 21:06:07

Спасибо за ответ, буду по-новой ставить попробую это учесть