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

Exim + MySQL Auto White List

Добавлено: 2008-07-14 17:05:34
Oloremo
Пытаюсь интегрировать первый скрипт из полезных скриптов.
С автором скрипта сегодня связатся не удалось так что решил написать сюда.
Что сделано:

В MySQL создана БД exim с таблицей auto-whitelist.
Дальше с соответствующими изменениями я добавляю в configure:

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

hide mysql_servers = localhost/exim/exim/123

MYSQL_MYLIST = INSERT INTO auto-whitelist(src_email,dst_email,record_expires) VALUES ('$sender_address','$acl_m4@$acl_m5',DATE_ADD(now(), INTERVAL 10 DAY))

MYSQL_UPDATEMYLIST = UPDATE auto-whitelist SET record_expires=DATE_ADD(now(), INTERVAL 10 DAY) WHERE src_email='$sender_address' AND dst_email='$acl_m4@$acl_m5'

MYSQL_DELMYLISTEXPIRED = DELETE FROM auto-whitelist WHERE record_expires < now()

MYSQL_TESTMYLIST = SELECT CASE WHEN now() - record_expires > 0 THEN 2 ELSE 1 END FROM auto-whitelist WHERE src_email='$sender_address' AND dst_email='$acl_m4@$acl_m5'

MYSQL_TESTCLIENTMYLIST = SELECT CASE WHEN now() - record_expires > 0 THEN 2 ELSE 1 END FROM auto-whitelist WHERE dst_email='$sender_address' AND src_email='$local_part@$domain'
Далее в оригинале лукап делается из MySQL вот таким образом:

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

SELECT domain FROM domains WHERE domain='${quote_mysql:$domain}' AND active='Y' LIMIT 1
Я заменил это на

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

warn  set acl_m3    = ${lookup {$domain}lsearch{/usr/local/etc/exim/lists/local_domains}}
Но происходит что-то странное.
В файле local_domains одна запись - domain.off.
Когда я отсылаю письмо для admin@domain.off он в логах пишет следующее:

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

file lookup required for domain.off
  in /usr/local/etc/exim/lists/local_domains
lookup yielded:
check set acl_m3 = ${lookup {$domain}lsearch{/usr/local/etc/exim/lists/local_domains}}
                 =
Почему пусто? Ведт он должен был найти $domain и присвоить acl_m3 это значение... или я не понял что-то?

Следующую проблему напишу после решения этой. ;-)

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-14 18:32:15
Alex Keda
оформите сообщение нормально.

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-14 19:04:04
Oloremo
lissyara писал(а):оформите сообщение нормально.
Извиняюсь.
Добавил code.
Что-нибудь ещё нужно переделать?

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-14 23:40:09
dikens3
С автором скрипта сегодня связатся не удалось так что решил написать сюда.
Удалось..
Почему пусто? Ведь он должен был найти $domain и присвоить acl_m3 это значение... или я не понял что-то?
Правильно понял. Так должно быть в оригинале.

Предполагаемая ошибка - Неправильный запрос ( ${lookup {$domain}lsearch{/usr/local/etc/exim/lists/local_domains}} ) или данные в файле. ( /usr/local/etc/exim/lists/local_domains )

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-14 23:42:59
Alex Keda
лукап ничё не принёс...

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-15 11:09:39
Oloremo
lissyara писал(а):лукап ничё не принёс...
Это понятно - вопрос "почему?".
В /usr/local/etc/exim/lists/local_domains - одна запись domain.off
Я отправляю письмо для admin2@domain.off

А лукап приезжает пустым.
Сам лукаб делал по офф документации и он вроде совершенно правильный.

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-15 11:54:32
dikens3
Файл должен быть немного другой:

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

domain.off: domain.off
domain2.ru: domain2.ru
...
В документации написано:
“lsearch”: Данный файл - текстовый файл, по которому линейно ищется строка, начинающаяся с искомого ключа, законченную двоеточием, или пробелом, или концом строки. Используется первое найденное совпадение. пустое место между ключом и двоеточием разрешается. Остаток строки, после удаления начального и конечного пустого пространства является данными.

Re: Exim + MySQL Auto White List

Добавлено: 2008-07-15 14:36:52
Oloremo
dikens3 писал(а):Файл должен быть немного другой:

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

domain.off: domain.off
domain2.ru: domain2.ru
...
В документации написано:
“lsearch”: Данный файл - текстовый файл, по которому линейно ищется строка, начинающаяся с искомого ключа, законченную двоеточием, или пробелом, или концом строки. Используется первое найденное совпадение. пустое место между ключом и двоеточием разрешается. Остаток строки, после удаления начального и конечного пустого пространства является данными.
.....
Я идиот.
Извиняюсь.
Большое спасибо что обяьснили.

Пойду искать тот тип поиска, который мне нужен.