URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 96844
[ Назад ]

Исходное сообщение
"dovecot и два разных пароля на разное содержимое"

Отправлено fevil , 16-Мрт-17 11:00 
Давайте поразмышляем каким образом в dovecot либо другом imap-сервере можно реализовать механизм, когда на один почтовый ящик есть два пароля. При входе по одному доступно содержимое стандартных подписанных папок, а при входе под другим появляются дополнительные папки.
Вопрос делиться как бы на две задачи. Каким образом реализовать схему авторизации, тут надо реализовать некий алгоритм привязки пользователя к уникальному id и в зависимости от пароля перейти к след задаче.
А вторая задача каким образом можно скрывать папки. Пока вижу только способ выполнять post-login сценарий который в зависимости от метки авторизации меняет например права на файловой системе, что повлечет недоступность части папок, но тут скорее всего почтовый клиент будет ругаться на ошибки.
У кого есть какие мысли поделитесь пожалуйста.

Содержание

Сообщения в этом обсуждении
"dovecot и два разных пароля на разное содержимое"
Отправлено omnomnin , 16-Мрт-17 15:46 
> У кого есть какие мысли поделитесь пожалуйста.

берёте сырцы довекота, гцц и ваш любимый текстовый редактор и впиливаете сей изврат



"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 16-Мрт-17 16:07 
> берёте сырцы довекота, гцц и ваш любимый текстовый редактор и впиливаете сей
> изврат

спасибо,но слишком координально, и потом маинтенить придется,
все же предпочту стандартными методами решить задачу тем более два пароля уже научился делать: создал де записи

passdb {
описание одного соответствия login/password
}

passdb {
описание второго соответствия login/password
}


userdb {
******
}


теперь могу логинится либо под одним паролем либо под другим, но вот как передавать разный mail_location и  mail_home остается вопросом.


"dovecot и два разных пароля на разное содержимое"
Отправлено PavelR , 16-Мрт-17 18:37 
> теперь могу логинится либо под одним паролем либо под другим, но вот
> как передавать разный 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';


и сделайте то, что вам нужно.


"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 17-Мрт-17 08:47 
это уже ближе и  справедливо для случая когда один пароль для imap, второй пароль для pop3,
в моем случае оба пользователя заходят по imap. '%s' в обоих случаях будет == imap.

Вроде как в моем случае должен работать вариант  

userdb {
  driver = prefetch
}

и в запросах описанных в passdb передавать 'mail' и 'home', но либо я не верно понял
либо ошибаюсь mail_location не переопределяется. Пока думаю как передать параметр из passdb в userdb ...


"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 17-Мрт-17 16:10 
задача решена!!! переменная %{userdb:mail}

"dovecot и два разных пароля на разное содержимое"
Отправлено PavelR , 17-Мрт-17 16:43 
>[оверквотинг удален]
> в моем случае оба пользователя заходят по imap. '%s' в обоих случаях
> будет == imap.
> Вроде как в моем случае должен работать вариант
> userdb {
>   driver = prefetch
> }
> и в запросах описанных в passdb передавать 'mail' и 'home', но либо
> я не верно понял
> либо ошибаюсь mail_location не переопределяется. Пока думаю как передать параметр из passdb
> в userdb ...

Так не обязательно %s использовать и в вашем случае вообще не нужно.
Условие можно проверять по любой переменной, либо можно вообще не проверять, а в базе в отдельном поле хранить нужные данные.

Решена - и ладно )


"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 17-Мрт-17 16:48 
я именно застрял в поисках переменной в которой передать нужный путь, поэтому акцентировал на %s. В документации немного расплывчато описаны переменные.
спасибо за помощь.


"dovecot и два разных пароля на разное содержимое"
Отправлено XAnder , 17-Мрт-17 09:13 
> У кого есть какие мысли поделитесь пожалуйста.

Мысль насчёт альтернативного решения: сделать второго пользователя и в его ящик (maildir) накидать символических ссылок на каталоги первого пользователя кроме тех, которые нужно скрыть.


"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 17-Мрт-17 10:27 
решение имеет право на жизнь, но опять же, задача чтобы пользователь был один.
Тут цель средствами почты  некий хелпдеск сделать, есть дневная смена и ночная и у каждого свои задачи, но логин один должен быть с разными паролями.


"dovecot и два разных пароля на разное содержимое"
Отправлено Тихомиров , 17-Мрт-17 11:21 
> решение имеет право на жизнь, но опять же, задача чтобы пользователь был
> один.
> Тут цель средствами почты  некий хелпдеск сделать, есть дневная смена и
> ночная и у каждого свои задачи, но логин один должен быть
> с разными паролями.

не проще ли тогда кроном менять содержимое ящика?


"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 17-Мрт-17 11:48 
> не проще ли тогда кроном менять содержимое ящика?

проще, но теряется возможность просмотреть "свой" ящик в неурочное время.


"dovecot и два разных пароля на разное содержимое"
Отправлено PavelR , 21-Мрт-17 08:29 
>> не проще ли тогда кроном менять содержимое ящика?
> проще, но теряется возможность просмотреть "свой" ящик в неурочное время.

Можно сделать два ящика с постоянным содержимым и один ящик, у которого каталог задается переключаемым симлинком.


"dovecot и два разных пароля на разное содержимое"
Отправлено fevil , 17-Мрт-17 16:12 
все задача решена, локейшин передается через %{userdb:mail}

"dovecot и два разных пароля на разное содержимое"
Отправлено Жора , 18-Мрт-17 16:20 
> все задача решена, локейшин передается через %{userdb:mail}

Опубликуйте готовое решение,будет полезно сохранить на будущее.