[email protected] looks more professional than a free webmail address, and keeps your email portable if you change providers. There are two main ways to get it: a hosted email service, or your own mail server on a VPS. They differ a lot in effort and in deliverability. Here’s how to decide, and how to set up the DNS either way.
Option 1: hosted email (recommended for most)
Providers such as Google Workspace, Microsoft 365, Zoho Mail, Fastmail, Proton and Migadu host mailboxes for your domain. You:
- sign up and verify the domain (usually a TXT record);
- add their MX records (where mail is delivered);
- add their SPF, DKIM and DMARC records (authentication).
They handle spam filtering, deliverability, storage, webmail, mobile apps and security. Your websites stay on the VPS: the A record and MX records are independent.
Option 2: self-hosted mail server on a VPS
Running your own Postfix + Dovecot (or an all-in-one like Mailcow, Mail-in-a-Box or Stalwart) gives full control and unlimited mailboxes. It also requires:
- outbound port 25 open (many providers block it by default);
- a clean IP address with no spam history;
- a PTR (reverse DNS) record matching your mail hostname;
- correct SPF, DKIM and DMARC;
- ongoing maintenance: updates, spam filtering, blocklist monitoring, backups.
On VPS.DO, outbound mail and PTR records are supported on USA VPS plans, and you can set PTR in the client area. See email VPS, Mail-in-a-Box, and Postfix and Dovecot.
Comparison
| Hosted email | Self-hosted | |
|---|---|---|
| Setup time | Minutes | Hours, plus learning |
| Deliverability | Excellent out of the box | Depends on IP reputation and configuration |
| Spam filtering | Included | You configure it (Rspamd, SpamAssassin) |
| Cost | Per mailbox per month | VPS cost; unlimited mailboxes |
| Maintenance | None | Updates, monitoring, backups |
| Privacy / control | Provider’s terms | Full control |
DNS records you need (either option)
| Record | Example | Purpose |
|---|---|---|
| MX | @ MX 10 mail.example.com (or the provider’s hosts) |
Where incoming mail goes |
| SPF (TXT) | v=spf1 include:_spf.provider.com -all |
Which servers may send for your domain |
| DKIM (TXT) | selector._domainkey → public key |
Cryptographic signature of outgoing mail |
| DMARC (TXT) | _dmarc → v=DMARC1; p=quarantine; rua=mailto:[email protected] |
Policy for failed checks, and reports |
| A | mail → server IP |
Only for self-hosted servers |
| PTR | IP → mail.example.com |
Set at the hosting provider (self-hosted) |
Use one SPF record per domain, combining all senders (include: for your mailbox provider and your transactional email service). See SPF, DKIM and DMARC and DNS records explained.
Sending email from websites and apps
Contact forms, password resets and order confirmations shouldn’t rely on the VPS’s local mail() function. Use:
- a transactional email service (Amazon SES, Postmark, Mailgun, Brevo and others) via SMTP or API. See transactional email services;
- or your mailbox provider’s SMTP (low volume only).
Add that service to your SPF and DKIM records. See WordPress email and SMTP.
Check your setup
- Send a test to an online checker (for example mail-tester.com), and aim for 9–10/10.
dig +short MX example.com,dig +short TXT example.com,dig +short TXT _dmarc.example.com.- Read DMARC reports for a few weeks, then tighten the policy (
p=quarantine→p=reject).
See email deliverability.
Quick reference
| Situation | Recommendation |
|---|---|
| Business mailboxes | Hosted email |
| App/website email | Transactional email service |
| Full control, many mailboxes, skills to maintain | Self-hosted on a USA VPS with PTR |
| Must-have DNS | MX, SPF, DKIM, DMARC |
Related: point a domain to a VPS and SMTP ports.