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.
The bases are solid.
Email Handling
By Manuel Kanah
Email Handling
- 775