[exim] Sender rate limiting based on recipient address?

Top Page
Delete this message
Reply to this message
Author: Osborne, Paul (paul.osborne@canterbury.ac.uk)
Date:  
To: exim-users@exim.org
Subject: [exim] Sender rate limiting based on recipient address?
Hi,

I have had a slightly odd situation where a member of the university (best leave it at that) has decided that they do not like our O365 offering (which we treat effectively as a mail store) and decided that they wanted to forward their email to Google. This in itself is not a particular issue and worked fine.

Then at some point their Google account was deleted (no idea why and don't really care) at which point the forwarder in O365 continued to forward email to Google which generated a MDF that came back with an ensuing game of email ping pong that resulted in us getting black listed for a time.

Sadly due to address rewriting going on and new emails being generated for the forwards coming out of O365 (rather than a true message bounce) getting this spotted as a mail loop has proven to be a challenge.

We do have sender rate limiting in place - however people higher up the food chain than me have insisted it is set the same as O365 to give parity of user experience. The downside of this is that O365 rate limiting is apparently set to: 10,000 recipients per day and 30 messages a minute. So pretty much low enough to be useless.

https://technet.microsoft.com/en-gb/library/exchange-online-limits.aspx#RecipientLimits

At this point I am thinking about implementing rate limiting on the basis of a sender being able to send X number of mails per unique recipient email address per day - to reduce the flow enough so that things start to back up a bit internally and my monitoring can spot when this happens.

However looking at the rate limiting config in Exim although I can it seems limit the amount of recipients that a sender can mail to, I cannot see that I can limit the amount of mails that a user can send to individual recipients. It may be the case that I am failing to parse the documentation and for that I apologise, but if anyone has a suggestion on how to do this I would appreciate it.


Cheers

Paul