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

exim авторизация из 2х баз

Добавлено: 2011-07-23 15:32:41
mailo
подскажите где я ошибся?
авторизация из LDAP и из файла

PLAIN:
driver = plaintext
public_name = PLAIN
server_condition = ${if or {${saslauthd{{$2}{$3}}{1}{0}}\
{lookup{$auth1}lsearch{/etc/exim/passwd} {$value} {false} }}}
server_set_id = $2


_____________
лог

PLAIN authenticator failed for ([10.10.10.10]) [10.10.10.10]: 435 Unable to authenticate at present (set_id=name@domain.ru): each subcondition inside an "or{...}" condition must be in its own {}

вижу что скобки но не могу понять где (

Re: exim авторизация из 2х баз

Добавлено: 2011-07-23 16:52:00
mailo
вот 2 рабочих аунтефикатора из которых пытаюсь сделать один, раздельно все работает.

два рабочих аунтификатора

PLAIN:
driver = plaintext
public_name = PLAIN
server_condition = ${if saslauthd{{$2}{$3}}{1}{0}}
server_set_id = $2

и второй

PLAIN:
driver = plaintext
public_name = PLAIN
server_set_id = $auth2
server_prompts = :
server_condition = ${lookup{$auth2}lsearch{/etc/exim/passwd} {${if eq{$value}{$auth3} }} {false}}

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 9:52:47
blade_007

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

${if or {\
{${saslauthd{{$2}{$3}}{1}{0}}}\
 {lookup{$auth1}lsearch{/etc/exim/passwd} {$value} {false} }\
}\
}
попробуйте так.

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 10:04:31
mailo
попробовал, получаю вот что

PLAIN authenticator failed for ([10.1.1.2]) [10.1.1.2]: 435 Unable to authenticate at present (set_id=test@test.ru): condition name expected, but found "${saslauthd{{$2}" inside "or{...}" condition

целиоком блок выглядит так

PLAIN:
driver = plaintext
public_name = PLAIN
server_condition = ${if or {\
{${saslauthd{{$2}{$3}}{1}{0}}}\
{lookup{$auth1}lsearch{/etc/exim/passwd} {$value} {false} }\
}\
}
server_set_id = $2

меня еще смущает то что должно правильно ли проставлена переменная в server_set_id

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 11:22:43
mailo
одну ошибку я нашел, if стоял не там,
теперь такая петрушка.....
PLAIN authenticator failed for ([10.1.1.2]) [10.1.1.2]:
435 Unable to authenticate at present (set_id=test@test.ru): { or{{if saslauthd{{test@test.ru}{123123}}{1}{0}}{false}}}

PLAIN:
driver = plaintext
public_name = PLAIN
server_set_id = $2
server_condition = { or{\
{if saslauthd{{$2}{$3}}{1}{0}}\
{${lookup{$auth1}lsearch{/etc/exim/passwd}{$value}{false}}}\
}}

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 14:31:20
blade_007

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

server_condition = ${if or{\
{eq{1}{${saslauthd{{$2}{$3}}}}}\
{${lookup{$auth1}lsearch{/etc/exim/passwd}{$value}{false}}}\
}\
}
Я бы разбил на части сначала и довел до ума каждую, потом слеплял.

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 14:37:40
mailo
PLAIN authenticator failed for ([10.1.1.2]) [10.1.1.2]: 435 Unable to authenticate at present (set_id=test@test.ru): "${saslauthd" is not a known operator (or a } is missing in a variable reference) inside "or{...}" condition
в этом случае так , пропущена переменная

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 14:47:31
mailo
они у меня вроде как разбиты я да же выше показывал из оба по отдельности, ну никак не выходит каменный цветок, мастер!

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 15:09:01
blade_007

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

${if or{\
{if saslauthd{{$2}{$3}}{1}{0}}\
{eq{1}{1}}\
}}
Как вариант разбиения на подзадачи каждую из проверок. Т.е. условие будет =1, если либо saslauthd вернет 1, либо 1=1.

Re: exim авторизация из 2х баз

Добавлено: 2011-07-24 15:16:57
mailo
PLAIN authenticator failed for ([10.1.1.2]) [10.1.1.2]: 435 Unable to authenticate at present (set_id=test@test.ru): unknown condition "if" inside "or{...}" condition
c этой конструкцией в логе это.... что то я уже совсем запутался (((

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 10:00:40
blade_007

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

${if or{\
{saslauthd{{$2}{$3}}}\
{eq{1}{1}}\
}\
}

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 10:14:51
mailo
дааа! так заработало!
теперь надо проверить вторую часть и соединить ))

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 10:24:42
mailo
со второй частью где lookup то же проблема
435 Unable to authenticate at present (set_id=test@test.ru): condition name expected, but found "${lookup{$2}lsea" inside "or{...}" condition

server_condition = ${if or{\
{${lookup{$2}lsearch{/etc/exim/passwd}}}\
{eq{1}{1}}\
}\
}

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 11:10:16
blade_007

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

${if or{\
{eq{$auth1}{${lookup{$auth1}lsearch{/etc/exim/passwd}{$value}{false}}}}\
{eq{1}{1}}\
}\
}
Здесь та же логика, только то, что возвращает lookup (в вашем случае это либо пароль, либо FALSE) сравнивается с тем, что в переменной $auth1. Если они равны - хорошо, если нет - двигайтесь в указанном направлении. Ферштейн?

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 11:40:58
mailo
почти верштейн, у меня мозги плавятся от жары....

server_condition = ${if or{\
{eq{$auth1}{${lookup{$auth1}lsearch{/etc/exim/passwd}{$value}{false}}}}\
{saslauthd{{$2}{$3}}}\
{eq{1}{1}}\
}\
}

получается так?

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 11:50:08
blade_007
{eq{1}{1}}\ - это добавлено для отладки, как все заработает нужно обязательно убрать.
Хотя если поменять на {eq{0}{1}}\ - то можно и оставить, потому как всегда будет возвращаться false. счас для вас главное отладить lookup.

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 12:00:17
mailo
в результате получилась такая конструкция

PLAIN:
driver = plaintext
public_name = PLAIN
server_set_id = $2
server_condition = ${if or{\
{eq{$2}{${lookup{$2}lsearch{/etc/exim/passwd}{$value}{false}}}}\
{saslauthd{{$2}{$3}}}\
}\
}


пароли через SASL принимает, а в файле нет (((
я поправил $auth1 на $2 так как в server_set_id стоит $2

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 12:05:43
blade_007
Содержимое /etc/exim/passwd какое?

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 12:09:07
mailo
test@test.ru:пароль

опять же если мы разделили то все работало, обьединил из sasl работает из файла нет (

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 12:13:09
blade_007

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

$ cat tt2 
test:testpass
$ sudo exim -be
> ${if or{{eq{testpass}{${lookup{test}lsearch{/home/OFFICE/skyworker/tt2}{$value}{false}}}}{eq{0}{1}}}}
true
> ${if or{{eq{testpass1}{${lookup{test}lsearch{/home/OFFICE/skyworker/tt2}{$value}{false}}}}{eq{0}{1}}}}

>
Обратите внимание: я ищу по имени юзера (test) пароль (testpass), затем сравниванию его. Проверьте переменные auth1 и auth2 и поставьте на нужные места.

Re: exim авторизация из 2х баз

Добавлено: 2011-07-25 12:35:16
mailo
server_condition = ${if or{\
{eq{$3}{${lookup{$2}lsearch{/etc/exim/passwd}{$value}{false}}}}\
{saslauthd{{$2}{$3}}}\
}\
}


да все верно, вот рабочая конструкция. Спасибо огромнейшее!