виктор стародуб
TRANSCRIPT
IMAP в Почте Mail.ru
Готовые реализации
Dovecot
UV IMAP
Courier IMAP
Cyrus IMAP
…
История POP3 и IMAP
История
POP POP2 POP3
IMAP IMAP2
’84 ’85 ’86 ‘88
История
POP POP2 POP3 APOP UIDL SSL
IMAP IMAP2 IMAP4 IMAP4r1 IDLESSL
’84 ’85 ’86 ‘88 ’93 ’94 ’96 ’97
История
POP POP2 POP3 APOP UIDL SSL STLS POP4(?)
IMAP IMAP2 IMAP4 IMAP4r1 IDLE STLS UIDPLUS XLISTSSL
’84 ’85 ’86 ‘88 ’93 ’94 ’96 ’97 ’99 ’03 ’05 ‘08
История
POP POP2 POP3 APOP UIDL SSL STLS POP4(?)
IMAP IMAP2 IMAP4 IMAP4r1 IDLE STLS UIDPLUS XLISTSSL
’84 ’85 ’86 ‘88 ’93 ’94 ’96 ’97 ’99 ’03 ’05 ‘08
IMAP-клиенты
IMAP-клиенты
Мобильные Десктопные
iPhone 30% iPad 20%
Android и другие 30%
Thunderbird 10%
MacOS X Mail 3%
Outlook 3%
Другие desktop 4%
Десктопные клиенты
флаги / uid-ы сообщений
список сообщений
тела всех сообщений
выбор папки
nop / idle
поиск N последних сообщений
страница списка сообщений, сниппеты
выбор папки
nop / idle
Мобильные клиенты
текст отображаемого письма
картинки
Архитектура
Архитектура
клиентpop3-фронтенд
хранилище авторизация
imap-фронтенд
веб-фронтенд
Хранилище
хранилище определяет архитектуру
хранилище уже написано
переиндексация – дорого
Нагрузка
разнообразная нагрузка
длинные сессии, несколько сессийот пользователя
10000 одновременных соединений
Нагрузка
epoll
короткие сессии с хранилищем
кэширование
Проблемы и Хаки
Работа с папками
удаление писем
эмуляция move
Получение писем
получение с хранилища
хаки для android-клиентов
test-driven development
Будущее
Будущее
приведение к RFC / удаление всех хаков
полнотекстовый поиск
push-уведомления
расширения IMAP