Git Product home page Git Product logo

emailengine's Introduction

twitter_header_photo_2

EmailEngine Email API

NB This is the version 2 of EmailEngine. If you are looking for the previous version, you can find it here.

Headless email client that makes IMAP and SMTP resources available over REST. Integrate email accounts with your service with ease!

Use cases

  • Syncing users' emails to your service and sending out emails on behalf of your users
  • Integrating your app with a specific email account, eg. your support email
  • Monitor INBOX and Junk folders of a test email account to see where the emails you send out end up in
  • Lightweight webmail and mobile email apps that do not want to process IMAP and MIME

Quickstart

This example assumes that Redis is installed locally and does not require any authentication. See docs for other options.

  1. Download EmailEngine for your OS:

  2. Open http://127.0.0.1:3000 in your browser

Later, when you want to upgrade, just download the newer version and restart the emailengine service.

Tip For human readable logs you can use pino-pretty (npm install -g pino-pretty) by piping EmailEngine output to it: emailengine | pino-pretty

Run on Heroku

Deploy

Screenshots

Version and license

Run the following command to see the version and license information both for EmailEngine and for the included modules.

$ emailengine license

Requirements

  • Redis โ€“ any version

There is no official Redis release for Windows but you can use an alternative like Memurai.

Tip! Try to keep the latency between EmailEngine and Redis as low as possible, best if these would run in the same machine or at least in the same DC. EmailEngine runs a separate Redis command for each message in a folder when syncing messages, so if the latency is not low then it takes a long time to sync a folder with a lot of messages,

Documentation

Configuring EmailEngine

See the documentation for configuring EmailEngine here.

App access

By default EmailEngine allows connections only from localhost. To change this either edit config file or use --api.host="0.0.0.0" cli option. This would enable outside access, so you should use firewall or a proxy to only allow trusted sources.

Deployment

Ubuntu or Debian

You can use the included install script to set up

  • EmailEngine as a SystemD service
  • Nginx reverse proxy
  • ACME.sh and Let's Encrypt HTTPS certoficate
$ wget https://raw.githubusercontent.com/postalsys/emailengine/master/install.sh
$ chmod +x install.sh
$ ./install.sh example.com [email protected]

Where

  • example.com is the domain name for EmailEngine
  • [email protected] is your email address to generate the HTTPS certificate

NB! Tested with Ubuntu 20.04 and Debian 11. Might not work with other OS versions.

SystemD

Read about running EmailEngine as a SystemD service here

Docker

See the documentation for using EmailEngine with Docker here.

Resolving issues with Redis

EmailEngine is using Redis as it's data store. Redis stores everything in RAM so if something weird happens, EmailEngine could flood Redis and make the app unusable once there is no available space left.

First thing to do is to check what is actually going on. EmailEngine provides a few tools for that:

  1. Check Bull queues in Redis. You can use the built in Bull Arena UI to view the state of the queues. Open http://127.0.0.1:3000/admin/arena in your browser to see the queues.
  2. Scan the used keyspace. EmailEngine provides a tool that groups keys by type. Run it like this (use the same config for DB as you are using for the main app):
$ emailengine scan > keyspace.csv

Monitoring

There is a Prometheus output available at /metrics URL path of the app.

Log analysis

Read about logging options here

To start EmailEngine to trail the IMAP traffic of a specific account

$ npm run raw -- --filter.account=account1

Security and Data compliance

Read here.

Licensing

Dual licensed under Server Side Public License v1 or later and the EmailEngine License.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.