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

Списки из mysql в ACL

Добавлено: 2007-11-27 19:20:34
Al
Задача такая: есть парочка тупых программ, которые не умеют писать отправителя. Надо разрешить получать почту от этих падонкаф и при этом не отключать проверку существования обратного адреса.
Реализовать решилось так:

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

# делаем список пользователей, которые в локальном white-листе.
addresslist white_senders = ${lookup mysql{SELECT `white_senders` \
                            FROM `white_senders` WHERE  \
                            `active`='1'}}

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

# пропускаем падонкав, не умеющих писать отправителя
accept senders = +white_senders
logwrite   =  !sender! $sender_address - whitesender
Так вот, в my-sql таблицу этих сендеров надо писать через двоеточие.Т.е. каждую хапись заканчивать двоеточием,иначе получается

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

>>> check senders = +white_senders
>>> test1@test.ru in "test2@test.ru
>>> test1@test.ru"? no (end of list)
>>> test1@test.ru in "+white_senders"? no (end of list)
а вот это, если каждую запись в мускуле закончить двоеточием

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

>>> russvet.ru in "russvet.ru"? yes (matched "russvet.ru")
>>> test1@test.ru in "test2@test.ru:
>>> test1@test.ru:"? yes (matched "admin@russvet.ru")
>>> test1@test.ru in "+white_senders"? yes (matched "+white_senders")
это правильно или косяк??? есть подводные камни????

Re: Списки из mysql в ACL

Добавлено: 2007-11-27 20:17:03
Alex Keda
а ты используй имя в выборке.
чтобы вернула одно значение или вообще не вернула.

Re: Списки из mysql в ACL

Добавлено: 2007-11-27 23:08:49
Al
Т.е. примерно так:

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

condition = $(if eq ${lookup mysql{SELECT `white_senders` \
                            FROM `white_senders` WHERE  \
                            `active`='1' AND `white_senders`='$sender_address'}}{}{no}{yes}}
это мы дописываем в акли.Правильно я понял?? не ошибся в синтаксисе? все-таки на рабочем сарваке проверять приходится...

Re: Списки из mysql в ACL

Добавлено: 2007-11-27 23:12:01
Alex Keda
типа того

Re: Списки из mysql в ACL

Добавлено: 2007-11-28 13:21:35
Al
заработало так:

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

  accept logwrite   =  !message sended by $sender_address - white sender!
         set acl_m1   = ${lookup mysql{SELECT `white_senders` FROM `white_senders` WHERE  `active`='1' AND `white_senders`='$sender_address'}}
         condition = ${if eq {$acl_m1} {$sender_address}{yes}{no}}
а если запрос к мускулю и сравнение объединить (вместо $acl_m1 вставить запрос ), пишет ошибку.
Есть вырианты,как это сделать без acl_m1 ???

Re: Списки из mysql в ACL

Добавлено: 2007-11-28 13:32:25
Alex Keda

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

# делаем список пользователей, которые в локальном white-листе.
addresslist white_senders = ${lookup mysql{SELECT `white_senders` \
                            FROM `white_senders` WHERE  \
                            `active`='1'}}
делать список из одного пользователя

Re: Списки из mysql в ACL

Добавлено: 2007-11-28 15:29:33
Al
ну да :D
можно сделать много списков,каждый из которых будет брать одного пользователя из своей таблицы.а потом их объединить в один.и при каждом добавлении пользователя создавать под него таблицу :P
лан,вроде так работает.....
спс за подсказку
lissyara писал(а):а ты используй имя в выборке.чтобы вернула одно значение или вообще не вернула.

Re: Списки из mysql в ACL

Добавлено: 2007-11-28 15:55:38
Alex Keda
список из одного пользователя - вполне его устроит, главное вызов построения списка в нужное место пристроить, чтоб он динамически менялся, от получателя/отправителя :)