Overview
Flow diagram
Boxes explained
There are a few grey boxes in the diagram. Such a box is a context-boundary where everything inside is related. The boxes are labled in the top left corner.
- Boxes labled
AWSdescribes services running inside an account at Amazon Web Services. These incur a monthly bill based on usage. - Boxes labled
Any Providerare generic components that could be sourced from any cloud provider or even self-hosted. In the context of MailFlow Relay this includes mailservers that can recieve emails for the left side and mailservers that can send with SMTP on the right side. Costs depend on choice of provider. - The box labled
Mail Managerreferences the internals of MailFlow Relay. In this box the icons are technically misused to not refer to an AWS service but to describe a specific part of the data processing pipeline. Their meaning can be referenced with the icon table but should match the AWS service in spirit at least.
Icons explained
The icpns in this diagram are from the AWS architecture icons. Inside of the Boxes marked "AWS" they are used correctly, outside of that they were picked by what the service represents and matches the given component for visual continuity.
| Icon | Explanation |
|---|---|
| Amazon Simple Email Service is the translation gateway from the world of email into the world of API calls and webservers. In this infrastructure it can be used as Email ingress and/or as egress provider. More on how SES fits into the stack can be found here. | |
| Amazon Simple Notification Service is the glue that allows SES to talk to our server. It translates from what SES can speak to what Mail Manager can work with. More on this service in context of this infrastructure can be found here. | |
| Amazon Simple Storage Service is a low cost storage oprion for raw data. SES pushes the raw IMAP data into S3 because it would be too big for an SNS notification. The ingress webhook downloads the raw IMAP-message data from the bucket. More on S3 for MailFlow Relay can be found here. | |
| This icon is used for all passive compute elements that do not have a timer or listener but are invoked by others. before them and deffer to components after them. | |
| These components are active stateful nodes that manage open connections, run timers or other stateful operations. | |
| App state like email alias target lists or metadata like priorities and other configuration. This element is global meaning all instances mean the same datastore but it is duplicated to remove clutter from crossing connections. for more detail see list configuration. | |
| The email send queue has the currently actuve and recently completed email send operations with all metadata required to synthesise the outbound payload. Attachments are stored externally by ID because large binary blobs in the DB are bad form. | |
| Attachment files are stored on disk as with a unique hash-based ID. The email send queue references these attachments and the scheduler loads them on demand to add to outbound mail. Attachments are deleted after a while when all dependencies have resolved. |