Sending from a VPS

Choose a VPS that can send mail, pass Owlat's outbound-IP readiness gate, and warm a new IP without guessing.

Owlat's built-in MTA delivers directly to each recipient's mail server. That gives you control, but it also makes the public IP address of your VPS part of your sending identity. A correct DNS record cannot erase a recycled IP's history or a provider-wide SMTP block.

This guide helps you decide whether direct delivery is appropriate, prepare the server, and understand what Owlat will do during the first four warming weeks. For the DNS records themselves, keep DNS & Email Setup open alongside this page.

Choose direct, relay, or hybrid delivery

There is no universal monthly-volume number where a dedicated VPS becomes more deliverable or cheaper than a relay. List quality, traffic shape, operational time, IP history, provider fees, and the cost of delayed mail matter more than a single threshold.

ModeChoose it whenTrade-off
RelayYour VPS provider blocks SMTP, you need reliable delivery immediately, or you do not want to operate reputation feedback and recoveryThe relay owns the last-mile IP reputation and charges for that service
Direct to MXYour provider permits outbound TCP/25, gives you controllable PTR records, and you can tolerate a gradual reputation rampYou own warm-up, blocklist recovery, feedback loops, and receiver-specific throttling
HybridYou want to build owned-IP reputation while keeping urgent mail movingOwlat can keep eligible traffic direct and route affected receiver traffic through a verified relay

DigitalOcean's current Droplet policy makes the choice especially simple: its official documentation says SMTP ports 25, 465, and 587 are blocked on all Droplets, including traffic through a Reserved IP. Use a relay there rather than planning direct-to-MX delivery.

See Providers for relay configuration and domain verification. Relay credentials alone do not make a domain eligible: complete the DNS proof shown by Owlat before enabling fallback.

VPS provider comparison

Provider policies can change. This table was verified against official provider documentation on July 26, 2026; recheck the linked source before buying a server.

Provider/productOutbound SMTPIPv4 reverse DNSIPv6 reverse DNS
Hetzner CloudPorts 25 and 465 are blocked by default. After the account is at least one month old and its first invoice is paid, you may submit a limit request; approval is case-by-case. Port 587 remains available for an external relay.In Console, open the server, choose Networking, and edit rDNS beside the address.The same rDNS screen accepts the IPv6 interface identifier; Hetzner already holds the network prefix.
DigitalOcean DropletsPorts 25, 465, and 587 are blocked on all Droplets. The documented path is a third-party mail service.Rename the Droplet to a valid FQDN; DigitalOcean generates its PTR. PTR cannot be created manually in the DNS control panel.Only the first assigned IPv6 address gets a PTR from the FQDN Droplet name. The other addresses have no documented manual PTR path.
OVHcloud VPSOutbound port 25 is blocked by default. Use a relay on 587 or ask support to review an unblock request.Under Network → Public IP Addresses, choose Configure reverse DNS. The forward A record must already point back to the address.The VPS rDNS workflow supports IPv6 and checks the matching AAAA record before accepting the PTR.

Sources: Hetzner Cloud mail-port policy, Hetzner Cloud rDNS, DigitalOcean SMTP policy, DigitalOcean PTR records, DigitalOcean IPv6 limits, OVHcloud VPS FAQ, and OVHcloud VPS reverse DNS.

The Deliverability Center renders these same canonical provider instructions inline:

Hetzner Cloud

Hetzner manages reverse DNS beside each server address.

  1. Open the server in Hetzner Console.
  2. Choose Networking.
  3. Edit rDNS beside the exact sending address and save the hostname shown by Owlat.
Open provider console

DigitalOcean

DigitalOcean derives the PTR from the Droplet name; its documented Droplet policy blocks SMTP ports.

  1. Open the Droplet in the DigitalOcean control panel.
  2. Rename it to the exact fully-qualified hostname shown by Owlat.
  3. Use a verified relay instead of promising a port-25 unblock that DigitalOcean does not support.
Open provider console

OVHcloud

OVHcloud requires the matching forward record before accepting reverse DNS.

  1. Create the matching A or AAAA record first.
  2. Open Network, then Public IP Addresses in OVHcloud Manager.
  3. Choose Configure reverse DNS for the exact sending address.
Open provider console

Those product guides do not document reverse-zone delegation to your own name servers. Use the provider-managed PTR workflow they document. If your chosen product or IPv6 address does not appear in that workflow, get written confirmation from the provider before treating the address as send-capable.

Preflight the server before setup

Do these checks before enabling the built-in MTA:

  1. Confirm the exact VPS product permits outbound TCP/25. Submission ports 465 and 587 do not replace port 25 for direct delivery to recipient MX servers.
  2. Allocate a stable public IPv4 address and choose a dedicated hostname such as mail.example.com. Do not share the hostname with the web application.
  3. Publish an A record from that hostname to the sending IPv4 address.
  4. Set the address's PTR to exactly the same hostname in the VPS provider's control panel.
  5. Put the address in the appropriate IP_POOLS_* value and set EHLO_HOSTNAME (or its per-IP EHLO_HOSTNAMES entry) to the same hostname.
  6. Complete SPF, DKIM, DMARC, and return-path setup in DNS & Email Setup.
  7. Run owlat doctor. Do not interpret “containers are running” as “the IP is ready to send.”

The outbound-IP readiness checklist

Owlat treats readiness as live state, not a setup checkbox. A new address starts inactive, the MTA verifies it before workers begin, and the check repeats hourly. A hard failure quarantines the address and invalidates its pooled SMTP sockets. If no eligible address remains, mail stays queued instead of leaking through an unverified source.

For every IPv4 sending address, owlat doctor must report:

  • PTR exists — the address resolves to a hostname.
  • PTR is a valid FQDN — not an IP literal or malformed local name.
  • Forward confirmation passes — that hostname's A records contain the exact sending address.
  • EHLO matches — the MTA announces the same hostname.
  • The PTR is meaningful — a provider-default or address-shaped PTR is eligible only with a warning; replace it before building reputation.
  • No critical DNSBL block is active — a critical listing independently removes the address from rotation.

The live details are available in Delivery health → Outbound IPs and in the authenticated MTA GET /ip-reputation endpoint. For every verdict field and pool rule, see MTA System. If a DNSBL check fails, use the DNSBL recovery runbook, not an override.

MTA_ALLOW_UNVERIFIED_FCRDNS=true exists only for private IPv4 lab experiments. It is not a production bypass and cannot admit IPv6.

Add outbound IPv6 only after IPv4 is green

IPv6 is optional and disabled by default. It does not automatically improve placement. Every IPv6-containing pool must retain an IPv4 fallback, and all configured IPv4 identities must remain ready.

Before setting MTA_IPV6_ENABLED=true, Owlat requires:

  1. A stable public IPv6 address that passes the MTA's source-bound TCP/25 probe.
  2. A PTR to the same EHLO hostname.
  3. An AAAA record from that hostname back to the exact IPv6 address.
  4. One SPF record on RETURN_PATH_DOMAIN containing the exact positive ip6: mechanism for that address.
  5. No critical DNSBL block.

The same hourly readiness pass quarantines IPv6 if one of those confirmed facts regresses; eligible IPv4 continues. Follow the detailed, ordered procedure in Optional outbound IPv6.

What warming weeks 1–4 look like

The table below is Owlat's checked-in base schedule per IP. “Warming day” is state, not a guaranteed calendar date: a day with no sends does not advance it, and delivery signals can accelerate, slow, or pause the ramp. Each cap remains in force until the next listed checkpoint.

Warming periodBase daily-cap checkpoints
Week 1 — days 1–7Day 1: 50 → day 2: 100 → day 3: 200 → day 5: 700 → day 7: 1,500
Week 2 — days 8–14Starts at 1,500 → day 10: 3,000 → day 14: 7,500
Week 3 — days 15–21Starts at 7,500 → day 18: 15,000 → day 21: 20,000
Week 4 — days 22–28Starts at 20,000 → day 25: 30,000
Day 30+Graduation removes the warming cap only after the health gate passes

Send first to recent, explicit opt-ins who expect the message. Keep volume steady rather than exhausting the cap in a burst.

Daily resultMTA response
Bounce below 1%, deferral below 5%, and at least 80% of cap usedAdvance the schedule faster
Bounce above 3% or deferral above 10%Move the schedule day back and reduce the cap by 30%, never below 50
Bounce above 8% or deferral above 25%Plateau the IP and alert
Schedule day 30+ with bounce below 2%Graduate and remove the warming cap

These are control thresholds, not targets. Keep bounces and complaints far below them. Watch Delivery health and the receiver dashboards described in External reputation feedback.

Know the mailbox-provider floor

Warm-up does not waive receiver requirements. Gmail and Yahoo expect valid forward and reverse DNS for all senders. Gmail's operational guidance is to keep its Postmaster Tools spam rate below 0.10% and avoid ever reaching 0.30% or higher. Yahoo requires its own complaint rate below 0.3% and calculates that rate from messages delivered to the inbox. Those denominators are different, so Owlat's rolling internal rate is an early warning rather than a reproduction of either provider's private calculation.

Bulk marketing mail also needs aligned authentication and working unsubscribe. See the current mailbox-provider requirement table before increasing volume.

Operate the ramp

During the first month:

  • Check Delivery health each day for warm-up state, deferrals, breaker state, identity regressions, and DNSBL results.
  • Check Google Postmaster Tools, Yahoo Sender Hub/CFL, and Microsoft SNDS where the provider exposes data. Owlat cannot infer a provider's private reputation verdict from its own counters.
  • Stop importing or mailing old lists. One complaint at low volume is a strong signal even when a minimum-sample guard prevents automatic enforcement.
  • Treat sustained deferrals as a request to reduce rate. Do not retry rapidly or move the same unwanted traffic to another IP.
  • Keep transactional and campaign streams separate where you have multiple addresses; do not sacrifice password-reset delivery to warm a marketing list.

For production networking, backups, and monitoring outside the MTA, continue with Production Deployment.