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

Куда конкретно надо вставить sql запрос в конфиг Exim?

Добавлено: 2009-06-24 9:49:48
bobot
Вот что я пытаюсь сделать:
вот таблицы в мускуле

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

таблица юзеров                                                    таблица domains
login     password  domain_id                                  id       domain
fffff      dsdsdsds    1                                               1      newmail.univ.kiev.ua
sdss      sdsdsdds     2                                              2      testmail.univ.kiev.ua
dsdsd    sdsdsdss     3                                               3      ukr.net
dsds     sdsdsdsds    1
и потом в конфиге экзима указать sql запрос

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

 ${lookup mysql{SELECT domain, user FROM domains, users WHERE id = domain_id}}
Вот где именно его вставлять надо?????

Re: Куда конкретно надо вставить sql запрос в конфиг Exim?

Добавлено: 2009-06-24 10:10:37
Laa
Ну там, где идут проверки на домен.

Вот пример, даже два:

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

...
# начало конфига exim.
MYSQL_Q_ALIASES=SELECT recipients FROM aliases WHERE local_part='${local_part}' AND domain='${domain}'
MYSQL_Q_DICTONARY_ATTACK_INSERT=INSERT INTO dict_attacks (ip,rcpt,helo,sndr) \
        VALUES ('${quote_mysql:$sender_host_address}',\
        '${quote_mysql:$local_part@$domain}',\
        '${quote_mysql:$sender_helo_name}',\
        '${quote_mysql:$sender_address}')
...

begin acl
...
acl_check_rcpt:
...
        deny    domains         = +local_domains : +relay_to_domains
                !verify         = recipient
                message         = Unknown account <$local_part@$domain>
                set acl_m_dictinsert= ${lookup mysql{MYSQL_Q_DICTONARY_ATTACK_INSERT}}
                delay           = 7s
...
...
begin routers
...
system_aliases:
  driver                = redirect
  allow_fail
  allow_defer
  file_transport        = address_file
  pipe_transport        = address_pipe
  user                  = mailnull
  group                 = mail
  data                  = ${lookup mysql{MYSQL_Q_ALIASES}}
...
Я советую сразу вам делать login=login@domain (целый емыл), а не отделять домен от local_part.

Успехов.

Re: Куда конкретно надо вставить sql запрос в конфиг Exim?

Добавлено: 2009-06-24 10:19:48
bobot
Laa писал(а):Ну там, где идут проверки на домен.
Ну у меня вот вначале exima такие строчки

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

domainlist local_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRTUAL')}}

Так что вместо этого? или там есть ещё

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

virtual_localuser:
  driver = accept
  domains = ${lookup mysql{SELECT domain from domains WHERE domain='${domain}'}}
 local_parts = ${lookup mysql{SELECT login from users WHERE login='${local_part}' AND domain='${domain}'}}
Так какой надо править?

Re: Куда конкретно надо вставить sql запрос в конфиг Exim?

Добавлено: 2009-06-24 10:40:18
Laa
Вот это

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

    virtual_localuser:
      driver = accept
      domains = ${lookup mysql{SELECT domain from domains WHERE domain='${domain}'}}
     local_parts = ${lookup mysql{SELECT login from users WHERE login='${local_part}' AND domain='${domain}'}}
Лучше сделать так:

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

    virtual_localuser:
      driver = accept
      domains = +local_domains
Чтобы без толку не дергать sql зазря. На большой нагрузке каждый лишний запрос становится вредным.
Да и домены, если у вас не изменяются раз в час, то лучше списком внутри конфига прописать и не трогать, чем каждый раз практически статическую информацию из базы выдергивать. :fool:

Re: Куда конкретно надо вставить sql запрос в конфиг Exim?

Добавлено: 2009-06-24 23:37:56
Alex Keda
а я бы в файл записал...
благо вместо списка в конфиге можно указать полный путь к файлу.