Email Handling


Goal:

Provide queuing system to exchange email inside
ECN with customers using threads.

Challenge


To provide email handling we started to think about life of emails from customers and back to them:
  • receiving emails
  • storing emails
  • sending emails

The most challenging bullet (for now) is storing big data.
In the end we decided to use Cassandra.

cassandra

Cassandra is, at the same time, the most positive and negative thing we've worked with, since the beginning of the project.

We achieved:
  • for sure, a lot of knowledge
  • documentation to install Cassandra and make it work with php
  • create a denormalized structure of  data to work faster with 
    NoSQL databases
  • storing files in Cassandra  avoids to store files in the file system and then to replicate and to backup them
  • providing unique IDs for a large scale of data 
  • We enjoyed to move logic in software layer because of the denormalization of a NoSQL structure.

We dislike:
  • nothing in Cassandra works out of the box (but we like challenges)

frontend

NOTE: we can not provide screenshot because of the down of the servers

We will provide a new tab for agent v2 for emails queues to check and interact with threads.

For now the frontend is working using mockups.

backend

We defined 90% of the routes we will need to provide to the frontend to satisfy the functionality.

We achieved:
  • open and manage queues
  • set up a queue in all its parts
  • store in Cassandra emails
  • retrieve any information from Cassandra about threads
  • updating message meta data
  • manage emails for queues based on DNS MX checks
  • manage SMTPs

Summary


Our slowdowns have been caused by Cassandra.

We are confident on we wrote so far.
The bases are solid.

Email Handling

By Manuel Kanah

Email Handling

  • 775