Столкнулся c непонятками - как перевести настроенную систему из single domain в multidomains (virtual domains). Вкратце. Был один домен "dc=company,dc=ru.", емейлы хранились в attr=email, ou=users,dc=company,dc=ru. Добавили второй домен "dc=abdc,dc=ru.", с такой же схемой хранения емейл-ов. Как теперь удружить со всем этим делом sasl и cyrus-imap? Подробнее: Есть почтовая система на openldap, postfix, cyrus-imap(2.2.12), cyrus-sasl(2.1.21). Пользователи и их емейлы храняться в базе ldap в ветке ou=users,dc=company,dc=ru. Аттрибут Mail. К примеру: dn: uid=ivanov,ou=users,dc=company,dc=ru uid: ivanov mail: ivanov@company.ru objectClass: gosaMailAccount userPassword:: <........>= Для приема почты в Postfix-е настроен поиск нужных uid-ов/email-ов пользователей непосредственно в openldap базе, с этим проблем нет. Прием почты пользователями (через imap) и отправка ее пользователями через smpt postfix. Пользователи аутентифицируются при приеме/отправке указывая свой login(совпадающий с uid) и пароль. Сервера, в свою очередь, проверяют пользователей через cyrus-sasl. Sasl ,sk настроен следующим образом: ldap_servers: ldap://localhost/ ldap_bind_dn: cn=sasl,ou=DSA,dc=company,dc=ru ldap_bind_pw: <.............> ldap_version: 3 ldap_search_base: dc=company,dc=ru ldap_filter: (|(uid=%u)(cn=%u)) Параметры saslauthd: /usr/sbin/saslauthd -a ldap Настройки Cyrus-imap, imapd.conf sasl_mech_list: plain sasl_pwcheck_method: saslauthd username_tolower: 1 virtdomains: off Все хорошо до тех пор, пока не пришлось добавить еще одну компанию в базу ldap. Появилась ветка ou=users,dc=abcd,dc=ru. Соответственно, внутри емейлы выглядят так: dn: uid=petrov,ou=users,dc=abcd,dc=ru uid: petrov mail: petrov@abdc.ru objectClass: gosaMailAccount userPassword:: <........>= Возникает вопрос - как теперь интегрировать все это дело с sasl-ом и cyrus-imap. Как было сделано. Так как sasl-у нельзя указать несколько "ldap_search_base", приходится менять в saslauthd.conf следующее: ldap_search_base: dc=%2,dc=ru ldap_filter: (mail=%u) а запускать saslauthd с параметрами "-a ldap -r". В качестве логина пользователя теперь придется использовать не uid, а полный емейл, т.е. было "petrov", стало "petrov@abcd.ru". В результате "abcd.ru" распознается, как realm (согласно ключу "-r") и вторая его часть ("abdc") будет подставлена вместо "%2". Тем самым поиск по ldap-базе будет произвен, а нужный параметр (емейл адрес) найден. Sasl вернет "OK", если пароль пользователя совпадет. С Postfix-ом (на отправку) такая схема работает на ура, достаточно у пользователей изменить логин-ы вышеописанным способом и все. Большая сложность возникает с cyrus-imap-ом. Сервер получает необходимые для аутентификации login@realm/password, sasl возвращает ему "OK", но вот перейти к нужному почтовому ящику Cyrus-imap не может. Ведь он ищет почтовый ящик вида user@realm (в нашем случае ivanov@company.ru), а у него есть лишь ящики вида user.ivanov user.sidorov user.hrenov и так далее Возникает вопрос - как можно, сохранив неизменными уже созданные ящики, переключится на новую схему с несколькими доменами? Для вновь созданных пользователей по вышеописанной схеме, проблем быть не должно, ведь ящики вновь созданных пользователей примут вид user.ivanov@company.ru user.sidorov@company.ru user.hrenov@abcd.ru user.petrov@abcd.ru Но как быть с уже существующими ящиками? Cyrus-imap не поддерживает переименование корневых ящикив :( Возможно, надо копать в сторону поддержки виртуальных доменов virtdomains: on но я не понял, как это будет работать. У меня возникла идея найти параметр, который будет отрезать realm (все, что идет после символа '@' вместе с ним самим). Правда в этом случае придется заботится о поддержке уникальности uid-ов в различных доменов, но в моем случае uid-ы (логины пользователей без realm-ов) будут уникальными. К сожалению, я не нашел ни одного параметра, который бы позволял сделать это Вот эти два параметра что-то явно делают, но явно не то, что надо loginrealms: company.u abcd.ru afspts_localrealms: company.u abcd.ru так как при их активации (по одному или вместе), либо вообще нельзя было аутентифицироваться на imap-сервере, либо аутентификация проходила, но cyrus-imap не мог найти ящик пользователя (т.е., вероятно, искался ящик пользователя, явно не соответствующий его uid-у). Можно ли добиться решения моей задачи? В идеале, достаточно заставить cyrus отрезать realm лишь от первого домена (@company.ru), а все остальные - оставлять как есть. Ну или отрезать все realm-ы совсем, но предварительно передавать в sasl полный логин пользователя, вместе с realm-ом. Т.е. сначала в sasl передаем "ivanov@company.ru", а потом ищем почтовый ящик пользователя вида user.ivanov (т.е. используем в качестве имени ящика лишь "ivanov")
Ответ на:
комментарий
от DukeSS
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум cyrus-imapd && sasl realm (2006)
- Форум LDAP и Cyrus-imap (2009)
- Форум SASL проблема с LDAP авторизацией (2009)
- Форум Postfix и AD через SASL (2008)
- Форум Почтовые пользователи (2006)
- Форум sendmail+cyrus+ldap (2004)
- Форум ldap+ postfix (2018)
- Форум виртуальные пользователи Postfix + Cyrus Sasl (2016)
- Форум cyrus.imap +sasl +user@domain.com (2005)
- Форум помогите подружить связку Postfix, Courier, Saslauthd и thunderbird (2016)