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.

Build from source for now

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

terminal
git clone https://github.com/uMailServer/uMailServer.git
cd uMailServer
make build

The 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

terminal
sudo ./umailserver quickstart admin@example.com

Replace 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

terminal
sudo ./umailserver config check \
  --config /etc/umailserver/umailserver.yaml

sudo ./umailserver serve \
  --config /etc/umailserver/umailserver.yaml

Open 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 web port is not HTTPS on its own

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?

terminal
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 →
Content checked against product source cc09145 on 18 October 2026. Commands are source-verified; this site does not certify a mail deployment.