Self-Hosted Mail Server VPS — Port 25, PTR, No KYC
Mailcow or Postfix on a no-KYC VPS: port 25 open, editable PTR, SPF/DKIM/DMARC. Crypto. Switzerland or Amsterdam. Deploy today.

Mailcow or Postfix on a no-KYC VPS: port 25 open, editable PTR, SPF/DKIM/DMARC. Crypto. Switzerland or Amsterdam. Deploy today.
The three non-negotiables
1) PTR must match your HELO. Every BitCloudVPS VPS ships with editable rDNS — set the PTR to your mail hostname before the first send. 2) Port 25 must be open. It is, on our VPS and dedicated lines — no unblocking tickets. 3) Authentication records must exist: SPF, DKIM and DMARC published in DNS for your sending domain.
Business $24/mo (6 vCPU / 16 GB DDR5) is the production size. Crypto invoice, no KYC.
Launch nowWarm-up is physics, not marketing
A fresh IP with no reputation lands in spam no matter whose network it is. Start with low volume to engaged recipients, keep bounce rates under a few percent, and raise volume over weeks. Big receivers score domains and IPs separately — your domain reputation travels with you even across IPs.
Stack suggestions
- Mailcow or Mail-in-a-Box for an all-in-one start; Postfix+Dovecot+Rspamd for a hand-rolled stack.
- Business or Pro VPS handle typical personal/domain mail loads fine; storage is not the bottleneck — reputation is.
- Separate transactional sends from personal mail on different identities/IPs.
Short answer: what it takes to run your own mail on a VPS
You can run a working personal mail server on one VPS if three things are true before the first message leaves: the IP has correct reverse DNS, your DNS zone carries SPF, DKIM and DMARC records that match the server's key, and you send slowly for the first two to three weeks while the IP builds reputation. Everything else - the MTA software, the disk size, the RAM - is secondary to those three, because receiving servers judge your mail by them, not by your hardware.
The table below is the full prerequisite list. If any row is missing, the likely symptom is delivery to spam or a hard bounce, not a software error, which is why most failed self-hosting attempts are DNS and reputation failures rather than Postfix configuration failures.
| Requirement | What it looks like | If missing |
|---|---|---|
| Domain you control | Access to the zone file at any DNS provider | Cannot publish SPF/DKIM/DMARC; mail fails alignment |
| Dedicated IPv4 | One address only your server uses, with rDNS set to your mail hostname | Shared or blacklisted IP poisons every message |
| Port 25 outbound | Open by default on our plans | Queue fills, nothing delivers |
| NVMe disk | 60 GB on Starter is enough for a one-person mailbox for years | Queue and archives fill the disk; the MTA stops accepting |
| Warm-up patience | Low-volume sends for 2-3 weeks before relying on it | Bulk first-week sends land the IP on reputation lists |
From bare server to a delivered test message: the install sequence
Once the DNS records from the step-by-step section exist, the software side is about half an hour. The sequence below assumes Debian or Ubuntu on a Starter-class VPS (2 vCPU, 4 GB ECC, 60 GB NVMe) and the mail.example.com hostname pointed at your IPv4 with reverse DNS already set by the provider panel or a support request.
- Set the hostname and check it resolves both ways:
hostnamectl set-hostname mail.example.com, thendig +short mail.example.comanddig +short -x YOUR_IPV4- the two answers must match. - Install the stack:
apt install postfix dovecot-imapd opendkim opendkim-tools. Choose "Internet Site" and enter your mail domain when prompted. - Generate the DKIM key:
opendkim-genkey -D /etc/opendkim/keys -d example.com -s mail, then publish the contents ofmail.txtas a TXT record in your zone. - Wire DKIM into Postfix via the Unix socket in
/etc/default/opendkimand add thesmtpd_miltersline pointing atlocal:/run/opendkim/opendkim.sock. - Open exactly the ports mail needs: 25 for server-to-server SMTP, 465 and 587 for your own submission, 993 for IMAP. Close everything else at the firewall before going live.
- Restart in order -
systemctl restart opendkim postfix dovecot- and confirm all three are active withsystemctl status. - Send the first message to an external address and read
tail -f /var/log/mail.log: a clean delivery showsstatus=sent (250 ...)with a DKIM pass reported by the far side.
The first external send is the moment most of the DNS mistakes surface, so do it before configuring clients, aliases or filters. One delivered message with status=sent tells you more than an hour of local testing.
How to verify deliverability before real users rely on it
Verify from the outside in: the far-end receiver's opinion is the only one that matters, so every check below uses an external grader or the receiver's own signals rather than your logs. Run all four in the first hour, then repeat the same checks after two weeks of warm-up - the delta between the two runs is your real reputation curve.
- Send to a mail tester service that returns a scored report. Anything below 8/10 almost always names the exact record that is wrong - usually SPF missing the server's IP or a DKIM selector mismatch.
- Check alignment manually:
dig +short TXT example.commust show SPF listing your IPv4,dig +short TXT mail._domainkey.example.commust return the published key, and the DMARC record at_dmarc.example.commust exist even in monitoring-only form. - Confirm reverse DNS from a third party: a PTR lookup on your IPv4 must return
mail.example.com, and forward-resolving that name must return the same IP. Any mismatch is an automatic spam score. - Test the outbound path itself:
swaks --to [email protected] --server localhostfrom the server, then confirm in/var/log/mail.logthat the remote answered 250 rather than greylisting you into permanent defer.
Two weeks later, send to accounts at the large consumer providers and check whether the message lands in the inbox, then look up your IPv4 on the major blocklist checkers. If the early sends were disciplined - a handful per day, no attachments nobody asked for - inbox placement at this point is normal, and you can move your real correspondence onto the server.
Troubleshooting: the five ways a new mail server fails
Symptom → cause → fix, ordered by how often each one is actually the problem. Before touching software, re-read the log line for the failed message: /var/log/mail.log states the remote server's rejection reason verbatim, and that sentence usually names the row below for you.
- Symptom: 550 spam-rejected by the receiver. Cause: missing or mismatched SPF/DKIM/rDNS. Fix: re-run the four verification checks; the rejection text usually says which check failed. This is roughly three out of four first-week failures.
- Symptom: messages sit in queue as deferred, timing out. Cause: outbound port 25 filtered somewhere on the path, or the destination is greylisting you. Fix:
mailqto inspect,postqueue -fto retry; if everything to every domain defers, test port 25 from the server withnc -vz far-side-mx 25- our plans leave it open, so a total block usually means your own firewall. - Symptom: you can send but clients cannot fetch mail. Cause: Dovecot auth or TLS certificate problem on 993. Fix:
openssl s_client -connect mail.example.com:993and read the certificate chain; a self-signed cert in a client set to strict verification fails silently-looking. - Symptom: DKIM passes on some messages, fails on others. Cause: the milter is not applied to the submission port, so only locally generated mail gets signed. Fix: confirm
smtpd_milterscovers the submission service inmaster.cf, not just port 25. - Symptom: works for a month, then everything bounces at once. Cause: disk full - the queue cannot write. Fix:
df -h /var; archive or prune old mail, thenpostqueue -f. NVMe on Starter is 60 GB, which a one-person mailbox does not exhaust for years, but logs and a growing archive will get there eventually.
Performance sizing: what an MTA actually loads, queue by queue
A personal mail server is close to idle most of the day, which is why Starter is the right default and why upgrading for "mail performance" is almost always the wrong spend. The load profile is spiky: a burst of message ingestion at receiving time, DKIM signing on every outbound message, and Dovecot indexing during client sync. Two vCPU and 4 GB ECC absorb all of that for a single operator with room to spare; the honest performance constraint on this workload is disk, not CPU.
Plan the disk as three pools: the live queue, the mailboxes, and the logs. The queue should stay near empty - anything persisting in /var/spool/postfix means an outbound path problem, and a queue measured in megabytes is a warning, not a size. Mailboxes grow at a pace you can predict from your own current usage; count a year of retention and double it. Logs are the sleeper: verbose MTA logging plus Dovecot can reach gigabytes per quarter, so add logrotate rules on day one rather than after the first disk-full incident.
Where a bigger plan genuinely helps is when mail is one service among several on the box - mail plus a web app plus a database on Business (6 vCPU, 16 GB, 240 GB) is a normal consolidation, and the 240 GB NVMe pool is what buys years of archive instead of aggressive pruning. If you separate mail onto its own server instead - which we recommend for IP reputation reasons - you are usually paying for isolation, not speed, and Starter at $8.50/mo delivers that isolation. ECC RAM matters here more than on a typical web box: a mail store is a database, and silent bit flips in cached indexes are a corruption source you never want to debug.
Security hardening: closing what a mail server leaves open
A mail server is the most attacked service most people will ever run, because port 25 is scanned continuously by address ranges looking for open relays. Hardening is therefore not optional, and it is mostly about refusing to be useful to strangers: a correctly configured server accepts relayed mail only from authenticated own users, and everything else it accepts is addressed to its own domains.
- Verify you are not an open relay from the outside:
swaks --to [email protected] --server mail.example.comwithout authentication must be refused with a relay-denied response. Run this check after every Postfix change. - Require TLS and authentication on submission: in
master.cf, the 587 and 465 services should setsmtpd_tls_auth_only=yesand reject unauthenticated senders. Passwords over plaintext SMTP are the classic leak. - Restrict management surface: SSH on keys only, firewall admitting 993, 465 and 587 from anywhere but 22 only from your addresses, and fail2ban watching the Dovecot and Postfix auth logs. Brute-force noise on a public mail host is constant.
- Keep DKIM keys and the mailbox store on permissions that only the owning services can read - the DKIM private key in particular should be readable by the milter user and nobody else.
- Patch on the distro cycle:
apt update && apt upgrademonthly, with unattended upgrades for security patches enabled from day one. MTA vulnerabilities are exploited in the wild faster than web app ones.
None of this is exotic, and that is the point: a mail server's security posture is a handful of boring checks repeated after changes, and the open-relay test is the one that must never be skipped.
BitCloudVPS Starter · port 25 open · $8.50/mo
Deploy a mail VPS in 60 secondsSizing the MTA: which plan carries personal mail
Mail is light on CPU and heavy on reputation, so sizing is about disk and memory headroom for the filtering stack. Nano at $5.49/mo - $3/mo on the flat $36/yr annual - runs Postfix for genuinely low volume, but an all-in-one like Mailcow wants its Docker set, Rspamd and Redis to breathe. Starter at $8.50/mo is the comfortable floor: 2 vCPU on an EPYC 7443P, 4 GB ECC RAM, 60 GB NVMe. The ECC memory earns its keep on a mail store you do not want to re-sync after a bad crash. Business at $30 list ($24/mo billed yearly) is the pick once you serve several domains or keep years of archives locally. Beyond 60 GB of mail, the storage line is the overflow tier: 1-5 TB of NVMe at $24-$56/mo, up to 8 vCPU and 32 GB RAM. Two structural facts repeat regardless of size: port 25 is open on every VPS and dedicated plan - no unblocking tickets - and the PTR record is editable from the panel, which you will set before the first send. Terms discount 10% quarterly and 20% annually, payable in any of 19 crypto assets with no KYC.
IP reputation: what the host controls, what you control
Deliverability splits into two halves and buyers routinely attribute both to the host. The host's half: a clean range - BitCloudVPS does not mix mail IPs with high-churn spam tenants, port 25 stays open, PTR is editable per server, and documented abuse gets the offender rotated off the range. Your half: SPF, DKIM and DMARC published for your sending domain, a matching HELO, warmed volume, and bounce hygiene. A fresh IP with no history lands in spam no matter whose network it is on - big receivers score your domain separately from the IP, and the domain reputation travels with you when you move hosts. What no host can promise: that every shared range is loved by every receiver on day one, or that a neighbour's bad week does not touch the /24. If deliverability is revenue-critical, the honest architecture is self-hosted personal and domain mail on your own box plus a dedicated ESP for bulk marketing - not a bigger VPS. The mail guide's short version: reputation is physics, not a plan feature.
Step by step: PTR, SPF, DKIM, DMARC, first send
- Deploy the VPS and set the PTR record for its IPv4 to your mail hostname (mail.example.org) in the panel, before the first send.
- Install the stack - Mailcow for an all-in-one, or Postfix with Dovecot and Rspamd for a lean setup - and bind it to the mail hostname.
- Publish SPF in DNS, generate a 2048-bit DKIM key and publish the selector record, then add a DMARC policy; DNSSEC if the registrar supports it.
- Warm up over 2-4 weeks: low volume to engaged recipients, bounces under a few percent, then raise volume gradually.
- Watch the logs - Rspamd's dashboard tells you what receivers think before their postmaster tools do.
Total setup time is an afternoon; the warm-up is the part that cannot be compressed. Outbound port 25 is already open on the plan, so there is no step where you wait on a host ticket.
When a VPS is the wrong tool for mail
An honest guide names the cases where self-hosting mail fails before it starts. If you need guaranteed inbox placement for transactional volume, use a dedicated sending service - deliverability there is a staffed discipline, not a configuration. If you cannot tolerate an afternoon of admin when a TLS certificate or DNS record expires, a managed mailbox is cheaper than missed mail. If your list includes recipients whose providers greylist aggressively, expect the first weeks to need manual attention regardless of stack. And if your goal was anonymous bulk mail, that fails on reputation physics before any policy question - receivers score domains and volumes, and crypto payment does not change what a receiver sees. What the VPS route is right for: personal and family mail, small-domain mail you fully control, archival addresses on your own domains, and the satisfaction of a mail store nobody else can scan. For those, Starter at $8.50/mo is the whole infrastructure bill, port 25 open and PTR editable from day one.
Where the limits are (October 2026)
Keep the threat model precise. Anonymous-adjacent hosting removes the host-side identity trail: token-only signup, optional email, no KYC review, crypto invoices that record a txid rather than a name. It does not blind the host to traffic it must carry, it does not make a logged-in panel session anonymous, and it does not protect workloads that identify themselves — an admin login from your home IP defeats the whole design. Exact limits of no-KYC anonymity. OPSEC guide. Full checklist. Payment-side note: chain analysis happens on public blockchains, not at the host. Coin choice and network choice are your OPSEC knobs, and the checkout keeps 19 of them open.
Is port 25 blocked on BitCloudVPS?
No. Port 25 is open on VPS and dedicated lines; PTR is editable from the panel.
Can I send bulk marketing from a VPS?
Technically yes, practically no — bulk sending needs dedicated reputation management. Self-host personal and domain mail; use a proper ESP for bulk.
Which location is best for mail?
Switzerland if process is the story; Amsterdam if AMS-IX deliverability; Iceland if you want a non-EU flag. Mail latency barely matters.
Mailcow?
Yes — you install Mailcow, Mail-in-a-Box, or Postfix. We rent root; we do not operate the MTA.
Extra IPv4 for mail vs web?
Yes — extra IPv4 is $3.50/mo so sending reputation does not poison the site IP.
Do I need a second IPv4 address to separate mail from web?
It is the cleaner design and the one we recommend: mail on its own IPv4 with its own rDNS, web on another, so a spam listing on the mail IP cannot affect site reputation. Each VPS plan includes one IPv4, so separation means two plans or using the hostname-based approach on one address.
Can I run my mail server behind Cloudflare or a proxy?
No for SMTP - proxies handle HTTP, not port 25, and receivers connect to your MX directly. You can proxy the webmail interface, but the MX record must point at your server's real IPv4, which is why correct rDNS and clean IP reputation matter so much.
How much RAM does a full Mailcow stack need compared to plain Postfix?
Mailcow's container stack wants roughly 6 GB to run comfortably, which puts it on Plus or Business. Plain Postfix with Dovecot runs well in under 1 GB, so on Starter choose the simple stack unless you specifically need the web UI and integrated features.
Does the annual discount change the economics for a mail server?
Yes, and more than for most workloads because a mail server is long-lived by nature: reputation accrues to the IP, so you will not churn it. Annual terms cut 20% off the list price, which turns the $8.50 Starter into $6.80/mo effective for as long as the server runs.
How long before self-hosted mail stops landing in spam?
Plan on 2-4 weeks of warm-up: low volume to engaged recipients with bounces kept low, while SPF, DKIM and DMARC accumulate a passing history. Domain reputation carries across IPs, so the warm-up is about the domain, not just the fresh IP.
Can I host mail for several domains on one VPS?
Yes - Mailcow and Stalwart both handle multiple domains on one installation. Starter's 4 GB ECC RAM carries a handful of light domains; give each domain its own DKIM keys and keep their volumes modest, since they share one IP reputation.
What must be in place before my mail server's first send?
Three things: an editable rDNS with the PTR set to your mail hostname so it matches your HELO, port 25 reachable — it is open on our VPS and dedicated lines — and SPF, DKIM and DMARC published for the sending domain. Start with low volume to engaged recipients and raise it over weeks.
What does the host actually know about me?
Whatever you hand over: a signup token, an optional email address, the invoice you paid and the service traffic. No ID documents, no phone number, no KYC step exists to hand anything else over.
What won't an anonymous VPS protect against?
Self-inflicted links: personal logins from a home IP, leaked cookies, services that publish your address, and on-chain patterns that tie wallets together. The server removes one identifier; it does not fix operational mistakes.
Primary sources
Ready to launch?
Configure a VPS or dedicated server, set a password, then pay the invoice.
Network
Edge RTT
Uptime · 36h
Complaints · 36h