Давайте поразмышляем каким образом в dovecot либо другом imap-сервере можно реализовать механизм, когда на один почтовый ящик есть два пароля. При входе по одному доступно содержимое стандартных подписанных папок, а при входе под другим появляются дополнительные папки.
Вопрос делиться как бы на две задачи. Каким образом реализовать схему авторизации, тут надо реализовать некий алгоритм привязки пользователя к уникальному id и в зависимости от пароля перейти к след задаче.
А вторая задача каким образом можно скрывать папки. Пока вижу только способ выполнять post-login сценарий который в зависимости от метки авторизации меняет например права на файловой системе, что повлечет недоступность части папок, но тут скорее всего почтовый клиент будет ругаться на ошибки.
У кого есть какие мысли поделитесь пожалуйста.
> У кого есть какие мысли поделитесь пожалуйста.берёте сырцы довекота, гцц и ваш любимый текстовый редактор и впиливаете сей изврат
> берёте сырцы довекота, гцц и ваш любимый текстовый редактор и впиливаете сей
> извратспасибо,но слишком координально, и потом маинтенить придется,
все же предпочту стандартными методами решить задачу тем более два пароля уже научился делать: создал де записиpassdb {
описание одного соответствия login/password
}passdb {
описание второго соответствия login/password
}
userdb {
******
}
теперь могу логинится либо под одним паролем либо под другим, но вот как передавать разный mail_location и mail_home остается вопросом.
> теперь могу логинится либо под одним паролем либо под другим, но вот
> как передавать разный mail_location и mail_home остается вопросом.посмотрите на этот пример:
user_query = SELECT CONCAT('/var/spool/postfix/virtual/',maildir) AS home, '125' AS uid, '125' AS gid, \
CASE '%s' WHEN 'pop3' THEN 'no' ELSE 'yes' END AS 'userdb_namespace/inbox/inbox', \
CASE '%s' WHEN 'pop3' THEN 'yes' ELSE 'no' END AS 'userdb_namespace/virtualpop3/inbox' \
FROM mailbox WHERE username = '%u';
и сделайте то, что вам нужно.
это уже ближе и справедливо для случая когда один пароль для imap, второй пароль для pop3,
в моем случае оба пользователя заходят по imap. '%s' в обоих случаях будет == imap.Вроде как в моем случае должен работать вариант
userdb {
driver = prefetch
}и в запросах описанных в passdb передавать 'mail' и 'home', но либо я не верно понял
либо ошибаюсь mail_location не переопределяется. Пока думаю как передать параметр из passdb в userdb ...
задача решена!!! переменная %{userdb:mail}
>[оверквотинг удален]
> в моем случае оба пользователя заходят по imap. '%s' в обоих случаях
> будет == imap.
> Вроде как в моем случае должен работать вариант
> userdb {
> driver = prefetch
> }
> и в запросах описанных в passdb передавать 'mail' и 'home', но либо
> я не верно понял
> либо ошибаюсь mail_location не переопределяется. Пока думаю как передать параметр из passdb
> в userdb ...Так не обязательно %s использовать и в вашем случае вообще не нужно.
Условие можно проверять по любой переменной, либо можно вообще не проверять, а в базе в отдельном поле хранить нужные данные.Решена - и ладно )
я именно застрял в поисках переменной в которой передать нужный путь, поэтому акцентировал на %s. В документации немного расплывчато описаны переменные.
спасибо за помощь.
> У кого есть какие мысли поделитесь пожалуйста.Мысль насчёт альтернативного решения: сделать второго пользователя и в его ящик (maildir) накидать символических ссылок на каталоги первого пользователя кроме тех, которые нужно скрыть.
решение имеет право на жизнь, но опять же, задача чтобы пользователь был один.
Тут цель средствами почты некий хелпдеск сделать, есть дневная смена и ночная и у каждого свои задачи, но логин один должен быть с разными паролями.
> решение имеет право на жизнь, но опять же, задача чтобы пользователь был
> один.
> Тут цель средствами почты некий хелпдеск сделать, есть дневная смена и
> ночная и у каждого свои задачи, но логин один должен быть
> с разными паролями.не проще ли тогда кроном менять содержимое ящика?
> не проще ли тогда кроном менять содержимое ящика?проще, но теряется возможность просмотреть "свой" ящик в неурочное время.
>> не проще ли тогда кроном менять содержимое ящика?
> проще, но теряется возможность просмотреть "свой" ящик в неурочное время.Можно сделать два ящика с постоянным содержимым и один ящик, у которого каталог задается переключаемым симлинком.
все задача решена, локейшин передается через %{userdb:mail}
> все задача решена, локейшин передается через %{userdb:mail}Опубликуйте готовое решение,будет полезно сохранить на будущее.