/** * TODO: * + скачивание вложений * - сохранять заголовки в БД и возможно сохранять сообщения целиком ещё где-то * - пометка прочитанным, просмотренным (seen) * - фоновая индексация всех текстов сообщений в ящике * - написание сообщений * - ответ, пересылка * - подсказка адресов * - отправка вложений * - пометить прочтённым/непрочтённым * - переместить * - удалить * - пометить как спам * - живое обновление (подписка view на новые сообщения) * - настройки группировки (дата/прочитано/отмечено) * - настройки сортировки (дата/тема/размер/возможно отправитель) * - thread'ы (дискуссии) * - метки (если вообще нужно) * - совсем фантазии: интеграция с maillog'ом и серверным спамфильтром */ /** * Нужные методы API: * - список аккаунтов и папок * - список сообщений в папке * - содержимое сообщения * - поиск по тексту * - список тредов в папке, с сообщениями * - проверить почту * - пометить прочтённым * - переместить * - удалить * - подсказка адресов To * - отправить сообщение * * В определённом плане получается тупость - получается, что дублируешь * функционал самого почтового сервера. Но шо ж с ним поделаешь, если он "ни ф силах"... * Ведь по сути-то, MTA от такой штуки нужен только 1 метод: "добавить сообщение в папку". * * Но для сохранения совместимости с IMAP тут два пути - либо тащить всё к себе и потом * делать свой IMAP сервер, либо всё-таки мучаться и дублировать функционал. */ process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; if (process.env.DEBUG) { global.Promise = require('bluebird'); global.Promise.config({ longStackTraces: true }); } const pg = require('pg'); const Syncer = require('./Syncer.js'); const SyncerWeb = require('./SyncerWeb.js'); async function startSync(cfg) { let dbh = new pg.Client(cfg.pg); await dbh.connect(); let syncer = new Syncer(dbh); let syncerweb = new SyncerWeb(syncer, dbh, cfg); await syncer.init(cfg); syncerweb.listen(8057); //await syncer.syncAll(); } let cfg = require('./cfg.json'); startSync(cfg).catch(e => { console.error(e.stack); });