On This Page: [hide]
On 29 April 2025, Microsoft deleted the grace period from its own announcement. The original plan was to route unauthenticated mail from big senders into the Junk folder, with rejection to follow later. Six days before enforcement, Microsoft switched to outright rejection instead. The struck-out paragraph is still visible on the page today. Shared hosting is where that bites hardest, because the three records Microsoft checks are the ones your host half-configures for you. This guide sorts the twelve ways shared-hosting email fails by who can actually repair each one.
Last reviewed: September 2026. Host sending caps, port policies, relay pricing and authentication deadlines verified against primary sources.
Quick answer: Find out who owns the broken part before you change a single setting. In cPanel, check Email Routing and your disk quota. Then send one message to a free authentication tester like mail-tester.com. Read the SPF and DKIM lines, the two records that prove the mail is really yours. If all four are clean, the fault sits on your host’s side of the fence. That means a closed port, an hourly cap, or a blocklisted server IP, and those need a support ticket rather than a settings change. If your mail pays your bills, take it off the web host entirely.

Three Checks That Tell You Whose Problem This Is
Shared hosting email breaks in two very different ways, and almost every wasted afternoon comes from treating one as the other. Some failures live in your account, where you have buttons to press. Others live in the server, the IP address, or the firewall, where you have nothing but a ticket queue. Run these three checks first and you’ll know which kind you have.
First, send yourself two messages. Send one from webmail to an outside address, like a Gmail account. Then send one from that outside address back to your domain. If the outbound message arrives and the inbound one doesn’t, your problem is DNS or routing, and it’s yours to fix. If outbound fails but inbound works, look at ports and sending caps. If both fail, start with your MX records, the DNS entries that name your mail server.
Second, read the bounce. Not the summary. A bounce carries an SMTP status code, and that code names the failure. A code beginning 4 is temporary, so the server keeps retrying. A code beginning 5 is permanent. “550 5.7.515 Access denied” means authentication. “452 4.2.2” means a full mailbox. Your contact form’s “message sent” notice tells you nothing, because the script that printed it never waited for an answer.
Third, open Track Delivery. Nearly every shared host runs cPanel, and cPanel ships a tool that most people never open. cPanel’s documentation says it lets you “trace an email’s delivery route and to find delivery problems.” It reads the log kept by Exim, the mail software doing the actual sending. That’s the difference between guessing and knowing.
What We Verified, and Where the Gaps Are
Ten hosts are named in the sending-limit section below. Two more were researched and left out on purpose. Hosting.com (formerly A2 Hosting) and ScalaHosting publish no shared-hosting sending figure we could confirm on their own sites. Third-party numbers for both contradicted each other by a factor of five. A guess dressed as a figure is worse than a gap, so they get a gap.
Every cap, port policy and price here was read from the source that sets it, in September 2026. Host limits come from the hosts’ own knowledge-base and acceptable-use pages. Protocol behaviour comes from the RFCs. Mailbox-provider rules come from Google’s sender guidelines and Microsoft’s own announcements, read on the page rather than in a summary of it. Relay pricing came off current vendor pricing pages. Some of those pages build their content with JavaScript and return a blank body to an automated read. We opened those in a browser instead, which is how both Microsoft dates here were confirmed.
Three honest limits. We ran no deliverability tests, so nothing here claims measured inbox placement. A few cPanel details (the default hourly-mail setting, the DKIM selector) come from independent hosting knowledge bases rather than cPanel’s own docs. Those are flagged where they appear. And sending caps move, so a figure verified today is only a figure that was true today.
Failures You Can Fix Yourself, in About Ten Minutes
Five of the twelve failures are entirely inside your control. Work through them in this order, because the first one causes more lost mail on shared hosting than the other four combined.
1. Email Routing still says Local while your MX points somewhere else
This is the classic one. You moved your mailboxes to Google Workspace or Microsoft 365, you changed the MX records, and mail from the outside world arrives perfectly. Then your contact form’s notifications vanish. Invoices from your own billing script never show up. Everything sent from inside the server disappears.
Here’s why. cPanel keeps a routing setting per domain that is separate from DNS. Set to Local Mail Exchanger, cPanel’s docs say “the server will always accept mail for the domain” and “will deliver mail to the local mailbox.” It never looks at your MX records. So the server drops the message into an old cPanel mailbox nobody opens, and reports success. Switch to Remote Mail Exchanger and the behaviour inverts: “the server will not accept mail for the domain”. It hands everything to “the lowest-numbered mail exchanger” instead, which is what you want.
Open cPanel, go to Email Routing, and set the domain to Remote Mail Exchanger the same hour you change MX records. cPanel’s recommended setting is Automatically Detect Configuration, and it usually gets this right, but “usually” is doing real work in that sentence. Set it explicitly. cPanel’s own warning is blunt: “Misconfigured Email Routing settings can disrupt your domain’s ability to receive mail.”
2. The mailbox is full, or the whole account is
A full mailbox rejects incoming mail, and shared hosting mailboxes are small by default. Worse, mail counts against your account’s total disk quota, so a website backup you forgot about can stop every mailbox on the domain at once.
RFC 3463 defines the status code you’ll see. X.2.2 means “the mailbox is full because the user has exceeded a per-mailbox administrative quota or physical capacity.” The RFC files it as a persistent transient failure, so the correct form is 452 4.2.2. The sending server will keep retrying for a few days. That retry window is your grace period. Clear space inside it and nothing is lost.
Two things to check beyond the obvious. Old webmail Trash and Junk folders still occupy quota. And if you ever used POP without “leave a copy on server”, check the mailbox you abandoned years ago. It may still be filling.
3. Your SPF record is wrong in one of three specific ways
SPF (Sender Policy Framework) is the DNS record listing which servers may send mail for your domain. Failures on shared hosting are rarely a missing record. They’re usually one of these three.
- Two SPF records. Publishing two DNS TXT records that both start v=spf1 makes the check fail outright. You need one record containing every sender.
- More than ten DNS lookups. RFC 7208 section 4.6.4 caps an SPF evaluation at ten DNS lookups. Each include, a, mx, ptr, exists and redirect counts, and nested includes count too. Exceed it and the result is PermError, which most receivers treat as a fail. Stack your host, Google Workspace and a marketing tool and you can hit ten without noticing.
- Your host’s relay is missing. This one is specific to shared hosting and it catches people out. Many cPanel hosts route outbound mail through MailChannels rather than sending from the server’s own IP. Your mail then leaves from MailChannels’ address pool, which your host’s default SPF include may not cover. MailChannels’ documentation says to add include:relay.mailchannels.net to the record you already have, positioned before the all mechanism. Adding a second record instead breaks SPF entirely, which is how a fix turns into a fault.
Don’t hand-edit this if you can avoid it. cPanel’s Email Deliverability tool reports SPF and DKIM problems per domain and offers a Repair action. One catch: Repair only works when your domain uses your host’s nameservers.
4. DKIM isn’t signing your mail
SPF authorises a server. DKIM (DomainKeys Identified Mail) signs the message itself, and it’s the half that survives forwarding. A third record, DMARC, tells receivers what to do when SPF and DKIM fail. cPanel generates a key per domain and publishes it at the default._domainkey selector, so this is usually a two-click job in Email Deliverability. (The selector name is consistent across every cPanel host we looked at, though cPanel’s own docs don’t state it in a form we can quote.)
Check the result rather than the setting. Send a message to a free tester and read the DKIM line in the report. A record that exists but doesn’t sign is common after a domain transfer, because the DNS zone moved and the key didn’t come with it.
5. A catch-all address is eating your quota
cPanel’s Default Address feature “receives any mail for an invalid email address for the domain.” Leave it forwarding to a real mailbox and you’ve built a spam magnet. cPanel says so directly. If spammers target your domain, its docs warn, “that address may receive a large amount of spam.”
The damage isn’t only inbound. Every auto-reply and bounce that mailbox generates counts against the hourly sending cap you’ll meet in a moment. A dictionary attack on your domain can exhaust that cap before you’ve had coffee, and then your real mail stops. Set the default address to discard. cPanel warns that a plain discard means “the sender will not know that the delivery failed”. Use the discard-with-error option if that matters to you.
One note if the failing mail comes from a WordPress site rather than a mailbox. Those causes are different enough to need their own list, which we’ve written up in why WordPress is not sending email.
Failures Only Your Host Can Fix
These five need a ticket. You can still diagnose every one yourself, and that matters. A specific ticket gets a specific answer. “My email is broken” gets a macro.
6. Outbound ports are closed
If you point your site or mail client at an external SMTP server and connections time out, a firewall is probably in the way. Port 25 is the one hosts block. An open port 25 on a shared server is a spam cannon waiting for one compromised account.
Here’s the thing about this rule: almost nobody documents it. Of the ten hosts we checked, exactly one makes a plain first-party statement. DreamHost’s knowledge base says it “blocks port 25 for outgoing SMTP calls on Shared Hosting servers”. The same page adds that this is “not a restriction on Managed VPS/Dedicated Servers”. It recommends port 587 with STARTTLS instead. SiteGround goes the other way and documents port 25 as open on its shared servers. The other eight write as though your own internet provider is the blocker. Sometimes that’s true. Sometimes it’s a way of not answering.
Try 587 first, then 465. Both are current. RFC 8314 recommends implicit TLS on port 465, and the history there is worth a sentence. Port 465 was assigned in 1997, revoked in 1998, then formally brought back by that RFC in 2018. Anyone telling you 465 is deprecated is quoting a twenty-year-old decision that got reversed.
If every mail port is closed, use a relay: a sending service your site hands mail to over an API. Those calls travel over port 443, and no host blocks that without breaking your website. (Yes, the reliable fix for a blocked mail port is to stop using mail ports.)
7. You’ve hit an hourly cap you can’t see
Shared hosts cap outbound mail per hour. The error text is specific enough to search for: “Domain example.com has exceeded the max emails per hour”. In WHM the setting is Max Hourly Emails Per Domain. It ships as unlimited, so your host has changed it. (Host support articles agree on that default; we couldn’t find it in cPanel’s documentation.)
Caps bite hardest where you’d least expect, because most hosts count recipients, not messages. SiteGround spells it out. You may add up to 80 recipients to one message, but “each recipient is counted as a separate email sending toward the allowed hourly quota.” So a single message to 80 people consumes 80 of a 400-per-hour allowance. Five of those and your hour is gone.
Ask your host for a temporary raise and give them a reason with a number in it. Vague requests get refused.
8. The server’s IP is on a blocklist
One compromised neighbour is enough. Check the sending IP at Spamhaus, which covers the SBL, CSS, PBL and XBL lists in one lookup.
Read the listing type before you do anything, because it tells you who has to act. A PBL listing covers, in Spamhaus’s words, “IP space that should not be sending email directly to the Internet”. That usually means consumer broadband ranges. Delisting requires the address to be “Static, not dynamic” and “An outbound mail server”. Spamhaus also lets network owners claim entire allocated ranges under one PBL account. Translated: on a genuinely shared IP, your host requests removal, not you. Submitting it yourself can get the removal reversed.
So open the ticket with the listing type, the IP, and the lookup URL. And ask the question that matters more than the delisting: what’s stopping the next one?
9. The mail certificate doesn’t cover the hostname you typed
Your mail client warns that the certificate doesn’t match the server. Usually you’ve typed mail.yourdomain.com while the certificate covers your host’s own server hostname.
cPanel’s AutoSSL does secure the mail stack. Its documentation confirms AutoSSL “automatically installs domain-validated SSL certificates” for Apache, Dovecot, Exim, Web Disk and the cPanel server. Dovecot and Exim are the services that fetch and send your mail, so the coverage is real. What it can’t do is cover a hostname that isn’t in the certificate. webmail.yourdomain.com is a cPanel service subdomain and gets covered; a bare mail subdomain often isn’t one at all unless somebody created it.
Two fixes, in order of preference. Point the client at the server hostname your host publishes in its mail-client instructions, which always matches its certificate. Or ask your host to add your mail hostname to the certificate. Never click “trust anyway”, because then you can’t tell a misconfiguration from an interception.
10. Your mail is frozen in the queue
Mail that neither arrives nor bounces is sometimes sitting frozen. This happens when a message can’t be delivered and can’t be returned to its sender either. Exim’s documentation is precise about what follows: the message “is marked ‘frozen’ on the spool, and no more deliveries are attempted.” A bounce that itself bounces is the classic cause. That’s why a broken forwarder pointing at a dead address produces silence rather than an error.
Queue management lives in WHM, at the reseller or root level, so on shared hosting you generally can’t see your own queue. Ask your host to check for frozen messages for your domain. It’s a thirty-second lookup for them and invisible to you.
Two Failures Nobody Can Fix on Shared Hosting
Now the part most guides skip, because the honest answer isn’t a fix.
11. The PTR record you don’t control
Reverse DNS maps an IP address back to a hostname, and it’s set by whoever holds the address block. ARIN puts it plainly: reverse DNS is managed by the owner of the IP block, typically your hosting provider or ISP, not your domain registrar. You cannot set a PTR record for an IP you don’t own, and no amount of DNS editing at your registrar changes that.
This matters because Google requires one. Its sender guidelines set three conditions:
- The sending server’s IP “must have a corresponding PTR record that resolves to a hostname”.
- That hostname “must also have an A (for IPv4) or AAAA (for IPv6) record that resolves to the same public IP address”.
- And “the sending IP address must match the IP address of the hostname specified in the Pointer (PTR) record.”
That round trip has a name: forward-confirmed reverse DNS. It either passes or it doesn’t.
The good news is that a competent shared host has already set a valid PTR for the server. It resolves to something like mail47.hostname.com rather than your domain, and that’s fine. Google’s requirement is that the record exists and round-trips, not that it carries your brand. The bad news is that if your host has got it wrong, you can only ask.
12. What your neighbours send
You share an outbound IP with every other account on the server. Their sending habits are part of your reputation, and you have no visibility into them and no vote.
A dedicated IP is the usual suggestion and it’s oversold. It changes who is responsible for your reputation, not what your reputation is. A fresh IP also starts with no sending history, and mailbox providers treat that with suspicion until you build one. The rule of thumb in the deliverability trade puts the crossover around 100,000 messages a year. Below that, a well-managed shared pool generally beats a cold dedicated IP.
The real fix is architectural: stop sending mail from the same IP that serves your website. That’s the route out described below, and it costs less than moving to a VPS with a dedicated IP purely to escape the neighbours.
What Your Host Actually Lets You Send
Here’s the figure your host publishes, and here’s what it means, because those turn out to be different things. Hosts quote caps in units you can’t compare. So we converted every hourly figure into the ceiling it implies over 24 hours, then set that against the published daily cap.
- DreamHost: 100 recipients an hour from a mail client, webmail or web form, 200 an hour from scripts. Counted per recipient, so a newsletter to 150 subscribers fails on a single send.
- Verpex: 100 an hour on shared, which is a ceiling of 2,400 a day.
- Hostinger: 200 an hour and 2,400 a day on its cPanel Silver and Gold plans. The hourly rate implies 4,800, so the daily cap binds after 12 hours.
- Namecheap: 200 an hour per domain on Stellar and Stellar Plus, 500 an hour on its Premium servers.
- InMotion Hosting: 250 an hour by default, raised on request through an account form.
- ChemiCloud: 300 an hour and 3,000 a day per domain. You would burn the daily allowance in ten hours of flat-out sending.
- SiteGround: 400 an hour on StartUp, GrowBig, Ecommerce and Coderick, 800 an hour on GoGeek and Cloud. Recipients count individually, 80 per message maximum.
- Bluehost and HostGator: 500 an hour per domain. HostGator suggests throttling to one message every eight seconds, which is about 450 an hour.
- GoDaddy: 500 a day per mailbox, and 500 an hour shared across every mailbox on the account. Mail must go through GoDaddy’s own relay.
Two things fall out of that arithmetic. First, where a host publishes both an hourly and a daily cap, the daily one always binds first. The hourly number then oversells your capacity by two to three times. Hostinger’s 200 an hour sounds like 4,800 a day and is actually 2,400.
Second, the spread between hosts is enormous and nobody advertises it. Bluehost’s 500 an hour implies 12,000 messages a day. GoDaddy allows 500 a day per mailbox. That’s a 24-fold difference between two mainstream shared plans, on a number neither one puts on its pricing page. If you send in volume, this belongs in your comparison before price does.
One thing these caps are not: a way of rationing you. They exist to limit the damage from a compromised account, which is why hosts raise them when you ask with a reason. It also means the cap is rarely the real problem. The shared IP behind it is.
Moving Mail Off Your Web Host: Three Routes
Every fix above treats a symptom. This section treats the cause. Your website and your email have different reliability needs, and shared hosting couples them together for no reason other than that it came bundled.
Route one: move the mailboxes. Point your MX records at a mailbox provider and leave the website where it is. Google Workspace and Microsoft 365 are the obvious choices; Zoho, Fastmail and Proton cost less. Your inbound mail then has nothing to do with your web host. Switch Email Routing to Remote Mail Exchanger in the same sitting, or you’ll spend an evening on failure number one. We compare the options in our email hosting guide.
Route two: move the sending. Keep the mailboxes and push the website’s outbound mail through a relay. This is the fix for order confirmations, password resets and form notifications. It’s also the highest-value change on this page, because those are the messages that cost money when they vanish. Free tiers, verified this month:
- Brevo: 300 a day free, no time limit. Paid from USD 9/month for 5,000 a month, with contact storage capped at 500 on that tier.
- Resend: 3,000 a month free, capped at 100 a day, three domains. Paid from USD 20/month for 50,000.
- SMTP2GO: 1,000 a month free, capped at 200 a day, with DKIM and SPF handled automatically. Paid from USD 10/month for 10,000.
- MailerSend: 500 a month free, one domain. Paid from USD 5.60/month billed annually for 5,000.
- Postmark: 100 a month free, which is a test allowance rather than a plan. Paid from USD 15/month for 10,000.
- Amazon SES: USD 0.10 per 1,000 messages, the cheapest at volume by a wide margin. New accounts start in a sandbox capped at 200 a day to verified recipients only, until AWS approves production access.
Note the daily caps hiding inside the monthly ones. Resend’s 3,000 a month reads generously until you notice the 100-a-day ceiling, which is a third of what Brevo’s free tier allows in a day. If your traffic is spiky, the daily number is the one that governs. Our SMTP hosting comparison goes deeper on the paid tiers.
Route three: split the sending domain. Send transactional mail from a subdomain, say send.yourdomain.com, with its own SPF and DKIM. A reputation problem on your bulk mail then can’t contaminate your invoices. This is standard practice at scale and it costs nothing but half an hour of DNS work.
Which Route Fits Your Site
Volume and consequence decide this, not features. Five situations, with the numbers that separate them.
Volume: under 300 a day, transactional. Keep your mailboxes on the host and route the website through Brevo’s free tier, which covers exactly this. Skip Amazon SES for now. Its per-message price is unbeatable, but new accounts are sandboxed to 200 messages a day, and only to addresses you have verified. Until AWS grants production access, it can’t take your traffic at all.
Budget: zero, under 100 a day. Resend’s free tier fits, and it includes SPF, DKIM and DMARC on the free plan. Don’t reach for SendGrid out of habit. Twilio began retiring the free SendGrid plan on 27 May 2025, giving customers 60 days of continued access. Anyone who didn’t upgrade in that window had stored contacts above 100 deleted. There’s no permanent free tier there any more.
Store: 500 to 2,000 daily. Budget up to USD 15 a month. SMTP2GO at USD 10/month for 10,000 messages, or Postmark’s Basic tier at USD 15/month for the same volume. Postmark costs 50% more for identical headroom and earns it on inbox placement for receipts; SMTP2GO wins if the budget is fixed. Your host’s bundled allowance is technically enough here, and still the wrong choice. A shared IP puts your checkout emails downstream of a stranger’s marketing habits.
Team: five or more staff mailboxes. A mailbox provider, not a relay. This is the one case where Google Workspace or Microsoft 365 earns its price, and the collaboration tools are the reason, not the deliverability. Budget for the Email Routing change in the same maintenance window.
Newsletter: 150-plus subscribers, on DreamHost. You can’t, and no setting will help. The cap is 100 recipients an hour counted per recipient, so one send to 150 people breaches it before the first message lands. Anything list-shaped belongs on a relay from the start, whatever your host allows.
Dates That Break a Working Setup
Some of these failures arrive on a schedule. Two are worth putting in your calendar.
On 5 May 2025, Microsoft began rejecting unauthenticated mail sent to Outlook.com, Hotmail and Live.com from domains sending over 5,000 messages a day. Senders without valid SPF, DKIM and DMARC now get a hard bounce. It reads: “550; 5.7.515 Access denied, sending domain [SendingDomain] does not meet the required authentication level”. The detail almost every guide still gets wrong is what happened six days earlier. Microsoft’s original announcement promised a junk-folder grace period first, and an update dated 29 April 2025 cancelled it in favour of immediate rejection. The deleted sentences are still struck through on Microsoft’s own page. If you read anywhere that non-compliant mail goes to Junk, that advice is from the version Microsoft withdrew.
The second one hasn’t happened yet. Microsoft will disable SMTP AUTH basic authentication by default for existing Microsoft 365 tenants at the end of December 2026. Its Exchange team confirmed that timeline on 27 January 2026. Tenants created after that date won’t have it at all. A final removal date follows in the second half of 2027.
Note the wording, because it gets reported carelessly. Administrators can still re-enable it after December 2026. Nothing dies that month. But if your site logs into smtp.office365.com with a username and password, it breaks the day nobody re-enables it. OAuth is the replacement.
One myth to retire while we’re here. You do not need a strict DMARC policy to satisfy Google. Google’s sender guidelines say directly that “Your DMARC enforcement policy can be set to none”, and both Yahoo and Microsoft ask for at least p=none. Claims that the big providers will require p=quarantine or p=reject in 2026 are circulating widely and appear in none of the three providers’ own documentation. Moving to p=reject is good practice once your sending sources are aligned. It isn’t a requirement, and publishing it before you’ve aligned them is how people delete their own mail.
Keeping It Fixed
Four habits, in descending order of payoff.
Verify the domain in Google Postmaster Tools. It’s free, and it’s the only place you see your own spam rate as Gmail calculates it. Google asks for below 0.30% and recommends staying under 0.10%. Verify the domain in your DKIM signature or SPF return path, not your website domain, or the reports stay empty.
Test after every DNS change, not every quarter. Fire one test message at a free authentication checker and read the SPF, DKIM and DMARC lines. Thirty seconds, and it catches the transfer that dropped your DKIM key.
Watch your own sending volume against your host’s cap. If a normal week uses more than half of it, you’ve already outgrown shared mail. You’re then one product launch from finding out the hard way.
Keep the website and the mail on separate reputations. Everything else on this list is maintenance. This one is design, and it’s the reason a shared-hosting mail problem stops being your problem.
Frequently Asked Questions
Why can my shared hosting send email but not receive it?
Almost always DNS or routing rather than a mail fault. Check your MX records first, then cPanel’s Email Routing setting, which is separate from DNS and overrides it. If MX points to Google Workspace while routing says Local Mail Exchanger, the server files your mail in a cPanel mailbox you never open. The other candidate is a full mailbox, which returns 452 4.2.2 and retries for several days.
Is it better to use Google Workspace than my web host’s email?
For any business where a missed email costs money, yes, and the reason is separation rather than quality. Your host’s mailboxes inherit the sending reputation of every site on that server, so a neighbour’s spam run becomes your delivery problem. Google Workspace and Microsoft 365 also earn their price on shared calendars and mobile sync. If you only need reliable mail on your own domain, Zoho and Fastmail cost less and separate the reputations just as well.
Does a dedicated IP fix shared hosting email deliverability?
Rarely, and it’s the most oversold upgrade in hosting. A dedicated IP hands you responsibility for your reputation without improving it, and a new one carries no sending history at all. The trade’s rule of thumb puts the crossover near 100,000 messages a year, and below that a shared pool usually wins. Fix SPF, DKIM and DMARC first, then move your sending to a relay, and buy an IP only when volume justifies warming it.
How do I know if my host is blocking SMTP port 587?
Try to connect and read what happens. From your hosting terminal, run “telnet smtp.gmail.com 587” and look for a 220 greeting, since a hang or refusal means it’s blocked. Your host may not document this at all: of ten we checked, only DreamHost states plainly that it blocks port 25. If 587 and 465 both fail, switch to a relay with an HTTP API, which rides the same port as your website.
Can I send a newsletter from shared hosting?
Technically sometimes, sensibly no. Most hosts count recipients rather than messages, so one send to 200 subscribers consumes 200 of your hourly allowance. That breaches DreamHost’s 100 an hour, Verpex’s 100 and Hostinger’s 200 on the first attempt. Use a relay instead, because newsletter complaint rates damage the shared IP your order confirmations depend on.
Why did my email stop working after I moved my domain to Google Workspace?
You changed MX records and left cPanel’s Email Routing on Local Mail Exchanger, so mail your site generates never reaches Google. Outside mail arrives fine, which is what makes this confusing, and your contact form still reports success. Set the domain to Remote Mail Exchanger in cPanel and test with a message from the site itself, not from webmail. Also check that your SPF record includes Google’s servers, and that you haven’t ended up with two SPF records, which fails the check outright.
Where This Leaves You
Sort the failure by owner before you touch anything. Routing, quota, SPF, DKIM and the catch-all are yours, and ten minutes in cPanel settles all five. Ports, caps, blocklists, certificates and frozen queues belong to your host, and a ticket naming the symptom gets a specific answer. The PTR record and your neighbours’ sending habits belong to nobody you can reach. That’s the honest reason mail on shared hosting stays fragile however carefully you configure it.
If you take one action from this guide, hand your site’s outbound mail to a relay. Brevo’s free 300 a day covers most small sites. SMTP2GO’s USD 10/month covers a busy store. Either one moves your receipts and password resets off an IP you share with strangers. That single change fixes more shared-hosting email problems than every setting on this page put together, because it removes the coupling instead of tuning it.
Where you go next depends on what broke. If sending caps are your binding constraint, our guide to the best cheap shared hosting plans covers which hosts publish real limits. If you’re leaving shared hosting to control your own IP and reverse DNS, compare VPS plans rather than a bigger shared one. The dedicated IP is the thing you’re actually buying.
