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

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-23 15:32:41

подскажите где я ошибся?
авторизация из 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 {}

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

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-23 16:52:00

вот 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}}

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-24 9:52:47

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

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-24 10:04:31

попробовал, получаю вот что

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-24 11:22:43

одну ошибку я нашел, 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}}}\
}}

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-24 14:31:20

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

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-24 14:37:40

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
в этом случае так , пропущена переменная

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-24 14:47:31

они у меня вроде как разбиты я да же выше показывал из оба по отдельности, ну никак не выходит каменный цветок, мастер!

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-24 15:09:01

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

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-24 15:16:57

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 этой конструкцией в логе это.... что то я уже совсем запутался (((

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-25 10:00:40

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

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-25 10:14:51

дааа! так заработало!
теперь надо проверить вторую часть и соединить ))

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-25 10:24:42

со второй частью где 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}}\
}\
}

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-25 11:10:16

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

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-25 11:40:58

почти верштейн, у меня мозги плавятся от жары....

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

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

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-25 11:50:08

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

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-25 12:00:17

в результате получилась такая конструкция

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

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-25 12:05:43

Содержимое /etc/exim/passwd какое?

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-25 12:09:07

test@test.ru:пароль

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

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

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

Непрочитанное сообщение blade_007 » 2011-07-25 12:13:09

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

$ 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 и поставьте на нужные места.

mailo
ефрейтор
Сообщения: 53
Зарегистрирован: 2011-05-09 17:28:11

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

Непрочитанное сообщение mailo » 2011-07-25 12:35:16

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


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