How to deploy
Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:
ewogICJjb21wb3NlIjogIiMgZG9rcGxveTogYWxsb3ctaG9zdC1wb3J0cyDigJQgbWFpbCBwcm90b2NvbHMgKFNNVFAgMjUsIFNNVFBTIDQ2NSwgU3VibWlzc2lvbiA1ODcsIElNQVBTIDk5MykgYXJlIG5vdCBIVFRQOyBtYWlsIHNlcnZlcnMgYW5kIGNsaWVudHMgbXVzdCByZWFjaCB0aGVtIGRpcmVjdGx5IG9uIHRoZSBob3N0LlxuIyBTaGFyZWQgTWFpbHUgY29uZmlndXJhdGlvbiAoZXF1aXZhbGVudCB0byB0aGUgdXBzdHJlYW0gbWFpbHUuZW52IGZpbGUpXG54LW1haWx1LWVudjogJm1haWx1LWVudlxuICAtIFNFQ1JFVF9LRVk9JHtTRUNSRVRfS0VZfVxuICAtIERPTUFJTj0ke0RPTUFJTn1cbiAgLSBIT1NUTkFNRVM9JHtET01BSU59XG4gIC0gUE9TVE1BU1RFUj1hZG1pblxuICAjIFRMUyBmb3IgdGhlIG1haWwgcHJvdG9jb2xzIGlzIG9idGFpbmVkIHRocm91Z2ggTGV0J3MgRW5jcnlwdCAoSFRUUC0wMVxuICAjIHRocm91Z2ggVHJhZWZpayBvbiBwb3J0IDgwKS4gVGhlIHdlYiBVSSBpdHNlbGYgaXMgc2VydmVkIHBsYWluIEhUVFAgdG9cbiAgIyBUcmFlZmlrLCB3aGljaCB0ZXJtaW5hdGVzIEhUVFBTLlxuICAtIFRMU19GTEFWT1I9bWFpbC1sZXRzZW5jcnlwdFxuICAjIE1haWx1IGdyYW50cyByZWxheS9YQ0xJRU5UIHRydXN0IHRvIHRoaXMgbmV0d29yayByYW5nZS4gSXQgbXVzdCBjb3ZlciB0aGVcbiAgIyBEb2NrZXIgbmV0d29ya3Mgb2YgdGhpcyBwcm9qZWN0IChEb2NrZXIgYWxsb2NhdGVzIHRoZW0gZnJvbSAxNzIuMTYuMC4wLzEyXG4gICMgYnkgZGVmYXVsdCkuIE5hcnJvdyBpdCBkb3duIGlmIHlvdSBrbm93IHlvdXIgZXhhY3Qgc3VibmV0LlxuICAtIFNVQk5FVD0ke1NVQk5FVH1cbiAgLSBBRE1JTj10cnVlXG4gIC0gV0VCTUFJTD1yb3VuZGN1YmVcbiAgLSBBUEk9ZmFsc2VcbiAgLSBXRUJEQVY9bm9uZVxuICAtIEFOVElWSVJVUz1ub25lXG4gIC0gU0NBTl9NQUNST1M9ZmFsc2VcbiAgIyBQb3J0cyBlbmFibGVkIGluc2lkZSB0aGUgZnJvbnQgY29udGFpbmVyLiA0MTkwIChzaWV2ZSkgc3RheXMgaW50ZXJuYWwgZm9yXG4gICMgdGhlIHdlYm1haWwgZmlsdGVycyBVSSBhbmQgaXMgbm90IHB1Ymxpc2hlZCBvbiB0aGUgaG9zdC5cbiAgLSBQT1JUUz0yNSw4MCw0NDMsNDY1LDU4Nyw5OTMsNDE5MFxuICAtIE1FU1NBR0VfU0laRV9MSU1JVD01MDAwMDAwMFxuICAtIEZVTExfVEVYVF9TRUFSQ0g9ZW5cbiAgLSBXRUJST09UX1JFRElSRUNUPS93ZWJtYWlsXG4gIC0gV0VCX0FETUlOPS9hZG1pblxuICAtIFdFQl9XRUJNQUlMPS93ZWJtYWlsXG4gIC0gU0lURU5BTUU9TWFpbHVcbiAgLSBXRUJTSVRFPWh0dHBzOi8vbWFpbHUuaW9cbiAgIyBUcnVzdCBUcmFlZmlrIChkb2twbG95LW5ldHdvcmspIHRvIGZvcndhcmQgdGhlIHJlYWwgY2xpZW50IElQIGZvciByYXRlIGxpbWl0aW5nXG4gIC0gUkVBTF9JUF9GUk9NPSR7U1VCTkVUfVxuICAtIFJFQUxfSVBfSEVBREVSPVgtRm9yd2FyZGVkLUZvclxuICAjIEluaXRpYWwgYWRtaW4gYWNjb3VudDogYWRtaW5AJHtET01BSU59IChjcmVhdGVkIG9ubHkgaWYgaXQgZG9lcyBub3QgZXhpc3QpXG4gIC0gSU5JVElBTF9BRE1JTl9BQ0NPVU5UPSR7SU5JVElBTF9BRE1JTl9BQ0NPVU5UfVxuICAtIElOSVRJQUxfQURNSU5fRE9NQUlOPSR7RE9NQUlOfVxuICAtIElOSVRJQUxfQURNSU5fUFc9JHtJTklUSUFMX0FETUlOX1BXfVxuICAtIElOSVRJQUxfQURNSU5fTU9ERT1pZm1pc3NpbmdcblxuIyBQdWJsaWMgRE5TU0VDLXZhbGlkYXRpbmcgcmVzb2x2ZXJzLiBUaGUgYWRtaW4gY29udGFpbmVyIHJlZnVzZXMgdG8gc3RhcnRcbiMgd2l0aG91dCBETlNTRUMgdmFsaWRhdGlvbiwgYW5kIFBvc3RmaXggbmVlZHMgaXQgZm9yIG91dGJvdW5kIERBTkUuIFNlcnZpY2VcbiMgZGlzY292ZXJ5IHN0aWxsIHVzZXMgRG9ja2VyJ3MgZW1iZWRkZWQgRE5TOyB0aGVzZSBhcmUgb25seSB1cHN0cmVhbXMuXG54LW1haWx1LWRuczogJm1haWx1LWRuc1xuICAtIFwiMS4xLjEuMVwiXG4gIC0gXCI4LjguOC44XCJcblxuc2VydmljZXM6XG4gIGZyb250OlxuICAgIGltYWdlOiBnaGNyLmlvL21haWx1L25naW54OjIwMjQuMDZcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OiAqbWFpbHUtZW52XG4gICAgZG5zOiAqbWFpbHUtZG5zXG4gICAgIyBNYWlsIHByb3RvY29sIHBvcnRzIGFyZSBwdWJsaXNoZWQgZGlyZWN0bHkgb24gdGhlIGhvc3QgKHNhbWUgYXBwcm9hY2ggYXNcbiAgICAjIHRoZSBwb3N0ZS5pbyB0ZW1wbGF0ZSkuIFRoZXkgd2lsbCBmYWlsIHRvIGJpbmQgaWYgYW5vdGhlciBtYWlsIHNlcnZlclxuICAgICMgYWxyZWFkeSB1c2VzIHRoZW0gb24gdGhpcyBtYWNoaW5lLlxuICAgIHBvcnRzOlxuICAgICAgLSBcIjI1OjI1XCIgIyBTTVRQIChzZXJ2ZXIgdG8gc2VydmVyKVxuICAgICAgLSBcIjQ2NTo0NjVcIiAjIFNNVFBTIHN1Ym1pc3Npb25cbiAgICAgIC0gXCI1ODc6NTg3XCIgIyBTdWJtaXNzaW9uIChTVEFSVFRMUylcbiAgICAgIC0gXCI5OTM6OTkzXCIgIyBJTUFQU1xuICAgIHZvbHVtZXM6XG4gICAgICAtIG1haWx1LWNlcnRzOi9jZXJ0c1xuICAgICMgVGhlIGltYWdlJ3MgYnVpbHQtaW4gaGVhbHRoY2hlY2sgYWxzbyByZXF1aXJlcyB0aGUgbWFpbCAoRG92ZWNvdCkgcHJveHksXG4gICAgIyB3aGljaCBvbmx5IHN0YXJ0cyBvbmNlIFRMUyBjZXJ0aWZpY2F0ZXMgZXhpc3QuIEJlaGluZCBUcmFlZmlrIHRoYXRcbiAgICAjIGRlYWRsb2NrczogdW5oZWFsdGh5IC0+IFRyYWVmaWsgZHJvcHMgdGhlIHJvdXRlIC0+IHRoZSBBQ01FIGNoYWxsZW5nZSBjYW5cbiAgICAjIG5ldmVyIGJlIGFuc3dlcmVkLiBDaGVjayBvbmx5IG5naW54IGluc3RlYWQgKGhlYWx0aCBlbmRwb2ludCByZXR1cm5zIDIwNCkuXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OiBbXCJDTUQtU0hFTExcIiwgXCJjdXJsIC1tMyAtc2tmTG8gL2Rldi9udWxsIGh0dHA6Ly8xMjcuMC4wLjE6MTAyMDQvaGVhbHRoXCJdXG4gICAgICBpbnRlcnZhbDogMzBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogM1xuICAgICAgc3RhcnRfcGVyaW9kOiA2MHNcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBhZG1pblxuXG4gIGFkbWluOlxuICAgIGltYWdlOiBnaGNyLmlvL21haWx1L2FkbWluOjIwMjQuMDZcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGVudmlyb25tZW50OiAqbWFpbHUtZW52XG4gICAgZG5zOiAqbWFpbHUtZG5zXG4gICAgdm9sdW1lczpcbiAgICAgIC0gbWFpbHUtZGF0YTovZGF0YVxuICAgICAgLSBtYWlsdS1ka2ltOi9ka2ltXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcblxuICBpbWFwOlxuICAgIGltYWdlOiBnaGNyLmlvL21haWx1L2RvdmVjb3Q6MjAyNC4wNlxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6ICptYWlsdS1lbnZcbiAgICBkbnM6ICptYWlsdS1kbnNcbiAgICB2b2x1bWVzOlxuICAgICAgLSBtYWlsdS1tYWlsOi9tYWlsXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gZnJvbnRcblxuICBzbXRwOlxuICAgIGltYWdlOiBnaGNyLmlvL21haWx1L3Bvc3RmaXg6MjAyNC4wNlxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6ICptYWlsdS1lbnZcbiAgICBkbnM6ICptYWlsdS1kbnNcbiAgICB2b2x1bWVzOlxuICAgICAgLSBtYWlsdS1tYWlscXVldWU6L3F1ZXVlXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gZnJvbnRcblxuICBhbnRpc3BhbTpcbiAgICBpbWFnZTogZ2hjci5pby9tYWlsdS9yc3BhbWQ6MjAyNC4wNlxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgaG9zdG5hbWU6IGFudGlzcGFtXG4gICAgZW52aXJvbm1lbnQ6ICptYWlsdS1lbnZcbiAgICBkbnM6ICptYWlsdS1kbnNcbiAgICB2b2x1bWVzOlxuICAgICAgLSBtYWlsdS1maWx0ZXI6L3Zhci9saWIvcnNwYW1kXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gZnJvbnRcbiAgICAgIC0gcmVkaXNcblxuICB3ZWJtYWlsOlxuICAgIGltYWdlOiBnaGNyLmlvL21haWx1L3dlYm1haWw6MjAyNC4wNlxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6ICptYWlsdS1lbnZcbiAgICBkbnM6ICptYWlsdS1kbnNcbiAgICB2b2x1bWVzOlxuICAgICAgLSBtYWlsdS13ZWJtYWlsOi9kYXRhXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gZnJvbnRcbiAgICAgIC0gaW1hcFxuXG4gIHJlZGlzOlxuICAgIGltYWdlOiByZWRpczphbHBpbmVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIG1haWx1LXJlZGlzOi9kYXRhXG5cbnZvbHVtZXM6XG4gIG1haWx1LWNlcnRzOiB7fVxuICBtYWlsdS1kYXRhOiB7fVxuICBtYWlsdS1ka2ltOiB7fVxuICBtYWlsdS1tYWlsOiB7fVxuICBtYWlsdS1tYWlscXVldWU6IHt9XG4gIG1haWx1LWZpbHRlcjoge31cbiAgbWFpbHUtd2VibWFpbDoge31cbiAgbWFpbHUtcmVkaXM6IHt9IiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnNlY3JldF9rZXkgPSBcIiR7cGFzc3dvcmQ6MTZ9XCJcbmFkbWluX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJmcm9udFwiXG5wb3J0ID0gODBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcblxuW2NvbmZpZy5lbnZdXG5ET01BSU4gPSBcIiR7bWFpbl9kb21haW59XCJcblNFQ1JFVF9LRVkgPSBcIiR7c2VjcmV0X2tleX1cIlxuSU5JVElBTF9BRE1JTl9BQ0NPVU5UID0gXCJhZG1pblwiXG5JTklUSUFMX0FETUlOX1BXID0gXCIke2FkbWluX3Bhc3N3b3JkfVwiXG5TVUJORVQgPSBcIjE3Mi4xNi4wLjAvMTJcIiIKfQ==
Reference files
The exact Docker Compose and template configuration this template deploys.
Usage guide
mail.example.com) at your server before deploying: an A record, plus an MX record for your mail domain targeting it./webmail is Roundcube, /admin is the admin UI./admin with admin@<your domain> and the auto-generated INITIAL_ADMIN_PW (Dokploy → your service → Environment). The account is created only on first boot (INITIAL_ADMIN_MODE=ifmissing); change the password from the admin UI afterwards.The mail protocol ports are published directly on the host: 25 (SMTP), 465 (SMTPS), 587 (submission) and 993 (IMAPS). The deployment fails to start if another mail server (or a previous Mailu deployment) already binds them on the same machine. Many VPS providers block outbound port 25 by default — ask your provider to unblock it, or configure a relay host in Mailu.
front container runs certbot internally and answers the HTTP-01 challenge through Traefik on port 80. This only succeeds once the DNS record of your domain points at the server. If the certificate was obtained after the first boot, restart the front service once so the TLS mail listeners (465/587/993) come up.SUBNET (default 172.16.0.0/12) is the network range Mailu trusts for its internal traffic (Postfix relay/XCLIENT, Dovecot proxying, Rspamd). It covers Docker's default address pools; if your Docker daemon uses custom pools, adjust it to match. Note this means other containers on the same Docker host are treated as trusted senders.1.1.1.1, 8.8.8.8) as upstream DNS: the admin container requires DNSSEC validation and Postfix uses it for DANE. Heavy production use benefits from a dedicated local resolver instead, because public resolvers are rate-limited by DNSBLs (see the Mailu DNS FAQ).More like this
Version latest
Complete mail server solution with SMTP, IMAP, POP3, antispam, antivirus, web administration and webmail client.
Version latest
Stalwart Mail Server is an open-source mail server solution with JMAP, IMAP4, POP3, and SMTP support and a wide range of modern features. It is written in Rust and designed to be secure, fast, robust and scalable.
Version 1.6.8
MailCatcher NG runs a super simple SMTP server which catches any message sent to it to display in a web interface. Point your app's SMTP settings at mailcatcher-ng:1025 and inspect every captured email in the browser.
Version v1.22.3
Mailpit is a tiny, self-contained, and secure email & SMTP testing tool with API for developers.
Version 2026.10.06
Open-source email platform for transactional mail, campaigns and inbound, with its own KumoMTA delivery and spam filtering.
Version 1.6.9
Free and open source webmail software for the masses, written in PHP.
Free and open source
Notploy is a free, open source deployment platform. Deploy Mailu and 571+ other templates on your own infrastructure with a single click.