UnderHost
Knowledgebase Docs

Email sending limits on cPanel hosting

Understand hourly cPanel email sending limits, what happens when a limit is reached, and why newsletters or bulk mail should use a dedicated email delivery p...

On this page

Shared cPanel hosting includes email sending rate limits to protect server reputation and prevent abuse. Limits vary by plan, server, and account status—some plans allow 100-300 emails/hour, others allow 500+. The key: legitimate transactional email is always allowed; bulk newsletters should use a dedicated provider.

Why email sending limits exist

Email sending limits protect the entire hosting ecosystem:

  • Prevent spam abuse: Compromised accounts can't send millions of spam emails
  • Protect server IP reputation: One abusive account sending spam gets the entire server's IP blacklisted
  • Prevent resource exhaustion: Unlimited mail sending could consume server CPU, memory, and disk
  • Comply with ISP policies: ISPs rate-limit inbound mail from shared hosting to prevent abuse
  • Enable fair use: Limits ensure one user can't monopolize mail resources

Legitimate websites (contact forms, WordPress notifications, password resets) never hit sending limits. Only bulk campaigns and problematic scripts hit them.

How email limits work

Limits are usually applied as hourly or per-account thresholds:

  • Per-account hourly: Maximum emails per hour from entire cPanel account (e.g., 300/hour)
  • Per-domain hourly: Maximum per domain (e.g., yourdomain.com limited to 100/hour)
  • Per-mailbox hourly: Maximum per mailbox (e.g., admin@yourdomain.com limited to 50/hour)
  • Burst limits: Maximum consecutive emails before brief rate-limiting pause

What counts toward the limit:

  • Webmail client sending (cPanel webmail, Roundcube)
  • SMTP client mail (Thunderbird, Outlook via SMTP port 587/465)
  • PHP scripts using mail() or SMTP
  • Contact form submissions
  • Mailing list broadcasts
  • Automated notifications and alerts
  • Email forwarders

Transactional vs bulk email

Understanding the difference is key to knowing when limits apply:

TypeDefinitionExamplesLimit concern?
TransactionalIndividual emails sent in response to user actionPassword resets, order confirmations, contact form replies, 2FA codes, notification emails✓ Usually safe; within limits
MarketingBulk emails to subscriber listNewsletters, promotional campaigns, bulk announcements✗ Usually exceeds limits; use provider
SystemAutomated system notificationsWordPress updates, backup alerts, error logs✓ Usually safe if configured normally

Rule of thumb: If you're sending 50+ emails in a single action, or more than 300/hour regularly, you're bulk emailing and should use a dedicated provider.

Symptoms of hitting sending limits

  • Burst of sends, then failures: First 100 emails send fine, then remaining bounce or defer
  • SMTP error messages: "Too many connections," "Rate limit exceeded," "Quota exceeded"
  • Mailing list delivery pauses: List sends 50 emails, pauses for 1-2 hours, continues
  • Contact form mails stop: Forms work, but recipients don't get email after high activity
  • Error logs show 451/452 codes: Temporary failure due to rate limiting

Solutions for bulk email

If you need to send large newsletters or bulk campaigns, use a dedicated email delivery provider:

ProviderTypeBest forPricing
MailchimpEmail marketingSmall-medium newsletters, automationFree for small lists, then paid
SendGridTransactional + bulkHigh-volume bulk mail, APIsPay per email or plan
Brevo (Sendinblue)Marketing + transactionalAll sizes, good global reachFlexible pricing
Amazon SESTransactional + bulkHigh volume, AWS integrationPer-email cost
MailerLiteEmail marketingAutomation, creatorsFree for small, pay for scale

Benefits of external providers:

  • Dedicated infrastructure for high volume
  • Bounce handling and unsubscribe management
  • Compliance (CAN-SPAM, GDPR, etc.)
  • Detailed delivery reports and analytics
  • No impact on your hosting account's mail server

Optimize sending to stay within limits

  1. Use SMTP instead of PHP mail(): SMTP with authentication is more efficient
    # Use SMTP, not PHP mail()
    $mail->Host = 'mail.yourdomain.com';
    $mail->Port = 587;
    $mail->SMTPAuth = true;
    $mail->Username = 'sender@yourdomain.com';
    $mail->Password = 'your-email-password';
  2. Throttle sending: Add delays between messages if sending in bulk
    // Send one email per second instead of 100 at once
    foreach ($recipients as $email) {
      send_email($email);
      sleep(1);  // Wait 1 second between sends
    }
  3. Clean mailing lists: Remove invalid, bounced, and unsubscribed addresses
  4. Set SPF, DKIM, DMARC: Proper authentication improves deliverability
  5. Monitor for compromised accounts: Sudden spikes indicate malware or hacked credentials

Monitor and investigate sending

Check what's using your mail quota:

# Via SSH, check recent mail logs
tail -100 /var/log/exim_mainlog | grep "yourdomain.com"

# Count sent emails per mailbox
grep "yourdomain.com" /var/log/exim_mainlog | wc -l

# Check for suspicious sending patterns
grep -i "spam\|bounce\|virus" /var/log/exim_mainlog

In cPanel: Go to Email Accounts, check for unusual sending volume. Contact support if you see unexpected mail volume—it could indicate a compromised account.

High sending volume = possible compromise

If you suddenly see 1000+ emails/hour being sent, your account may be compromised. Change all passwords immediately, scan for malware, and contact support.

Related: Email not sending | Port 25 policy | Mailing lists | SMTP settings

Was this article helpful?

Need cPanel hosting or licensing?

Use UnderHost cPanel hosting or add cPanel/WHM to a VPS or dedicated server for familiar website, email, DNS, and database management.

Related articles

Back to cPanel