Skip to content

Latest commit

 

History

History
102 lines (83 loc) · 4.24 KB

README.ru.md

File metadata and controls

102 lines (83 loc) · 4.24 KB

Mail-server

Read this readme in English.

Состоит из двух частей: сервер на Node.js и клиент на TypeScript + react-redux.

Установка

$ npm i
$ npm run server:build

Вероятнее всего, вы захотите изменить некоторые значения в конфигурации.
Создайте файл config.json и переопределите нужные значения из config.default.json.

Пример конфигурации файла config.json:

}
//конфигурация клиента
  "client": {
    "apiUrl": "/api",
    "imageServiceUrl": "/images", //URL сервера для загрузки вложений, см. https://gitlab.eterfund.ru/ipfs-images/ipfs-images
    "webpack": {
      "port": 8080,
      "publicPath": "http://localhost:8080/"
    }
  },
//конфигурация сервера  
  "server": {
    "corsWhitelist": ["https://examplehost.com"], //массив URL-адресов для CORS
    "fakeSender": false, //предназначен для отладки сервера, при установке значения true вместо отправки рассылки выводит информацию о ней в консоль
    "logLevel": "silly", // error, warn, info, verbose, debug, silly
    "mail": {//параметры письма рассылки
      "from": "someuser@example.com",
      "listIdDomain": "some.domain"
    },
    //параметры паузы в рассылке (для работы необходимо указать оба поля)
    "maxEmailsWithoutPause": 3, //количество успешно отправленных писем перед паузой в рассылке
    "pauseDuration": 10, //длительность паузы в секундах

    "port": 8020,
    "redis": {
      "db": 0,//номер БД Redis
      "pool": {//конфигурация пула соединений Redis
        "min": 1, //минимальное количество соединений
        "max": 5 //максимальное количество соединений
      },
      "testingDb": 1 //номер БД Redis для тестирования
    },
    "smtp": {//параметры smtp-сервера
      "host": "localhost",
      "port": 9025
    },
    "subscription": {//параметры подписок на расслыки
      "requestTTL": 1209600, //время жизни запроса на подписку в redis
      "subject": "Подписка на рассылку" //тема письма при запросе подписки на рассылку
    }
  }
}

После этого можно запускать сервер:

$ npm run server:start

или

$ node dist/server/index.js

Установка клиента

Если клиент тоже нужен - то перед его сборкой создайте файл email-template.html. Если шаблон письма не нужен, то просто оставьте его пустым.

Далее запустите сборку:

$ npm run client:build

И настройте ваш веб-сервер на раздачу содержимого каталога client/public.

Принцип работы

Для хранения информации о рассылках используется redis. Рассылка имеет следующие атрибуты:

  • ID;
  • Название;
  • Состояние (NEW = 1, RUNNING = 2, PAUSED = 3, FINISHED = 4, ERROR = 5);
  • Заголовки (уникальным для каждой рассылки является заголовок List-Id. Он генерируется
    автоматически из времени создания рассылки в формате 'YYYYMMDD', id рассылки и параметра listIdDomain.
    Необходим для просмотра статистики по рассылкам.);
  • Список адресатов;
  • Количество уже обработанных адресатов.

AGPLЛицензия

См. файл LICENSE.