I built this after Google Workspace pricing jumped again and I wanted full control over my email stack.
This is a self-hosted email server written in Go, shipped as a single binary. It supports IMAP (with IDLE), SMTP, DKIM, SPF/DMARC, and CalDAV, with modern defaults and minimal configuration.
The goal is something you can run on a small VPS for personal or small-team use without vendor lock-in.
I’d really appreciate feedback on the architecture, security model, and what you’d want to see next.
Honestly if you need something battle-tested right now, those are solid choices.
I built this because I had specific pain points - didn't want to set up Postgres or MySQL just for email metadata, wanted calendar and contacts baked in for a complete Google Workspace replacement, and wanted dead simple config that still does DKIM/SPF/DMARC properly.
Future roadmap includes SendGrid-style stuff - API for transactional emails, webhooks. But the core idea stays: good architecture, solve real pain points, keep it simple and fast.
Very interesting, thanks for sharing. Looking at the /etc/mailserver/config.yaml example from README.md, I couldn't help but notice that the Bind-To Listening IP is missing. What happens if I have a multi homed machine with several IPs? Does the server gloom on all IPs?
Yeah you caught that - right now it just binds to all interfaces by default. Definitely need to add a bind_address option in the config. That's going on my list.
If you're on a multi-homed setup right now, firewall rules would be the workaround, but I hear you - it should be in the config properly.
Thanks for the feedback, this is exactly what I was hoping to get from posting here.
I built this after Google Workspace pricing jumped again and I wanted full control over my email stack.
This is a self-hosted email server written in Go, shipped as a single binary. It supports IMAP (with IDLE), SMTP, DKIM, SPF/DMARC, and CalDAV, with modern defaults and minimal configuration.
The goal is something you can run on a small VPS for personal or small-team use without vendor lock-in.
I’d really appreciate feedback on the architecture, security model, and what you’d want to see next.
Why would I pick this over established players : Maddy, Mox, Stalwart ?
Honestly if you need something battle-tested right now, those are solid choices.
I built this because I had specific pain points - didn't want to set up Postgres or MySQL just for email metadata, wanted calendar and contacts baked in for a complete Google Workspace replacement, and wanted dead simple config that still does DKIM/SPF/DMARC properly.
Future roadmap includes SendGrid-style stuff - API for transactional emails, webhooks. But the core idea stays: good architecture, solve real pain points, keep it simple and fast.
Very interesting, thanks for sharing. Looking at the /etc/mailserver/config.yaml example from README.md, I couldn't help but notice that the Bind-To Listening IP is missing. What happens if I have a multi homed machine with several IPs? Does the server gloom on all IPs?
Yeah you caught that - right now it just binds to all interfaces by default. Definitely need to add a bind_address option in the config. That's going on my list.
If you're on a multi-homed setup right now, firewall rules would be the workaround, but I hear you - it should be in the config properly.
Thanks for the feedback, this is exactly what I was hoping to get from posting here.