Before you start
- Access to the panel where the domain’s DNS is edited. Usually it is at Cloudflare, but if the domain uses another company’s DNS servers (nameservers), the zone is there and that is where you work.
- If the domain already receives email somewhere else (a hosting mailbox, Google Workspace, Microsoft 365), changing the MX makes new email come through mxproxy. Old messages stay where they are.
- An mxproxy account. Create yours for free, no card.
1. Add the domain to mxproxy
- Create the account (or sign in) and, under Domains, add your domain, for example
yourdomain.com. - Open the domain: the page shows the DNS records to create. Keep that tab open; you will copy the values from it.
The DKIM key and the code of the _mxproxy TXT are unique to each domain: copy them from the dashboard, not from this guide.
2. Open Cloudflare’s DNS zone
- In the Cloudflare dashboard, pick the account and the domain.
- Open DNS › Records.
- Click Add record, pick the type, fill it in and save. Repeat for each record.
How to fill in the name (host) at Cloudflare
Use @ for the root and only the beginning for the others (_mxproxy, _dmarc, the selector with ._domainkey); Cloudflare adds the domain. The MX has a Priority field.
3. Create the MX, SPF, DKIM and verification records
Create these records in the domain’s zone. The first two are the same for everyone; the last two have values of their own, which you copy from the mxproxy dashboard.
| Type | Name (host) | Value | Priority |
|---|---|---|---|
| MX |
@
|
mx.mxproxy.dev
|
10 |
| TXT |
@
|
v=spf1 include:spf.mxproxy.dev ~all
|
— |
| TXT |
mx202610._domainkey
the selector the dashboard shows |
v=DKIM1; k=rsa; p=…copy from the mxproxy dashboard |
— |
| TXT |
_mxproxy
|
mxproxy-verify=…copy from the mxproxy dashboard |
— |
- One SPF only. If the domain already has a TXT starting with
v=spf1(from a host, Google, an online store), do not create another: addinclude:spf.mxproxy.devto the existing one, before the~allor-all. Two SPF records make both fail. - Delete the old MX records. Email goes to the answering MX with the lowest priority number: a leftover MX can receive part of the messages.
- The whole DKIM. The value is long (it starts with
v=DKIM1; k=rsa; p=). Copy it with the dashboard’s button and paste it without line breaks or extra spaces. - Domain in the name. If the panel adds the domain to the name by itself, type only
_mxproxy; if you type_mxproxy.yourdomain.com, the record becomes_mxproxy.yourdomain.com.yourdomain.com.
Optional, but recommended
- MTA-STS: CNAME
mta-sts→mta-sts.mxproxy.devand the two TXT records (_mta-stsand_smtp._tls) the dashboard shows. It makes the servers that send to you require TLS. We host the policy. - DMARC: TXT
_dmarcwithv=DMARC1; p=none; rua=mailto:dmarc@yourdomain.comto start by just watching. The reports arrive by email; the DMARC reader opens the files.
What is different at Cloudflare
- Turn off Cloudflare Email Routing first. If the domain uses Email Routing, it created and locked its own MX, SPF and DKIM at the root, which cannot be edited in DNS › Records. Disable it in Email Routing › Settings › Disable Email Routing (in the current menu, under Compute › Email Service): that removes its records, and then you create mxproxy’s. There is also Unlock, but an unlocked record stays tied to Email Routing and is deleted if you disable it later.
- Grey cloud on
mta-sts. MX and TXT are never proxied. The (optional)mta-stsCNAME must be DNS only, grey cloud: proxied, the name resolves to Cloudflare and we cannot issue the policy’s certificate. - Long TXT. Each record takes up to 4,096 bytes and Cloudflare adds the quotes itself: paste the DKIM as it is.
- Nameservers. The Cloudflare zone only works if the domain’s registrar points to the nameservers Cloudflare gave you.
- Comparing Email Routing with mxproxy? See the comparison.
4. Check
Back in the mxproxy dashboard, click Verify now. Each record shows as ok or pending.
Want to check from the outside? Use the free checker, no sign-up:
Still pending? A DNS change usually takes minutes, but can take a few hours (until the old record’s TTL runs out). Wait and check again.
5. Choose where each address goes
- Catch-all: all email to any address of the domain goes to the inbox you choose (your Gmail, for example). That is what the free plan offers: one domain, one destination, 10 messages a month.
- Forwarders: one address per line (
hello@to you,billing@to your accountant), with up to 10 destinations each, depending on the plan. From Personal up.
Send an email from another address to hello@yourdomain.com: it should arrive within seconds. The dashboard’s log shows each message.
6. Reply as the domain in Gmail
To reply as hello@yourdomain.com, and not as your personal address, Gmail needs an SMTP server: create a credential in the dashboard (paid plans, from Personal up) and add the address under Send mail as, with server smtp.mxproxy.dev, port 587. The step by step, for Gmail and Outlook, is in Reply from your domain.
If it does not work
- MX pending: check that no old MX is left and that the name is the root (
@or blank, depending on the panel), notmxorwww. - SPF pending: is there only one
v=spf1TXT, and does it containinclude:spf.mxproxy.dev? - DKIM pending: the name is exactly the dashboard’s (with
._domainkey) and the value was pasted whole. - Nothing changes: where the domain is registered, look at its DNS servers (nameservers). If they are not Cloudflare’s, the changes have to be made at the company of those servers.
Still stuck? Write to contato@mxproxy.dev.