Skip to content

Moderation & Safety

Courier includes rate limiting, player blocking, and input sanitization out of the box. Most of it works automatically — zero configuration required.


Three tiers of rate limiting prevent mail spam. Each tracks sends independently per player:

File: config/courier/config.conf

mail {
minuteLimit = 5
hourlyLimit = 30
dailyLimit = 100
}
TierDefaultWhat It Does
Per-minute5Max messages a player can send per minute
Per-hour30Max messages a player can send per hour
Per-day100Max messages a player can send per day

Limits are per-player and shared across servers in multi-server setups. No bypassing them by server-hopping.


Cooldowns add a delay between consecutive sends. The player’s permissions determine their tier — the most permissive match wins:

PermissionCooldown
courier.cooldown.bypassNone
courier.cooldown.vip5 seconds
courier.cooldown.premium2 seconds
(none)10 seconds (default)

Cooldowns are separate from rate limits. A player can be within their rate limit but still need to wait for the cooldown timer. Both checks must pass.


Players can block others from sending them mail:

  • /mail block <player> — block a player
  • /mail unblock <player> — unblock a player

Blocks persist across sessions. When a blocked player tries to send mail, they get an error — the mail is never created or stored.


Courier sanitizes user input automatically:

  • MiniMessage tags are stripped to prevent tag injection in subjects and bodies. Players can’t use formatting tags to impersonate system messages or create misleading content.
  • Command placeholders are validated to prevent command injection. Only whitelisted placeholders like {player} and {uuid} are processed.
  • Subject length is enforced by the maxSubjectLength config setting, preventing excessively long subjects from breaking the GUI or database.

Every package claim uses a compare-and-set (CAS) operation at the database level. Each package can only be claimed exactly once, even if two requests arrive at the same instant.


A handful of admin commands for monitoring and maintenance:

CommandWhat It Does
/mailadmin debug <player>Inspect a player’s mailbox data — message counts, statuses
/mailadmin statsSystem-wide statistics — total messages, active users, storage usage
/mailadmin cleanupForce an immediate cleanup of expired mail (normally runs on a schedule)
/mailadmin locker cleanupForce cleanup of expired package locker entries