Toda mensagem aceita cai em uma fila agendada identificada por (tenant, campaign, destination_domain). Cada fila tem o próprio throttle, a própria programação de novas tentativas e o próprio pool de IPs de origem.
Defina a configuração da fila dinamicamente:
kumo.on('get_queue_config', function(domain, tenant, campaign, routing_domain)
-- Defaults
local cfg = {
max_age = '24h',
retry_interval = '20m',
max_retry_interval = '4h',
max_connection_rate = '5/s',
}
-- Gmail tightening
if domain == 'gmail.com' or domain:match('%.googlemail%.com$') then
cfg.max_connection_rate = '20/s'
cfg.max_message_rate = '250/s'
end
-- Microsoft 365 tightening
if domain:match('%.protection%.outlook%.com$') then
cfg.max_connection_rate = '4/s'
cfg.max_message_rate = '40/s'
end
return kumo.make_queue_config(cfg)
end)
As curvas de novas tentativas são exponenciais por padrão. Ajuste retry_interval (primeira nova tentativa) e max_retry_interval (teto). Regra prática em produção: 5 min → 30 min → 2 h → 4 h, idade máxima de 24 a 48 h.
Entre para acompanhar o que você já leu.