Работа с авторизацией на IMAP сервере

killer67

Новичок
О проекте: Это портал с множественными модулями один из них это почта.

Вопрос:
Как авторизовать пользователя в IMAP если он авторизовался на портале?

Условия:
1. Пароли в почте и на портале одинаковые.
2. Пароль (в открытом виде) нельзя сохранять в куках (это же логично :0) )
 

fixxxer

К.О.
Партнер клуба
Самое простое - сконфигурировать imap-сервер так, чтобы он проверял логин-пароль из той же точки, откуда это делает твой "портал".
Как это сделать - выбирай сам: sql-запросом, http-запросом, вызовом внешней команды, завернуть все в ldap... Вариантов тут стопицот, выбирай на вкус.

(Ну это конечно, если у тебя в качестве imap-сервера что-то вменяемое, скажем, dovecot или courier-imap какой-нибудь).
 

killer67

Новичок
Самое простое - сконфигурировать imap-сервер так, чтобы он проверял логин-пароль из той же точки, откуда это делает твой "портал".
Как это сделать - выбирай сам: sql-запросом, http-запросом, вызовом внешней команды, завернуть все в ldap... Вариантов тут стопицот, выбирай на вкус.

(Ну это конечно, если у тебя в качестве imap-сервера что-то вменяемое, скажем, dovecot или courier-imap какой-нибудь).
на данный момент Dovecot тоже имеет свою БД в MySQL и пользователи там хранятся (логин и пароль) в том же виде.

Только 2 проблемы возникает:

1. ПХП после своего выполнения напрочь забывает что он только что делал, и потом что бы вспомнить использует либо сессии либо куки (в плане авторизации)
- От сюда вопрос: Как сохранить авторизацию на IMAP сервере, ведь после каждого выполнения скрипта (по хорошему тону) нужно выполнять imap_close().
Получается что:
- при входе в почтовый модуль ПХП нужен пароль что бы открыть папку входящие.
- при переходе по любым папкам почтового ящика (а их минимум 4 (входящие, исходящие, черновики, корзина)) ПХП нужно передавать пароль для нового imap_open();

2. При консольном проходе по всем ящикам (что бы перенести их содержимое в БД (еще один из экспериментов)) в ПХП так же надо передать пароль от ящика в открытом виде, т.к. пароль что в портале, что в почте зашифрованы.

Итог:
Авторизация (на форуме, портале, чате и т.п.) сохраняется в куках и/или сессиях, а как сохранить авторизацию от IMAP сервера при условии что скрипт после своей отработки выполняет imap_close()?
 

killer67

Новичок
каждый раз делать imap_open, + то что хотел пользователь + imap_close ( при работе с базой данных ты делаешь тоже самое )
При работе с БД там все статично, а вот при работе с почтой уже нет статики, пользователи меняются и пароли тоже, где брать третий параметр для imap_open()?
 

WMix

герр M:)ller
Партнер клуба
хоть из базы хоть из сессии. куда положешь
 

michelle

Новичок
А посмотри как это делает roundcube или squirrelmail - веб морды для почты - работают по imap.
 

killer67

Новичок
А посмотри как это делает roundcube или squirrelmail - веб морды для почты - работают по imap.
Я уже думал об этом, но думал тут быстрее помогут, ну или разберусь быстрее.
Дело в том что я пытался разобраться по ним как открыть тело сообщения, но увы...


Например, хранить сессию в redis/memcached/etc и научить dovecot туда ходить по session id вместо пароля.
Довесок нет смысла так хранить ведь он должен отвечать и на запросы клиентских программ
 
Последнее редактирование:

killer67

Новичок
Кто нить делал что то подобное?
Может поделитесь опытом?

В переди ещё много интересных проектов, и все это будут модули для единого портала...

PS. Готовые клиенты типа rouncube, squirrelmail и т.п. не предлагать
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в какой форме ты хочешь опыт?
русскими словами как можно сделать тебе написали
 
Сверху