Postfix + Dovecot + Rspamd + ClamAV — a complete business mail stack in a single Docker container.
Deploy on any Linux server or VPS. No cloud dependency. No per-seat fees. Your data stays on your infrastructure.
| Component | Role |
|---|---|
| Postfix | SMTP — sends and receives email |
| Dovecot | IMAP — mailbox access from any mail client |
| Rspamd | Spam filtering, greylisting, DKIM/DMARC/ARC signing |
| ClamAV | Antivirus scanning on all incoming mail |
- Linux server (Debian 12 or Ubuntu 22.04+ recommended)
- 2 vCPU, 4 GB RAM, 40 GB disk minimum
- Docker installed —
curl -fsSL https://get.docker.com | sh - A domain name with DNS management access
- A TLS certificate for your mail hostname (Let's Encrypt works)
git clone https://github.com/itefix/ulaknode.git
cd ulaknodeEdit docker-compose.yml — set your hostname and certificate paths:
hostname: mail.yourdomain.com
environment:
- MAIL_HOSTNAME=mail.yourdomain.com
volumes:
- /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem:/run/certs/fullchain.pem:ro
- /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem:/run/certs/privkey.pem:roThen start:
docker compose up -d# Add a domain
docker exec ulaknode ulaknode-domain add yourdomain.com
# Add a mailbox
docker exec ulaknode ulaknode-mailbox add alice@yourdomain.com secretpassword
# Add an alias
docker exec ulaknode ulaknode-alias add info@yourdomain.com alice@yourdomain.com
# Set a quota
docker exec ulaknode ulaknode-mailbox quota-set alice@yourdomain.com 5G
# List mailboxes
docker exec ulaknode ulaknode-mailbox list yourdomain.com# Generate DKIM key — prints the DNS TXT record to publish
docker exec ulaknode ulaknode-dkim generate yourdomain.com
# Generate SPF record
docker exec ulaknode ulaknode-spf generate yourdomain.com --mx
# Generate DMARC record
docker exec ulaknode ulaknode-dmarc generate yourdomain.com \
--policy none --rua mailto:postmaster@yourdomain.com| Port | Purpose |
|---|---|
| 25 | SMTP — inbound mail |
| 587 | Submission — outbound mail from clients |
| 993 | IMAPS — mailbox access (TLS) |
See docs/self-hosted.md for the complete setup walkthrough including DNS, firewall, brute-force protection, and TLS.
ulaknode is free to use. If you run it in a commercial setting and want professional support or a maintenance agreement, visit itefix.net/ulaknode.
BSD 2-Clause — see LICENSE.
