mirror of https://github.com/zulip/zulip.git
1901775383
Closes #2420 We add rate limiting (max X emails withing Y seconds per realm) to the email mirror. By creating RateLimitedRealmMirror class, inheriting from RateLimitedObject, and rate_limit_mirror_by_realm function, following a mechanism used by rate_limit_user, we're able to have this implementation mostly rely on the already existing, and proven over time, rate_limiter.py code. The rules are configurable in settings.py in RATE_LIMITING_MIRROR_REALM_RULES, analogically to RATE_LIMITING_RULES. Rate limit verification happens in the MirrorWorker in queue_processors.py. We don't rate limit missed message emails, as due to using one time addresses, they're not a spam threat. test_mirror_worker is adapted to the altered MirrorWorker code and a new test - test_mirror_worker_rate_limiting is added in test_queue_worker.py to provide coverage for these changes. |
||
---|---|---|
.. | ||
jinja2 | ||
__init__.py | ||
backends.py | ||
dev_settings.py | ||
dev_urls.py | ||
email_backends.py | ||
legacy_urls.py | ||
prod_settings_template.py | ||
settings.py | ||
slack_importer_test_settings.py | ||
terms.md.template | ||
test_settings.py | ||
urls.py | ||
wsgi.py |