Страница 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}}}\
}\
}
да все верно, вот рабочая конструкция. Спасибо огромнейшее!