Cloudflare Docs
Learning Paths
Edit this page
Report an issue with this page
Log into the Cloudflare dashboard
Set theme to dark (⇧+D)

Set up email records

  1 min read

​​ Receive email

If you only need to receive emails, Cloudflare offers Email Routing for free email forwarding to custom email addresses.

​​ Send and receive email

To send and receive emails from your domain, you need:

  • An SMTP provider.
  • To create two DNS records within Cloudflare.

To route emails through Cloudflare and to your mail server:

  1. Get the IP address and MX record details from your SMTP provider (vendor-specific guidelines).

  2. Add an A or AAAA record for your mail subdomain that points to the IP address of your mail server.

    TypeNameIPv4 addressProxy status
    Amail192.0.2.1DNS only
    API example
    Request
    curl -sX POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" \
    -H "x-auth-email: <EMAIL>" \
    -H "x-auth-key: <API_KEY>" \
    -H "Content-Type: application/json" \
    --data '{
    "type":"A",
    "name":"www.example.com",
    "content":"192.0.2.1",
    "ttl":3600,
    "proxied":false
    }'
    Response
    {
    "result": {
    "id": "<ID>",
    "zone_id": "<ZONE_ID>",
    "zone_name": "example.com",
    "name": "www.example.com",
    "type": "A",
    "content": "192.0.2.1",
    "proxiable": true,
    "proxied": false,
    "ttl": 1,
    "locked": false,
    "meta": {
    "auto_added": false,
    "managed_by_apps": false,
    "managed_by_argo_tunnel": false,
    "source": "primary"
    },
    "comment": null,
    "tags": [],
    "created_on": "2023-01-17T20:37:05.368097Z",
    "modified_on": "2023-01-17T20:37:05.368097Z"
    },
    "success": true,
    "errors": [],
    "messages": []
    }
  3. Add an MX record that points to that subdomain.

    TypeNameMail serverTTL
    MX@mail.example.comAuto
    API example
    Request
    curl -sX POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/dns_records" \
    -H 'x-auth-email: <EMAIL>' \
    -H 'x-auth-key: <API_KEY>' \
    -H "Content-Type: application/json" \
    --data '{
    "type":"MX",
    "name":"example.com",
    "content":"mail.example.com",
    "ttl":3600
    }'
    Response
    {
    "result": {
    "id": "<ID>",
    "zone_id": "<ZONE_ID>",
    "zone_name": "example.com",
    "name": "example.com",
    "type": "MX",
    "content": "mail.example.com",
    "priority": 10,
    "proxiable": false,
    "proxied": false,
    "ttl": 3600,
    "locked": false,
    "meta": {
    "auto_added": false,
    "managed_by_apps": false,
    "managed_by_argo_tunnel": false,
    "source": "primary"
    },
    "comment": null,
    "tags": [],
    "created_on": "2023-01-17T20:54:23.660869Z",
    "modified_on": "2023-01-17T20:54:23.660869Z"
    },
    "success": true,
    "errors": [],
    "messages": []
    }