Mail Configuration
Configure mailbox quotas, rate limits, greylisting, and queue delivery settings from the dashboard.
Mail Configuration gives you control over mailbox storage limits, sending rates, greylisting, and queue delivery behavior directly from the dashboard. No SSH or config file editing required.
Pro feature
Mail Configuration is available on the Pro plan and above.
Mailbox quotas
Quotas limit how much storage each mailbox can use. When a user reaches their quota, Dovecot rejects new messages with a "mailbox full" error until they free up space.
Global default quota
- Go to Settings > Mail > Mailbox Quotas
- Toggle quotas on
- Set the default quota (e.g., 1 GB)
- Click Save
The default quota applies to every mailbox that does not have a per-user override.
Per-user quota overrides
You can set a custom quota for individual users that overrides the global default:
- Go to the Users page
- Click the edit (pencil) icon on any user
- Uncheck "Use server default" and enter a custom quota
- Click Save
The Quota column in the users table shows "Default" for users using the global quota and the specific quota (e.g., "500 MB") for users with a custom override.
To remove a per-user override and revert to the server default, edit the user and check "Use server default" again.
How it works
CeyMail enables the Dovecot quota plugin and configures it to enforce limits via the count backend. Quota values are stored per-user in the database. A value of 0 means "use the global default."
Rate limits
Rate limiting prevents any single client from sending excessive email, protecting your server's IP reputation and preventing abuse.
Configuration
- Go to Settings > Mail > Rate Limits
- Toggle rate limiting on
- Configure the limits:
- Messages - maximum messages per time period (required)
- Connections - maximum SMTP connections per time period (0 = unlimited)
- Recipients - maximum recipients per time period (0 = unlimited)
- Choose the time period: per hour or per day
- Click Save
What gets limited
All three limits apply per client IP address and share the same time period. When a client exceeds any limit, Postfix temporarily rejects additional requests with a 450 error. The client's mail server will automatically retry later.
| Limit | Postfix setting | Purpose |
|---|---|---|
| Messages | smtpd_client_message_rate_limit | Caps total messages sent |
| Connections | smtpd_client_connection_rate_limit | Caps SMTP sessions opened |
| Recipients | smtpd_client_recipient_rate_limit | Caps total recipients addressed |
Greylisting
Greylisting temporarily rejects email from unknown senders, requiring them to retry after a delay. Legitimate mail servers always retry; most spam bots do not.
First-time sender delay
When greylisting is enabled, emails from new senders are delayed by the configured amount (default: 5 minutes). The sender's mail server retries automatically, but the recipient will notice a brief delay for the first message from any new sender.
Configuration
- Go to Settings > Mail > Greylisting
- Toggle greylisting on
- Set the delay (1-60 minutes). The default is 5 minutes.
- Click Save
How it works
CeyMail uses Postgrey as the greylisting policy server. When enabled:
- CeyMail installs and configures Postgrey automatically
- Postfix is configured to check Postgrey before accepting mail
- First-time sender/recipient/IP combinations are temporarily rejected
- After the configured delay, retries from the same combination are accepted
- Known sender/recipient pairs are whitelisted for 35 days
When you disable greylisting, CeyMail stops the Postgrey service and removes it from the Postfix policy chain.
Queue & delivery
These settings control how Postfix handles undeliverable messages - how long it retries before giving up, and how frequently it retries.
Configuration
Go to Settings > Mail > Queue & Delivery and adjust:
- Queue lifetime - how long Postfix retries delivery before sending a bounce notification to the sender (default: 5 days)
- Bounce lifetime - how long bounce notification messages themselves are retried (default: 5 days)
- Min retry interval - the shortest time between delivery attempts for a deferred message (default: 300 seconds)
- Max retry interval - the longest time between delivery attempts, reached after repeated failures (default: 4,000 seconds)
How retry intervals work
Postfix uses exponential backoff between delivery attempts. The first retry happens after the minimum interval. Each subsequent retry waits longer, up to the maximum interval. Lower values deliver faster but generate more server traffic. Higher values are gentler on destination servers but delay delivery.
When to adjust these
- Reduce queue lifetime if you want senders notified faster when delivery fails (e.g., 1 day instead of 5)
- Increase queue lifetime if destination servers have extended downtime windows
- Reduce retry intervals for time-sensitive mail that needs faster delivery attempts
- Increase retry intervals to reduce load on your server and be gentler on destination servers
Settings summary
| Setting | Range | Default | Effect |
|---|---|---|---|
| Quota enabled | on/off | off | Enforces per-mailbox storage limits |
| Default quota | 1 MB - 1 TB | 1 GB | Storage limit for mailboxes without custom overrides |
| Rate limit enabled | on/off | off | Limits sending per client IP |
| Max messages | 1 - 10,000 | 100 | Messages allowed per time period |
| Max connections | 0 - 10,000 | 0 (unlimited) | SMTP connections allowed per time period |
| Max recipients | 0 - 10,000 | 0 (unlimited) | Recipients allowed per time period |
| Rate limit period | Hourly or daily | Hourly | Time window for all rate counting |
| Greylisting enabled | on/off | off | Temporarily rejects unknown senders |
| Greylist delay | 1 - 60 min | 5 min | How long before retries are accepted |
| Queue lifetime | 1h - 30d | 5 days | How long to retry before bouncing |
| Bounce lifetime | 1h - 30d | 5 days | How long to retry bounce notifications |
| Min retry interval | 60 - 3,600s | 300s | Shortest time between delivery retries |
| Max retry interval | 300 - 14,400s | 4,000s | Longest time between delivery retries |