Skip to content

We use analytics cookies to see how the site is used. They are only set if you accept. Accepting also turns on session recording (pages viewed, clicks and scrolls) so we can fix problems; what you type stays hidden. Read the privacy policy

Email and domain security basics for a new startup

A one-afternoon setup for founders who are not email or security specialists: the DNS records, headers and files that keep your mail out of spam and your site free of browser warnings, and what each one does and does not protect against.

By the SitePatent Editorial Team. Published , revised . 20 minute read, 17 sources.

ShareXLinkedInFacebook
A terminal querying SPF, DKIM and DMARC records for example.com beside a staircase from p=none to quarantine to reject.

The short answer

What should a new startup domain set up to look credible to mailbox providers and browsers?

Publish one SPF record, turn on DKIM signing at every service that sends your mail, and add a DMARC record at p=none with a reporting address, then tighten it to quarantine and reject once reports are clean. Serve the whole site over HTTPS with an HSTS header, add a handful of security headers, publish a security.txt file, a real privacy policy and a contact address on your own domain.

Time needed
One afternoon, then weeks of DMARC monitoring
Cost
Free (DNS records and headers)
Skill level
Can edit DNS and site config
Best done
Before your first customer email

What you will leave with

  • SPF, DKIM and DMARC check three different things. DMARC is the only one tied to the From address your recipient actually sees.
  • Gmail and Yahoo require SPF or DKIM from every sender. Bulk senders must add both, plus DMARC and one-click unsubscribe on marketing mail. Enforcement began in February 2024.[1][5]
  • Gmail treats you as a bulk sender for good once you send close to 5,000 messages to personal Gmail accounts in 24 hours, even once.[2]
  • Start DMARC at p=none, read the reports, then move to quarantine and only then to reject. Jumping straight to reject is how real invoices get lost.
  • None of this stops lookalike domains or display-name spoofing. The DMARC standard says so itself.[10]

What should a new startup domain set up in its first week?

Email authentication first, then HTTPS with HSTS, then the small files and pages that tell a stranger a real company is behind the domain. Done right, nobody notices any of it.

This work is invisible when it is correct and loud when it is not. A missing DKIM signature shows up as a password reset in the spam folder. A lapsed certificate shows up as a full-page "Your connection is not private" error in Chrome.[16]

The scale of filtering explains why mailbox providers are strict. The figures below are Google's own, published in October 2023 when it announced the bulk-sender rules.

Drop in unauthenticated messages reaching Gmail users after Gmail began requiring some form of authentication (Google, 2023)[3]
75%
Share of spam, phishing and malware Gmail says its defenses stop before the inbox (Google, 2023)[3]
99.9%
Unwanted emails Gmail says it blocks every day (Google, 2023)[3]
Nearly 15 billion
Messages to personal Gmail accounts in 24 hours (or close to it) that make a domain a bulk sender[2]
5,000

Figure 1Where to spend the afternoon: effort against how visible a failure is

  • Customers see it Visibility when it fails, Minutes Effort to set up

    Quick, and failure is publicStart here

    SPF record, DKIM signing, DMARC at p=none, HTTP to HTTPS redirect, a contact address on your own domain.

  • Customers see it Visibility when it fails, Days or weeks Effort to set up

    Slow, and failure is public

    DMARC at quarantine and reject across every service that sends as you. Worth it, but only after reports are clean.

  • Rarely noticed Visibility when it fails, Minutes Effort to set up

    Quick, and rarely noticed

    security.txt, the basic security headers, a short HSTS max-age. Cheap credibility with technical buyers.

  • Rarely noticed Visibility when it fails, Days or weeks Effort to set up

    Slow, and rarely noticed

    A strict Content-Security-Policy and HSTS preload. Good goals, not week-one work.

This grid is our prioritisation, not a measurement. Do the top-left box today and schedule the rest.

What do SPF, DKIM and DMARC each do?

SPF lists the servers allowed to send for your domain, DKIM signs each message with a key published in your DNS, and DMARC ties both to the visible From address and tells receivers what to do when neither lines up.

SPF
A DNS TXT record naming the hosts allowed to send mail for a domain. Receivers check it against the envelope sender (MAIL FROM) and HELO identities, not the From line a person reads.[8]
DKIM
A cryptographic signature added to each message. It lets the owner of the signing domain claim some responsibility for the message; the public key sits in DNS under selector._domainkey.example.com.[9]
DMARC
A policy published as a TXT record at _dmarc.example.com. It is tied to the domain in the From header, and its p tag asks receivers for none, quarantine or reject. The current standard is RFC 9989, published in May 2026, which replaced the original 2015 specification.[10]
Alignment
The From domain must match a domain that SPF or DKIM authenticated. Relaxed alignment (the default) accepts the same organizational domain, so mail.example.com aligns with example.com. Strict requires an exact match.[10]
Aggregate report (rua)
A summary receivers send to the address in your rua tag, daily or more often, showing which sources passed and failed for your domain. Without a rua tag no reports are sent.[10][11]

Figure 2SPF, DKIM and DMARC compared: what each checks, stops and misses

SPF, DKIM and DMARC compared: what each checks, stops and misses
What it checksSPFIs the sending server authorised for the envelope sender domain?DKIMWas the message signed by the domain in the signature, and is the signature valid?DMARCDid SPF or DKIM pass for a domain aligned with the visible From domain?
DNS recordSPFOne TXT record on the sending domainDKIMTXT record at selector._domainkeyDMARCTXT record at _dmarc
What it stopsSPFUnlisted servers passing as your envelope senderDKIMUndetected changes to the signed parts of a messageDMARCMail that uses your exact domain in the From line without passing aligned SPF or DKIM, once the policy is quarantine or reject
What it does not stopSPFA forged visible From address. SPF never looks at it.DKIMAnything on its own: a failed signature does not force rejection, and the signing domain need not match the From domain.DMARCLookalike domains and display-name attacks, which the standard puts out of scope. At p=none it only reports.
Sources[8][9][10]

The detail most founders miss is that passing is not the same as aligning. A newsletter tool can pass SPF for its own bounce domain and sign with its own DKIM key, and your message still fails DMARC, because neither result is for your domain. A DMARC pass needs an SPF or DKIM pass for a domain that is aligned with the From domain.[10]

So get DKIM right at every sender: set each service to sign with your domain, usually called "custom domain" or "domain authentication".

What DNS records do I need to publish?

Three kinds: one SPF TXT record on the domain, one DKIM record per sending service (the service generates it), and one DMARC TXT record at _dmarc. Copy the templates below and replace every placeholder.

SPF record (one per domain)

First check whether the domain already has a TXT record starting with v=spf1. If it does, edit that record; never add a second one. List every service that sends with your domain as the envelope sender.

Type:  TXT
Host:  example.com   (many DNS panels want @ here)
Value: v=spf1 include:MAIL-PROVIDER-SPF-HOST include:SECOND-SENDER-SPF-HOST ~all

MAIL-PROVIDER-SPF-HOST is the hostname your mailbox provider documents for SPF.
Delete the second include if you have only one sender.

DMARC record, monitoring only

Publish this once SPF and DKIM have been live for two days. It changes nothing about delivery; it starts the reports.

Type:  TXT
Host:  _dmarc.example.com   (many DNS panels want just _dmarc)
Value: v=DMARC1; p=none; rua=mailto:[email protected]

Keep v=DMARC1 first and separate tags with semicolons.
Use a mailbox on the same domain as the record. A reporting address on another domain only works if that domain publishes a matching authorisation record, which DMARC report services set up for you.

DMARC record, stricter stages

Replace the monitoring record with these in order, only after reports show your real mail passing. Never publish two DMARC records at once: receivers discard them all.

Stage 2 (optional) - ask for quarantine on a sample of failing mail:
v=DMARC1; p=quarantine; pct=10; rua=mailto:[email protected]

Stage 3 - quarantine all failing mail:
v=DMARC1; p=quarantine; rua=mailto:[email protected]

Stage 4 - reject failing mail:
v=DMARC1; p=reject; rua=mailto:[email protected]

There is no DKIM template because you do not write that record. Each sending service generates a key pair, keeps the private half and shows you the DNS record to publish under its own selector. Gmail requires a key of 1024 bits or longer and recommends 2048 where your provider supports it; Yahoo also sets 1024 bits as its minimum.[1][5]

A caution on the pct tag in stage 2. It comes from the original DMARC specification, and Google's rollout guide still uses it.[4] The standard published in May 2026 removed it, saying it "was usually not accurately applied" except at 0 or 100, and tells receivers to ignore tags they do not recognise.[10] A receiver following the new standard will therefore quarantine all failing mail, not a tenth of it. Publish any quarantine record only when you could live with that.

On the SPF ending: -all is an explicit statement that other hosts are not authorised, ~all a weaker "probably not".[8] We suggest ~all and letting DMARC do the enforcing, since a DMARC policy can be rolled out gradually and SPF cannot.

How do I move DMARC from p=none to reject safely?

In stages: monitor at p=none, fix every legitimate sender the reports reveal, quarantine a small percentage, raise it to 100, then switch to reject.

DMARC rollout, following Google's recommended sequence

  1. Day 0

    SPF and DKIM live

    Publish the SPF record and turn on DKIM at every sender. Google says to set these up at least 48 hours before DMARC.[4]

  2. Day 2

    p=none with a rua address

    Mail is delivered as before. Google recommends at least one week at this stage, reviewing reports daily.[4]

  3. Week 2 or later

    p=quarantine on a small percentage

    Once reports show no problems, ask for a share of failing mail to go to spam with the pct tag. Google's example is 10% for a small organization.[4] Not every receiver honors the percentage, so expect some to quarantine everything that fails.[10]

  4. Following weeks

    Raise pct to 100

    Increase the percentage over time until quarantine covers all failing mail.[4] Check reports after each step.

  5. When stable

    p=reject

    Failing messages are rejected by receiving servers and never delivered. Google's guide treats reject as something you can use in place of quarantine if required, and attaches a caution to it.[4] It is the strongest request you can make against exact-domain spoofing.

One week is Google's figure, and it assumes your mail streams all show up within a week. The DMARC standard is more cautious: depending on how often you send, "it may take many months of consuming DMARC aggregate reports" before you are sure all your mail is authenticated.[10] In our view a small startup should wait for at least a full billing cycle before quarantine: the monthly invoice run, the quarterly investor update and the rarely-used helpdesk are exactly the senders that surface late.

What do Gmail, Yahoo and Outlook require from senders?

At Gmail and Yahoo, every sender needs SPF or DKIM, valid forward and reverse DNS and a spam rate under 0.3%. Bulk senders also need both SPF and DKIM, a DMARC record, alignment and one-click unsubscribe on marketing mail. Outlook.com requires SPF, DKIM and DMARC from domains sending more than 5,000 emails a day.

Figure 3What Gmail and Yahoo require from every sender

What Gmail and Yahoo require from every sender
AuthenticationGmailSPF or DKIMYahooSPF or DKIM at a minimum
Spam rateGmailBelow 0.3% in Postmaster ToolsYahooBelow 0.3%
DNSGmailValid forward and reverse DNS (PTR) records for sending domains or IPsYahooValid forward and reverse DNS record for sending IPs
Message formatGmailRFC 5322YahooRFCs 5321 and 5322
Gmail also requires a TLS connection for transmitting email and tells senders not to impersonate Gmail From: headers. DMARC is written as a bulk-sender requirement, which is a minimum and not an exemption: Google recommends that you "always set up SPF, DKIM, and DMARC for your domains", and Yahoo "strongly urges all senders to publish a DMARC policy". Sources[1][5]

Figure 4What bulk senders must add

What bulk senders must add
AuthenticationGmail (more than 5,000 a day)SPF and DKIMYahoo (bulk senders)Both SPF and DKIM
DMARCGmail (more than 5,000 a day)Required; the policy can be noneYahoo (bulk senders)Valid policy of at least p=none, and DMARC must pass
AlignmentGmail (more than 5,000 a day)From domain aligned with the SPF or DKIM domainYahoo (bulk senders)From domain aligned with the SPF or DKIM domain; relaxed alignment is acceptable
UnsubscribeGmail (more than 5,000 a day)One-click unsubscribe and a clearly visible link in the body, on marketing and subscribed messagesYahoo (bulk senders)Working list-unsubscribe header with one-click on marketing and subscribed messages, a visible link in the body, honored within 2 days
As published on the first-party pages in October 2026. The all-sender rows above still apply. Gmail's FAQ also lists unsubscribe requests not honored within 48 hours as a compliance failure.[2] Yahoo's page gives no numeric definition of a bulk sender. Sources[1][5]

The dates and definitions that matter

  • Who counts as bulk at Gmail Any sender of close to 5,000 messages or more to personal Gmail accounts (addresses ending in @gmail.com or @googlemail.com) within 24 hours. Subdomains count toward the primary domain, and reaching the level once makes the status permanent.[2][1]
  • February 1, 2024 Gmail's requirements took effect.[1] Yahoo began enforcement the same month and said it would roll it out gradually through the first half of the year.[5]
  • June 1, 2024 Gmail's deadline for one-click unsubscribe on commercial and promotional messages. From June 2024, bulk senders above a 0.3% user-reported spam rate are ineligible for mitigation.[2]
  • May 5, 2025 Outlook.com rules took effect: domains sending more than 5,000 emails a day to Outlook.com accounts must pass SPF and DKIM and publish DMARC of at least p=none, aligned with SPF or DKIM. Non-compliant mail goes to the junk folder and may be rejected with error 550; 5.7.515.[6] Microsoft's announcement says this covers its consumer addresses at hotmail.com, live.com and outlook.com.[7]
  • November 2025 Gmail began ramping up enforcement on non-compliant traffic, with disruptions that include temporary and permanent rejections.[2]

Figure 5User-reported spam rate thresholds

  • Gmail: stay below

    0.1%
  • Gmail: never reach

    0.3%
  • Yahoo: stay below

    0.3%
Aim for the lower Gmail line. Google says rates above 0.1% already hurt inbox delivery, and Yahoo calculates its rate from mail delivered to the inbox.[2][5] Sources[1][2][5]

A startup sending a few hundred receipts a day is not a bulk sender, and transactional messages such as password resets are excluded from Gmail's one-click unsubscribe rule.[2] We still suggest meeting the bulk list from day one. The records are free, and the day a launch email pushes you over the line is a bad day to learn DNS.

How do I set up HTTPS, HSTS and security headers?

Redirect every HTTP request to HTTPS, add a Strict-Transport-Security header with a short max-age that you lengthen later, then add four or five response headers at your host or CDN.

Chrome labels a page "Not secure" when the connection is not encrypted, and tells the user that the site owner must fix it with HTTPS.[16] HSTS closes the remaining gap: it tells the browser to use HTTPS only for that host, and to upgrade any later HTTP attempt automatically.[13]

It has one sharp edge. On an HSTS host the browser offers no way to click through a certificate error, and includeSubDomains extends that to every subdomain.[13] So ramp up. The HSTS preload site recommends stages of 5 minutes (max-age=300), 1 week (max-age=604800) and 1 month (max-age=2592000), fixing what breaks and waiting out each stage before moving on.[14] Our addition: confirm that old subdomains such as a status page or a staging host serve HTTPS before you add includeSubDomains.

Figure 6A short list of security headers, with the values OWASP recommends

A short list of security headers, with the values OWASP recommends
Strict-Transport-SecurityRecommended valuemax-age=63072000; includeSubDomains; preload as the end stateWhat it doesTells browsers to reach the site over HTTPS only
X-Content-Type-OptionsRecommended valuenosniffWhat it doesMakes browsers follow the declared content type and not guess it
X-Frame-OptionsRecommended valueDENYWhat it doesStops other sites framing your pages (clickjacking). OWASP prefers the CSP frame-ancestors directive where possible.
Referrer-PolicyRecommended valuestrict-origin-when-cross-originWhat it doesLimits how much referrer information is sent with requests
Permissions-PolicyRecommended valuegeolocation=(), camera=(), microphone=()What it doesSwitches off browser features the site does not use
Content-Security-PolicyRecommended valueNo single value; it depends on your siteWhat it doesDeclares which origins may load content, to mitigate script injection
OWASP also advises not setting the old X-XSS-Protection header, or turning it off explicitly. Headers reduce classes of browser attack; they do not fix vulnerable code. Source[15]

Do I need security.txt, a privacy policy and a custom-domain email?

Yes to all three. They take under an hour together, and each answers a question a careful buyer, researcher or mailbox provider asks about a company they have never heard of.

security.txt (RFC 9116)

Save as a plain text file served at https://example.com/.well-known/security.txt and set a reminder to renew the Expires date.

Contact: mailto:[email protected]
Expires: YYYY-MM-DDT00:00:00Z
Preferred-Languages: en
Canonical: https://example.com/.well-known/security.txt

Replace YYYY-MM-DD with a date less than a year from today.

RFC 9116 defines the file so that organizations can describe how to report a vulnerability to them. It must live under /.well-known/, be served over HTTPS as text/plain, and contain the two required fields, Contact and Expires. The RFC recommends an expiry less than a year ahead.[12] Only publish an address that somebody reads.

A free mailbox address

  • You cannot publish SPF, DKIM or DMARC for a domain you do not control.
  • Gmail tells senders not to impersonate Gmail From: headers and says it "will begin using a DMARC quarantine enforcement policy", so mail a third-party tool sends as your @gmail.com address is likely to land in spam.[1]
  • The address says nothing about which company you are.

An address on your own domain

  • Every message builds reputation for a domain you own and keep if you change mail provider.
  • The address matches the site the reader just visited.
  • Role addresses (support, billing, security) survive staff changes.

The call: Use your own domain for anything a customer receives or replies to. The first two points on the left are mechanics and Google's stated policy; the rest is our judgement.

What a real privacy policy and contact page contain (our checklist, not legal advice)

  • The legal name of whoever runs the site and a way to reach them that is not only a form.
  • What you collect, including analytics and the email tools named in your SPF record, and why.
  • How to ask for deletion, and the address that request goes to.

These details travel with you. A profile on SitePatent or any other directory sends people to your domain, and the contact address and policy pages are often the next things a cautious visitor opens.

How do I check that everything is working?

Query the DNS records, send yourself a real message and read its headers, then look at the response headers your site returns. All of it is free and takes about 20 minutes.

How to verify email authentication and site headers with free tools

  1. Query the records3 min

    In a terminal, run dig +short TXT example.com and confirm exactly one line starts with v=spf1. Run dig +short TXT _dmarc.example.com and confirm exactly one v=DMARC1 record. Any web-based DNS lookup shows the same answers.

  2. Send a real message to a Gmail inbox5 min

    Send from each system separately: your mailbox, your app's transactional sender, your helpdesk, your billing tool. Each is its own mail stream and can fail on its own.

  3. Open the full headers2 min

    In Gmail on a computer, open the message, click More next to Reply, then "Show original". The full header opens in a new window. If it is hard to read, copy it into Google's Admin Toolbox Messageheader tool.[17]

  4. Read the Authentication-Results line5 min

    Look for spf=pass, dkim=pass and dmarc=pass. Then check alignment: the domain shown for DKIM (header.i= or header.d=) or for SPF (smtp.mailfrom=) should be your domain or a subdomain of it, not your provider's, and should match header.from=.

  5. Check the site3 min

    Run curl -sI http://example.com and expect a redirect to https://. Run curl -sI https://example.com and look for strict-transport-security and the other headers. Open https://example.com/.well-known/security.txt in a browser.

Common symptoms and the first thing to check

  • If SPF shows permerror

    You have more than one v=spf1 record, the record needs more than 10 DNS-querying terms, or it has a syntax error. All three produce permerror.[8]

  • If spf=pass and dkim=pass, but dmarc=fail

    Alignment. Both passed for your provider's domain. Turn on custom-domain DKIM signing at that sender.

  • If One tool's mail lands in spam and the rest is fine

    That tool is a separate mail stream with no DKIM for your domain. Find it in your DMARC reports and authenticate it.

  • If Outlook.com bounces with 550; 5.7.515

    The sending domain does not meet the required authentication level. Check SPF, DKIM and DMARC for that stream.[6]

  • If Visitors cannot get past a certificate warning on a subdomain

    HSTS with includeSubDomains is doing its job. Fix the certificate on that host; there is no bypass to offer them.[13]

Which mistakes break a new domain most often?

Four: a second SPF record, an SPF record past the 10-lookup limit, DMARC set to reject on day one, and third-party senders nobody remembered. All four are quiet until mail disappears.

  • Avoid: Publishing a second SPF record Each new tool's setup guide says "add this TXT record". Do that twice and SPF evaluation returns permerror, because a domain must not have multiple records.[8] Merge the new include: into the record you already have.
  • Avoid: Exceeding 10 DNS lookups The include, a, mx, ptr and exists mechanisms and the redirect modifier all count, and implementations must return permerror past 10.[8] Includes nest, so four vendors can be enough. Remove senders you no longer use.
  • Avoid: Jumping straight to p=reject It looks like the secure choice, and rejected mail is never delivered.[4] Without a monitoring period you find the unauthenticated sender when a customer says the invoice never arrived.
  • Avoid: Forgetting third-party senders The CRM, the helpdesk, the billing system, the form builder, the calendar tool. Each one that puts your domain in the From line needs DKIM for your domain before DMARC tightens.
  • Avoid: Treating this as protection against all impersonation A lookalike domain with its own valid records passes everything. DMARC does not address visually similar domains or display-name attacks.[10]

What this page deliberately leaves out: it will not make unwanted mail welcome. Authentication proves who sent a message, and the spam-rate limits measure whether recipients wanted it.

When the list below is ticked, the domain is ready to be shown to strangers. That is the point to add it to places founders are found, such as the ones in our guide on where to promote a startup and the directory comparison, or to browse how other products present themselves on SitePatent.

One-afternoon domain credibility checklist

0 of 16 done

Email authentication

Marketing mail (if we send any)

Website

Company signals

Your ticks are saved in this browser.

5 quick answers

Common questions

Short answers to the follow-up questions readers ask most.

Not here? Ask us
  • The all-senders rules do. Gmail and Yahoo both ask every sender for SPF or DKIM, valid forward and reverse DNS, and a spam rate under 0.3 percent. The extra rules, including DMARC and one-click unsubscribe, are written for bulk senders, but both providers recommend DMARC for everyone. Publishing all three records costs nothing and means a sudden jump in volume does not catch you unprepared.

Sources

  1. [1]Email sender guidelinesGoogle Workspace Admin Help
  2. [2]Email sender guidelines FAQGoogle Workspace Admin Help
  3. [3]New Gmail protections for a safer, less spammy inboxGoogle (The Keyword), 2023
  4. [4]Recommended DMARC rolloutGoogle Workspace Admin Help
  5. [5]Sender Requirements & RecommendationsYahoo Sender Hub
  6. [6]Policies, Practices, and GuidelinesMicrosoft (Outlook.com Postmaster)
  7. [7]Strengthening Email Ecosystem: Outlook's New Requirements for High-Volume SendersMicrosoft Tech Community (Defender for Office 365 Blog), 2025
  8. [8]RFC 7208: Sender Policy Framework (SPF) for Authorizing Use of Domains in Email, Version 1IETF, 2014
  9. [9]RFC 6376: DomainKeys Identified Mail (DKIM) SignaturesIETF, 2011
  10. [10]RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC)IETF, 2026
  11. [11]RFC 9990: DMARC Aggregate ReportingIETF, 2026
  12. [12]RFC 9116: A File Format to Aid in Security Vulnerability DisclosureIETF, 2022
  13. [13]Strict-Transport-Security headerMDN Web Docs
  14. [14]HSTS Preload List Submissionhstspreload.org (Chromium project)
  15. [15]HTTP Security Response Headers Cheat SheetOWASP Cheat Sheet Series
  16. [16]Check if a site's connection is secureGoogle Chrome Help
  17. [17]Trace an email with its full headerGmail Help

How this guide was put together. Every threshold, date and rule on this page was checked on 11 October 2026 against the first-party page or RFC cited next to it: the Gmail, Yahoo and Outlook.com sender pages, the SPF, DKIM, DMARC and security.txt specifications, MDN, the HSTS preload site and OWASP. DMARC statements follow RFC 9989 (May 2026), which replaced RFC 7489; how each mailbox provider treats the retired `pct` tag was not tested. The Outlook.com policy page is served from a Microsoft office.com host that the Outlook.com postmaster address redirects to. The Gmail statistics are Google's own figures from 2023 and describe Gmail only. Provider rules change, so confirm them at the source before relying on them. The priority grid, the rollout pacing beyond Google's stated week, the privacy and contact checklist and the advice on record endings are editorial judgement, and nothing here is legal advice.