Getting Started¶
Everything you need to go from zero to a running Mailyte email server — install it, configure it, and send your first email in under 15 minutes.
What is Mailyte?¶
Mailyte is a self-hosted email platform. It bundles Postfix (SMTP), Dovecot (IMAP/POP3), Rspamd (spam filtering), a FastAPI REST API, and a collection of worker services into a single Docker Compose stack. You bring a server, a domain, and DNS access. Mailyte handles the rest.
flowchart LR
You["You 🧑💻"] -->|"docker compose up"| Stack["Mailyte Stack"]
Stack --> SMTP["Send Email<br>Postfix"]
Stack --> IMAP["Read Email<br>Dovecot"]
Stack --> API["Control Plane<br>FastAPI REST API"]
Stack --> Spam["Spam Filter<br>Rspamd"]
style Stack fill:#4051b5,color:#fff In this section¶
-
Before You Install
What your server and IP must be capable of: outbound port 25, reverse DNS, and a clean reputation. The two things that silently stop mail, checked in five minutes.
-
Installation
Clone the repo, generate secrets, configure
.env, start the stack, and verify every container is healthy. -
Configuration
Understand the environment variables that control database connections, mail routing, security, feature flags, and worker behaviour.
-
First Steps
Bootstrap your first organization, domain, mailbox, and API key, then send a test email.
-
Troubleshooting
Diagnostic commands, common pitfalls, log locations, and the fastest way to figure out what went wrong.
Quick-start checklist¶
Use this as a high-level roadmap. Each step links to its own page with full details.
- Install the server -- clone the repo, generate secrets, configure
.env, run./start.shordocker compose up. - Review configuration -- understand the environment variables that control database, mail routing, security, and feature flags.
- Take your first steps -- create an organization, add a domain, create a mailbox, send a test email.
- Know how to troubleshoot -- learn the diagnostic commands that save you hours when something goes wrong.
What you will end up with¶
After completing this section you will have:
- Every container running and healthy.
- An organization and domain registered through the API.
- A working mailbox that can send and receive mail.
- Familiarity with the logs and health checks you will use day-to-day.
Prerequisites at a glance¶
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Linux (Ubuntu 20.04+ or similar) | Ubuntu 22.04 LTS |
| Docker | 24.0+ | Latest stable |
| Docker Compose | v2.24+ | Latest v2 |
| RAM | 4 GB | 8 GB+ |
| Disk | 50 GB | 100 GB+ SSD |
| Domain | One domain with DNS control | -- |
| Ports open | 25, 143, 465, 587, 993 | All mail ports + 80/443 |
Port 25 matters
Many cloud providers block outbound port 25 by default. Check with your hosting provider before you start — you may need to request that the block be lifted. Without port 25, your server can receive email but cannot deliver it to other servers.
The Installation page covers prerequisites in full.
Architecture at a glance¶
Mailyte is made up of three layers:
Postfix handles SMTP (ports 25, 587, 465). Dovecot handles IMAP/POP3 (ports 143, 993, 110, 995). Rspamd sits between them filtering spam.
A FastAPI application (host port 8083 in development) is the control plane. Worker services handle tracking, webhooks, rate limiting, analytics, RAG/AI search, queue management, storage usage, archiving, and monitoring.
MySQL stores configuration and metadata. Redis provides caching and pub/sub for the workers. Qdrant stores vector embeddings for AI-powered email search.
Don't worry about memorizing all of this
The Architecture section covers every service in detail. Right now, you just need to get the stack running.
Capabilities overview¶
| Capability | What you get |
|---|---|
| Send & receive email | Full SMTP, IMAP, and POP3 support via Postfix and Dovecot |
| REST API | Manage everything programmatically — orgs, domains, mailboxes, aliases |
| Spam filtering | Rspamd spam detection with Bayesian filtering (optional ClamAV integration, not deployed by default) |
| Multi-tenant | Host multiple organizations with fully isolated data and quotas |
| Email tracking | Open tracking, click tracking, bounce and complaint logging |
| Webhooks | Real-time event delivery with retry and HMAC signing |
| AI search | Semantic search over email content with Qdrant vector DB |
| Auto-healing | Monitoring service detects failed containers and restarts them |
| Backups | Automated, age-encrypted database and filesystem backups with S3 upload |
Where to go next¶
Start here
If you already have a server, spend five minutes on Before You Install first. Outbound port 25 is blocked by default on most providers and reverse DNS is almost never set correctly out of the box — both are provider tickets, not software, and neither is visible from a stack that otherwise looks perfectly healthy.
Then: Installation, about ten minutes with Docker already present.
Related sections:
- Architecture -- understand how the system is put together
- API Reference -- explore the REST API once your server is running
- Features -- see everything Mailyte can do
- Security -- harden your deployment before going live