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:
| Type | Definition | Examples | Limit concern? |
|---|---|---|---|
| Transactional | Individual emails sent in response to user action | Password resets, order confirmations, contact form replies, 2FA codes, notification emails | ✓ Usually safe; within limits |
| Marketing | Bulk emails to subscriber list | Newsletters, promotional campaigns, bulk announcements | ✗ Usually exceeds limits; use provider |
| System | Automated system notifications | WordPress 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:
| Provider | Type | Best for | Pricing |
|---|---|---|---|
| Mailchimp | Email marketing | Small-medium newsletters, automation | Free for small lists, then paid |
| SendGrid | Transactional + bulk | High-volume bulk mail, APIs | Pay per email or plan |
| Brevo (Sendinblue) | Marketing + transactional | All sizes, good global reach | Flexible pricing |
| Amazon SES | Transactional + bulk | High volume, AWS integration | Per-email cost |
| MailerLite | Email marketing | Automation, creators | Free 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
- 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'; - 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 } - Clean mailing lists: Remove invalid, bounced, and unsubscribed addresses
- Set SPF, DKIM, DMARC: Proper authentication improves deliverability
- 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.
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
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.





















