LINUX.ORG.RU

Yet another webmail.


0

1

Появилось немного свободного времени, хочется поиграться с чем-то новым и интересным, при этом чтобы это было полезным. Единственное что приходит на ум - написать очередной вебмэйл клиент, посколько под него я смогу найти пользовательскую базу.

Хочется попрактиковаться в следующем:

  • Python. Посколько на питоне не писал ничего сложнее гуевых хелловорд, теряюсь с чего начать для веба. Копать в сторону django? Flask? web.py? Есть ли смысл пытаться разобраться что такое Twisted и, в частности, Twisted Mail?
  • Какое-нибудь NoSQL решение для хранения учетных записей, адресных книг, логов, сессий, а так же как кэш заголовков писем, фолдеров и счетчиков. Склоняюсь к MongoDB
  • Весь фронтэнд хочется целиком и полностью на ExtJS

Можно ли использовать эти технологии для написания webmail'a? Посоветуйте, отсоветуйте


можно но не взлетит, но не из-за технологий...

trashymichael ★★★ ()

Yet another webmail

Ты даже не представляешь сколько там нюансов и сколько костылей придется понавертеть.

Копать в сторону django? Flask? web.py?

Почитай документацию, оцени ее понятность, полноту. Так и выбирай.

Twisted Mail

Имхо, коробочных email и smtplib должно хватить.

ExtJS

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

baverman ★★★ ()

>Весь фронтэнд хочется целиком и полностью на ExtJS

Хочется - отлично, а на сайты его ставить не надо.

Yasenfire ()
Ответ на: комментарий от baverman

> Ты даже не представляешь сколько там нюансов и сколько костылей придется понавертеть.

Ну кое-что представляю. В свое время внедряли Roundcube. Глюков ловил немеряно, патчей выслал еще больше, и собственных костылей запиливал постоянно. Но посколько он ущербен во всем (в архитектуре, в собственной имплементации IMAP, в API для плагинов, в шаблонах, в JS и прочем), то пытаться его использовать, а уж тем более поддерживать, бесполезно.

Свою поделку, однако, не собираюсь делать заменой даже Roundcube. Большей частью для себя, чтобы получить икспириенс и левел-ап.

Почитай документацию, оцени ее понятность, полноту. Так и выбирай.

Этим и занимаюсь в данный момент.

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

Собственный огород из jQuery и jQuery UI будет немногим лучше. Видел у одного хостера вебмэйл на ExtJs, работало как часы. И по удобству не сливало десктопным клиентам.

В чем недостатки ExtJs помимо монструозности и скорости?

BobiKK ()
Ответ на: комментарий от BobiKK

В свое время внедряли Roundcube

Хе-хе. Я с ним кувыркался во времена первых бета-версий.

В чем недостатки ExtJs помимо монструозности и скорости?

Если ставить вопрос так, тогда никаких.

В качестве pet-project пойдет. Задача достаточно сложная — опыт получишь точно, удачи.

baverman ★★★ ()

Какое-нибудь NoSQL решение для хранения учетных записей, адресных книг, логов, сессий, а так же как кэш заголовков писем, фолдеров и счетчиков. Склоняюсь к MongoDB

а разве MTA/MDA умеют NoSQL?

xpahos ★★★★★ ()
Ответ на: комментарий от xpahos

А зачем им это уметь? Я MTA/MDA трогать не собираюсь, письма будут отправляться через заранее определенный SMTP сервер. Что он из себя будет представлять вообще все равно.

А MongoDb нужен для хранения настроек отдельных пользователей и как кэш писем. Не хочется при каждом клике делать 100500 запросов к IMAPу, чтобы вытащить список фолдеров, количество непрочитанных сообщений, количество сообщений в каждом фоледере, размер ящика, заголовки сообщений да и сами сообщения.

BobiKK ()

> Можно ли использовать эти технологии для написания webmail'a? Посоветуйте, отсоветуйте

Можно. Разрешаю.

Можно еще на С, С++, ассемблере, лиспе, bash, Perl, ...
А то пистон - это как-то попсово :) :P

Harald ★★★★★ ()
Ответ на: комментарий от BobiKK

А MongoDb нужен для хранения настроек отдельных пользователей и как кэш писем. Не хочется при каждом клике делать 100500 запросов к IMAPу, чтобы вытащить список фолдеров, количество непрочитанных сообщений, количество сообщений в каждом фоледере, размер ящика, заголовки сообщений да и сами сообщения.

зачем это дублировать, если можно настроить postfix + dovecot + mysql ?

xpahos ★★★★★ ()
Ответ на: комментарий от BobiKK

> Не хочется при каждом клике делать 100500 запросов к IMAPу

Делать 100500 запросов к монге не лучше.

redixin ★★★★ ()
Ответ на: комментарий от xpahos

Что конкретно можно настроить? Использовать mysql вместо mbox или maildir?

BobiKK ()
Ответ на: комментарий от BobiKK

Что конкретно можно настроить? Использовать mysql вместо mbox или maildir?

Да, хранить все в MySQL.

xpahos ★★★★★ ()
Ответ на: комментарий от redixin

> Делать 100500 запросов к монге не лучше.

Смысл в том, чтобы и не делать 100500 запросов. Поскольку не нужно действовать только в рамках IMAP протокола, можно оптимизировать логику запросов и сами запросы под конкретные задачи.

Ну, и судя по всем статьям, сравнениям и документации монга таки быстрая. И масштабируемость в разумных пределах поддерживается без особых костылей. А вот оттюнинговать dovecot, который бы выдерживал большие нагрузки (в случае вебмейлов это так и есть), совсем не тривиально. Монга в данном случае поможет снизить нагрузку на dovecot.

В любом случае выслушаю ваши аргументы с радостью

BobiKK ()
Ответ на: комментарий от BobiKK

> В любом случае выслушаю ваши аргументы с радостью

Вы занимаетесь преждевременной оптимизацией

redixin ★★★★ ()
Ответ на: комментарий от redixin

> Вы занимаетесь преждевременной оптимизацией

На прошлой работе имелось несколько стареньких серверов c dovecot'ом. Было порядка 200,000 клиентов, которые пользовались IMAPом через обычные десктопные клиенты и были счастливы. Предложили клиентам фичастый вебмэйл. Нагрузка возрасла настолько, что потребовался апгрейд инфраструктуры на много-много килобаксов. Из-за возросших на порядок запросов к IMAP, CPU load был стабильно 100%, индексы бились, dovecot лежал время от времени.

На самом деле, здесь не столько преждевременная оптимизация, сколько я задачу себе такую ставлю: не перенагружать imap сервер. В любом случаем, хранить в монге заговки писем, данные по фолдерам - это как дополнительная отключаемая фича. Но предусмотреть такую возможность лучше изначально, наверное.

BobiKK ()
Ответ на: комментарий от BobiKK

> Но предусмотреть такую возможность лучше изначально

Естественно. Но делать ее сразу — совсем не обязательно.

redixin ★★★★ ()
Ответ на: комментарий от BobiKK

И да, монга тоже замечательно умеет грузить проц и бить индексы.

redixin ★★★★ ()
Ответ на: комментарий от redixin

> И да, монга тоже замечательно умеет грузить проц и бить индексы.

Это понятно. Кривизну рук не спасет ни монга, ни любое другое решение.

Судя по комментариям у Вас был не самый положительный опыт работы с монгой, да?

BobiKK ()
Ответ на: комментарий от BobiKK

> был не самый положительный опыт работы с монгой

Почему был? Он есть. Борюсь))

redixin ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.