Defer instead of reject (SMTP code 4XX) when max hourly email limit is exceeded
I'd like exim to return a temporary SMTP error 4xx instead of a permanent one 5xx, issuing a permanent error causes bad behaviour in email clients and end-user frustration (some clientes create a local bounce-like message).
Changing the SMTP response to a temporary error, most email clients will try again emails in the future (using a local queue or "outbox") respecting the hourly limit.In exim changing :fail: to :defer: should accomplish this behaviour, see line 1504 of file /etc/exim.pl.local
$enforce_mail_permissions_data = ":fail: Domain $domain has exceeded the max emails per hour ($currentmail/$maxmails ($percentage\%)) allowed. Message discarded.";