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

Exim+system filter

Добавлено: 2006-12-05 23:31:14
Elefunt
Добрый день!

Мучал и настраивал Exim но уткнулся в такую проблему: когда адрес отправителя содержит ' (например emphysema'sHallmark@abitur.mipt.ru) ползут ошибки mysql вобщем понятно что проще не принимать с таких адресов. Но меня интересует как лучше исправить эту досадную проблему? Может кто сталкивался с такой ситуацией?

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

Dec  5 00:17:35 b exim[14477]: 2006-12-05 00:17:35 1Gpg5s-0002Ke-4K Error in sys
tem filter: failed to expand "${lookup mysql{SELECT `address` FROM `alias` WHERE
 `address`='$sender_address' AND `copy_mail`='1' LIMIT 1}}" in filter file: 
lookup of "SELECT `address` FROM `alias` WHERE `address`='emphysema'sHallmark@abitur
.mipt.ru' AND `copy_mail`='1' LIMIT 1" 
gave DEFER: 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 'sHallmark@abitur.mipt.ru' AND `copy_mail`='1' LIMIT 1' at line 1\n
copy_mail.conf
........
if $sender_address is "${lookup mysql{SELECT `address` FROM `alias` WHERE \
`address`='$sender_address' AND `copy_mail`='1' LIMIT 1}}"
then
........

Добавлено: 2006-12-06 8:53:31
Alex Keda
Конфиг из моей статьи? Если да - скажи из какой - это мой косяк.
А для исправления - тебе сюда - http://www.lissyara.su/?id=1209#9.9

Добавлено: 2006-12-06 17:20:18
Elefunt
lissyara писал(а):Конфиг из моей статьи?

это ваша статья http://www.lissyara.su/?id=1175

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

.....
#system filter
# А тут у начальства заскок - желание контролировать всё.
# Вот и пришлось сделать копию всей почты.
# Вот тока в IT отделе, как выяснилось, никто никому не пишет :)
system_filter = /usr/local/etc/exim/copy_mail.conf
.......
обошлось заменой ' на \"

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

if $recipients is "${lookup mysql{SELECT `address` FROM `alias` WHERE \
                   `address`=\"$recipients\" AND `copy_mail`='1' LIMIT 1}}"
then

Добавлено: 2006-12-07 10:51:27
Abigor
бред, даж мне уже объяснили надо юзать quote_mysql

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

if $recipients is "${lookup mysql{SELECT `username` FROM `mailbox` WHERE \
        `username`='${quote_mysql:$recipients}' AND `copy_mail`='1' LIMIT 1}}"
then
    unseen deliver mail-copy-mailbox@domain.ru
endif

Добавлено: 2006-12-07 10:59:13
Alex Keda
не бред. альтернативное решение :)))
Тока никто не застарахован что в следующем мыле не будет двойной кавычки в адресе....

Добавлено: 2006-12-07 11:04:15
Abigor
вот и я про тоже, после того как ты ссылку дал на этот раздел, идея была заменить ' на " но потом все же решил воспользоваться твоим вариантом

Добавлено: 2006-12-08 15:04:27
BAV_Lug
Не много не в тему, но все же.
Как потом заставить dovecot рассортировывать письма, в таком ящике, по папкам (например с названиями почтового ящика).