Self-Hosted Email Server: Full Control, Zero Monthly Fees
Published: 2024-07-04
Email is one of the most fundamental internet services, yet most of us rely on third-party providers like Gmail or Outlook. While convenient, these services come with trade-offs: privacy concerns, limited customization, and potential censorship. So I asked myself:
Can I host my own email server. One that gives me full control, no ads, no vendor lock-in?
The answer: Yes. And you can too.
💡 Why Self-Host Your Email?
Before jumping into the setup, here’s why I chose to go down this rabbit hole:
- Data sovereignty: My emails stay on my server, not on someone else’s cloud.
- Privacy: No profiling, no scanning for ads.
- Custom domains: I can have any email address I want (
mal@malwande.me). - Learning experience: It’s a great deep dive into mail protocols, system administration, and DNS.
🧰 Tech Stack Overview
| Component | Purpose |
|---|---|
| Ubuntu Server 24.04 | OS of choice for stability |
| Postfix | SMTP server (sending mail) |
| Dovecot | IMAP server (retrieving mail) |
| rspamd | Spam filtering |
| Let’s Encrypt | TLS certificates (via Certbot) |
| Roundcube (optional) | Webmail interface |
| MariaDB | User and mail storage backend |
🛠️ Setup Steps (Overview)
Here’s a high-level summary of how I built the stack:
1. Provision a Raspberry Pi & Domain
- I used a Raspberry Pi 4B.
- Acquired a domain (
malwande.me) and pointed DNS records to the server’s IP.
2. Install & Configure Postfix
- Set it up to send mail using authenticated SMTP.
- Configured TLS using Let’s Encrypt.
- Enabled submission port (587) and SMTPS (465).
3. Set Up Dovecot
- Configured to handle IMAP logins securely.
- Linked with Postfix for SASL authentication.
- Mailboxes stored under
/var/mail/vhosts/.
4. Enable Spam & Virus Filtering
- Installed and configured rspamd and ClamAV.
- Fine-tuned rules and enabled greylisting for better deliverability.
5. DKIM, SPF, and DMARC
- Signed outgoing emails with OpenDKIM.
- Set SPF and DMARC records in DNS.
- Tested using Mail Tester.
6. Optional: Webmail via Roundcube
- Installed via Apache and PHP.
- Clean interface , great for occasional use.
🧪 Testing Deliverability
After setting everything up, I tested sending to Gmail, Outlook, ProtonMail, and others. Key observations:
✅ Gmail accepted mail with a “secure” badge
⚠️ Outlook flagged it as spam initially resolved by fixing SPF/DMARC alignment
✅ Excellent score on Mail Tester (9.3/10)
🔐 Security Considerations
- Fail2Ban for brute-force protection on SMTP/IMAP
- Enforced strong TLS ciphers
- Limited mail size and rate to prevent abuse
📦 Backup & Maintenance
- Nightly
rsyncbackups of maildir and configs - Certbot auto-renewal with a cron job
- Weekly log reviews and spam rule updates
🤯 Lessons Learned
- Running mail is harder than a web server, but so rewarding
- IP reputation is a real challenge, residential or cheap VPS IPs can be blacklisted
- A basic VPS (or Pi) can handle low-volume personal email just fine
📫 Final Thoughts
Hosting your own email isn’t for everyone, but if you love tinkering and value digital sovereignty, it’s a powerful project. With proper setup, it’s secure, reliable, and frees you from Big Tech inboxes.
You can now email me at my self-hosted inbox: mal@malwande.me 🚀