Install guides
Installing MailDock on Vultr
Vultr blocks outbound port 25 by default and will open it on request for established accounts. Reverse DNS is a proper field in the panel.
Vultr is unremarkable in the good sense: a straightforward VPS host with a lot of locations and a reverse-DNS field where you expect one.
Port 25
Blocked by default, opened on request, with roughly the same screening as everyone else — they want to know you are not a bulk sender. Test it rather than assuming, because some older accounts have it open and the failure is silent until mail queues:
# From the server, once it exists. A connection means open; a timeout means blocked.nc -zv -w 5 gmail-smtp-in.l.google.com 25MailDock’s own preflight runs this check during install and warns if it fails, and mailctl doctor
reports it as a failure when no relay is configured — the same test with better error text.
Reverse DNS
In the panel, on the instance’s IPv4 settings. Set it to your mail hostname, and confirm the forward record points back at the same address — a PTR that does not round-trip is treated as no PTR by most receivers.
Sizing and location
The 2 GB regular instance is the floor. Vultr’s location list is long, which is useful for putting mail in a specific jurisdiction; it is worth choosing deliberately rather than picking the nearest.
IPv6
Enabled by default in most regions.
From 0.8.0 MailDock can serve IPv6, and it is off until you switch it on. Until you do, publish no AAAA record for any name this server answers — not the mail hostname, and not webmail., postmaster. or any domain you point here later: with IPv6 off nothing answers there, so mail servers and certificate challenges that prefer IPv6 fail. Keeping inbound IPv6 closed in the provider’s firewall stays sensible while it is off.
To serve IPv6, install with mailctl install --ipv6, or set IPV6_ENABLED=true in /opt/mailserver/.env and run npm i -g @maildock/mailctl@latest && mailctl upgrade — the CLI first, because an older one has no IPv6 override to apply. It needs Docker 27 or later, which forwards IPv6 so that each client keeps its own address — on an older Docker an IPv6 client would look like the server itself and could relay mail without signing in, which is why the installer refuses it. Then:
- run
mailctl doctorand wait for itsipv6row to read ✔; - open the mail and web ports to IPv6 in the provider’s firewall;
- publish an AAAA record for the mail hostname, and set the reverse DNS (PTR) for the server’s IPv6 address in the provider’s console;
- outbound mail stays on IPv4 unless you turn outbound IPv6 on, which MailDock refuses until that PTR is in place.
The details are in the IPv6 page of the docs.
Then the standard install.
Checked against Vultr’s own documentation on . Providers change their policies without telling us — tell us if this is out of date. Sources: Vultr documentation