Списки из mysql в ACL

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Списки из mysql в ACL

Непрочитанное сообщение Al » 2007-11-27 19:20:34

Задача такая: есть парочка тупых программ, которые не умеют писать отправителя. Надо разрешить получать почту от этих падонкаф и при этом не отключать проверку существования обратного адреса.
Реализовать решилось так:

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

# делаем список пользователей, которые в локальном 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")
это правильно или косяк??? есть подводные камни????

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2007-11-27 20:17:03

а ты используй имя в выборке.
чтобы вернула одно значение или вообще не вернула.
Убей их всех! Бог потом рассортирует...

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

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

Непрочитанное сообщение Al » 2007-11-27 23:08:49

Т.е. примерно так:

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

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2007-11-27 23:12:01

типа того
Убей их всех! Бог потом рассортирует...

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

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

Непрочитанное сообщение Al » 2007-11-28 13:21:35

заработало так:

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

  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 ???

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2007-11-28 13:32:25

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

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

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

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

Непрочитанное сообщение Al » 2007-11-28 15:29:33

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2007-11-28 15:55:38

список из одного пользователя - вполне его устроит, главное вызов построения списка в нужное место пристроить, чтоб он динамически менялся, от получателя/отправителя :)
Убей их всех! Бог потом рассортирует...