System accidents
Opinions, among other things, that someone decided were worth putting online.
[homepage][blog][[email protected]][RSS] (the “RSS” feed is actually in Atom format)
Hybrid (cloud) email
I started this project with a few goals in mind:
- Support email receiving for multiple FQDAs in the same domain.
- Email backed up to cloud.
- Support email sending for multiple FQDAs in the same domain.
- Email reading can be done using mail client on local network.
Smtp server
Initially, I chose to use Amazon SES as an SMTP server over a fully self-hosted option for a few reasons:
- Leverage the reputation of IP pools owned by SES for sending emails
- Less downtime than with self-hosted option (misconfigured, power outage, etc.)
From what I’ve heard, IP is one of the biggest factor in email rejection, and can cause a rejection even if SPF, DKIM, and DMARC are configured properly with strict policies and even if you have an old sending domain. For example, spamhaus has an ASN drop list, and there is some contention about whether inclusion in this even legal: see spamhaus conflicts on wikipedia for more info. At my old employer, RingCentral, we had to get our IPs removed from Spamhaus’s blacklist a few times.
In practice though, the age of my domain still impacts my reputation, and I’ve gotten reports that my emails still hit the spam filter.
Design overview
The final flow is :
- Send emails using SES
- Store emails in S3
- Send webhooks to residential IP when new object in S3 is created
- Pull email from S3 when webhook is received
- Move emails to appropriate folder for dovecot to process
- Configure your email client to use dovecot as IMAP server and SES as SMTP server
I ended up creating a subdomain for email sending, since SES email receiving didn’t support wildcards.

