Start with your own server.
Build the complete executable, give it a domain and get to know your configuration. The source-first path keeps every step in view.
No tagged release or published release binary was available when this guide was verified. The upstream installer scripts depend on a release, so use the source build below.
01 / Bring the essentials
- Go 1.25 or newer, Node.js 20 or newer, npm, Git and make.
- A machine running Linux, macOS or Windows. The commands below use a Linux/macOS shell; Windows users can follow them in WSL with a Linux toolchain.
- A domain you control and, for public delivery, a public IP and a hosting provider that allows inbound and outbound SMTP on port 25.
The build toolchain is needed to produce the executable. The resulting binary embeds the three web interfaces.
02 / Build the engine
git clone https://github.com/uMailServer/uMailServer.git
cd uMailServer
make buildThe upstream Makefile builds webmail, admin and account frontends, then compiles the Go binary. Review the upstream build instructions if your platform needs a different shell or toolchain.
03 / Create your first domain
sudo ./umailserver quickstart admin@example.comReplace the address with your administrator address. Quickstart creates the configuration, first administrator, domain and DKIM keypair, then prints the DNS records to publish.
On Linux/macOS, default configuration is written to /etc/umailserver/umailserver.yaml and mail data lives in /var/lib/umailserver. Check the paths and permissions before continuing.
04 / Review, validate, run
sudo ./umailserver config check \
--config /etc/umailserver/umailserver.yaml
sudo ./umailserver serve \
--config /etc/umailserver/umailserver.yamlOpen and review the generated YAML before starting. Set a valid mail hostname, check bind addresses and port access, configure mail TLS and put the public web interface behind an HTTPS reverse proxy.
The current HTTP server uses a plain HTTP listener, even when the configured port is 443. The loopback admin endpoint defaults to http://127.0.0.1:8443. Follow the deployment guide before exposing web traffic.
Prefer containers?
git clone https://github.com/uMailServer/uMailServer.git
cd uMailServer
docker build -t umailserver:local .The Dockerfile builds the embedded frontends and executable in a multi-stage image. Use the production Compose example as a starting point, with your own configuration, persistent volumes, secrets and TLS proxy. A locally built image is not a complete deployment by itself.
Next: make the network ready
Set up your domain’s DNS, confirm your provider’s SMTP policy and separate public services from local management endpoints.
Plan your deployment →