{"componentChunkName":"component---src-templates-post-template-js","path":"/2020/04/25/custom-email-domain-with-now/","result":{"data":{"mdx":{"frontmatter":{"title":"Configure Custom Domain Email with Zoho and Now","date":"2020 April 25th"},"body":"function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"date\": \"2020-04-25T00:00:00.000Z\",\n  \"title\": \"Configure Custom Domain Email with Zoho and Now\",\n  \"tags\": [\"information\", \"guide\", \"now\", \"domains\"],\n  \"published\": true\n};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar YouTube = makeShortcode(\"YouTube\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, [\"components\"]);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"In this guide I\\u2019m going to cover the configuring of your custom domain\\nwith Vercel\\u2019s Now platform using the Now CLI.\"), mdx(\"p\", null, \"I\\u2019ll be primarily covering the steps you take after setting up an\\naccount with an email provider, the email provider I\\u2019m using is \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.zoho.com/mail/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"Zoho\\nMail\"), \" if you don\\u2019t use either of these services then this guide may\\nnot be much use to you.\"), mdx(\"h2\", {\n    \"id\": \"what-youll-need\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#what-youll-need\",\n    \"aria-label\": \"what youll need permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"What you\\u2019ll need\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a super awesome custom domain\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://www.zoho.com/mail/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"Zoho Mail\"), \" account\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"a \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://vercel.com/signup\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"Vercel.co\"), \" account\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"The \", mdx(\"a\", _extends({\n    parentName: \"li\"\n  }, {\n    \"href\": \"https://vercel.com/download\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"Now CLI\"), \" installed\")), mdx(\"p\", null, \"It\\u2019s implied that you have a machine set up for web development\\nalready and are familiar with using the terminal.\"), mdx(\"p\", null, \"If you need to get set up for Windows \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://thelocalhost.blog/2018/12/24/wsl-bootstrap-2019/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"I have written a guide\"), \"\\npreviously on that topic.\"), mdx(\"p\", null, \"If you\\u2019re a Linux user, check out this video on getting set up:\"), mdx(YouTube, {\n    youTubeId: \"eSAsdQuQ-1o\",\n    mdxType: \"YouTube\"\n  }), mdx(\"h2\", {\n    \"id\": \"set-up-an-account\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#set-up-an-account\",\n    \"aria-label\": \"set up an account permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"Set up an account\"), mdx(\"p\", null, \"Zoho mail offer a 5 GB \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://workplace.zoho.eu/orgsignup.do\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"forever free plan\"), \", so as long as you can\\nmanage your email archiving then you are good to go.\"), mdx(\"p\", null, \"You also get up to five users and a 25mb file attachment limit with\\nhosting for a single domain.\"), mdx(\"p\", null, \"Pretty good right!\"), mdx(\"h2\", {\n    \"id\": \"create-an-admin-super-user\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#create-an-admin-super-user\",\n    \"aria-label\": \"create an admin super user permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"Create an admin super user\"), mdx(\"p\", null, \"When you sign up with \", mdx(\"a\", _extends({\n    parentName: \"p\"\n  }, {\n    \"href\": \"https://www.zoho.com/mail/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }), \"Zoho Mail\"), \" you will be prompted to create a\\nsuper admin user for your zoho account and you\\u2019re given the\\nopportunity to set up two factor authentication (2fa).\"), mdx(\"p\", null, \"Zoho will even tell you about their authenticator app, which is only\\nfor authenticating with Zoho. Use this is you like, I use a 2fa app\\nthat you can use for multiple services.\"), mdx(\"h2\", {\n    \"id\": \"verify-you-own-the-domain\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#verify-you-own-the-domain\",\n    \"aria-label\": \"verify you own the domain permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"Verify you own the domain\"), mdx(\"p\", null, \"You will be given a code to verify that you are the owner of the\\ndomain, which you will need to add as a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"TXT\"), \" entry on your domain\\nwith the Now CLI.\"), mdx(\"p\", null, \"The verification token will look something like this:\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"zoho-verification=se4567894.zmverify.zoho.eu\\n\")), mdx(\"p\", null, \"Add that to your domain DNS with the Now CLI, you can check your\\ndomain DNS entries with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"ls\"), \" command.\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"# list your dns entries\\nnow dns ls yourdomain.com\\n# add the zoho verification as a TXT record\\nnow dns add yourdomain.com @ TXT zoho-verification=se4567894.zmverify.zoho.eu\\n\")), mdx(\"h2\", {\n    \"id\": \"add-the-mx-records\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#add-the-mx-records\",\n    \"aria-label\": \"add the mx records permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"Add the MX records\"), mdx(\"p\", null, \"Now to configure the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"MX\"), \" records. MX records are essential to receive\\nemails in your domain. The MX records for your domain will look\\nsomething like this:\"), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"Host Name\"), mdx(\"th\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"Address\"), mdx(\"th\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"Priority\"))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"@ / Blank\"), mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"mx.zoho.eu\"), mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"10\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"@ / Blank\"), mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"mx2.zoho.eu\"), mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"20\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"@ / Blank\"), mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"mx3.zoho.eu\"), mdx(\"td\", _extends({\n    parentName: \"tr\"\n  }, {\n    \"align\": null\n  }), \"50\")))), mdx(\"p\", null, \"Add them much in the same way as with the verification token with the\\nNow CLI this time specifying an \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"MX\"), \" instead of \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"TXT\"), \" and there\\u2019s a\\nsecond argument for the priority:\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"now dns add yourdomain.com @ MX mx.zoho.eu 10\\nnow dns add yourdomain.com @ MX mx.zoho.eu 20\\nnow dns add yourdomain.com @ MX mx.zoho.eu 50\\n\")), mdx(\"h2\", {\n    \"id\": \"set-the-sender-policy-framework-spf\",\n    \"style\": {\n      \"position\": \"relative\"\n    }\n  }, mdx(\"a\", _extends({\n    parentName: \"h2\"\n  }, {\n    \"href\": \"#set-the-sender-policy-framework-spf\",\n    \"aria-label\": \"set the sender policy framework spf permalink\",\n    \"className\": \"anchor before\"\n  }), mdx(\"svg\", _extends({\n    parentName: \"a\"\n  }, {\n    \"aria-hidden\": \"true\",\n    \"focusable\": \"false\",\n    \"height\": \"16\",\n    \"version\": \"1.1\",\n    \"viewBox\": \"0 0 16 16\",\n    \"width\": \"16\"\n  }), mdx(\"path\", _extends({\n    parentName: \"svg\"\n  }, {\n    \"fillRule\": \"evenodd\",\n    \"d\": \"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"\n  })))), \"Set the Sender Policy Framework (SPF)\"), mdx(\"p\", null, \"To ensure that valid emails from your domain get delivered to your\\nusers, and spoofed emails from other spammers are identified by the\\nother email services, it\\u2019s recommend you add an SPF record for your\\ndomain.\"), mdx(\"p\", null, \"This will go into a \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"TXT\"), \" record like with the verification token:\"), mdx(\"pre\", null, mdx(\"code\", _extends({\n    parentName: \"pre\"\n  }, {\n    \"className\": \"language-bash\"\n  }), \"now dns add yourdomain.com @ TXT 'v=spf1 include:zoho.eu ~all'\\n\")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Note: You may need to wait a while after making these changes before\\nthe DNS updates can be verified via Zoho.\")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"In this guide I'm going to cover the configuring of your custom domain\nwith Vercel's Now platform using the Now CLI. I'll be primarily…","tableOfContents":{"items":[{"url":"#what-youll-need","title":"What you'll need"},{"url":"#set-up-an-account","title":"Set up an account"},{"url":"#create-an-admin-super-user","title":"Create an admin super user"},{"url":"#verify-you-own-the-domain","title":"Verify you own the domain"},{"url":"#add-the-mx-records","title":"Add the MX records"},{"url":"#set-the-sender-policy-framework-spf","title":"Set the Sender Policy Framework (SPF)"}]},"timeToRead":2,"fields":{"slug":"/2020/04/25/custom-email-domain-with-now/","editLink":"https://github.com/spences10/thelocalhost/edit/authoring/posts/2020/04/25/custom-email-domain-with-now/index.mdx"}}},"pageContext":{"slug":"/2020/04/25/custom-email-domain-with-now/","previous":{"id":"94e1257c-e0a9-5a96-bbcc-ab7a74fd77a9","excerpt":"Remember services like  Bitly  and  TinyURL ? Yeah, they still exist,\nshortening your URLs for you, they've been around for a long time too. Bitly founded in 2008 and TinyURL founded in 2002 😱 In this post I'm detailing how I made my own Bitly with…","frontmatter":{"title":"Make a simple, personal, URL shortener with Now.sh","date":"2020-04-19T00:00:00.000Z"},"fields":{"slug":"/2020/04/19/url-shortener-with-nowsh/"}},"next":{"id":"d98b78d7-ed4e-5fa5-8942-fb91bba996e7","excerpt":"Quite a while ago now I was introduced to tools like Renovate and\nGreenkeeper, at the time I thought they were awesome, keeping your\nprojects patches and secure so I went and used them in every project I\nmade. Busy work That was an incredible PITA…","frontmatter":{"title":"Continuous Deployments on Non Essential Projects","date":"2020-04-27T00:00:00.000Z"},"fields":{"slug":"/2020/04/27/continus-deployment/"}}}}}