§7 · IP warmup
IP warmup — o cronograma de 6 semanas.
Um IP de envio novo começa com reputação zero. Provedores de caixa de entrada fazem throttle de volumes altos vindos de IPs novos por design — é a defesa principal contra snowshoe spammers subindo instâncias na nuvem e disparando. Warmup é a prática de aumentar gradualmente o volume de envio ao longo de 4–6 semanas, ficando dentro dos limites por dia e por hora de throttle, construindo reputação organicamente.
Você só faz isso uma vez por IP. A maioria dos times nunca faz porque os IPs compartilhados do Amazon SES, SendGrid e Mailgun vêm pré-aquecidos. Os casos em que warmup importa: IP dedicado no SES (tipicamente > 1M envios/mês justifica um), MTA Postal auto-hospedado em uma instância de nuvem nova, migração de um ESP para outro com mudança de domínio.
O cronograma
| Dia |
Volume diário |
Coorte de audiência |
Métrica observada |
| 1 | 50 | Top 5% mais engajados | Taxa de abertura > 30% |
| 2 | 100 | Top 5% mais engajados | Bounce < 2% |
| 3–4 | 200–500 | Top 10% de engajamento | Colocação na caixa (ferramentas do provedor) |
| 5–7 | 1K–2K | Top 25% | Reclamação < 0,1% |
| 8–14 | 5K → 20K | Top 50% | Reputation dashboard do SES verde |
| 15–21 | 25K → 100K | Top 75% | Postmaster Tools spam < 0,1% |
| 22–42 | Volume diário completo | Lista cheia (excluindo inativos de 6mo+) | Taxa de abertura estável, bounce baixo |
Cronograma baseado nas recomendações de warmup publicadas por SparkPost / Postmark / SES, consolidadas em uma tabela semanal única. Rampa mais devagar do que isso se você ver a taxa de reclamação subindo; rampa mais rápido só se você tiver luz-verde de reputação confirmada pelo provedor em cada passo.
Rastreamento de warmup no AcelleMail
O model SendingServer do AcelleMail tem estado de warmup de primeira classe. warmup_enabled, warmup_strategy_id e warmup_started_at vivem na tabela sending_servers; isWarmupEnabled() em app/Model/SendingServer.php:333 controla decisões em tempo de envio. A tabela companheira SendingServerWarmupLog registra cada envio durante a janela de warmup com data, status e um payload meta serializado — veja app/Model/SendingServerWarmupLog.php.
O padrão: atribua uma WarmupStrategy (uma linha que define a curva de volume por dia) a um servidor de envio, vire warmup_enabled = true, configure warmup_started_at = now(). O SendingServerWarmupUsage do pipeline de envio rastreia a contagem do dia e recusa despachar além do teto diário da estratégia. Quando o teto de dia-N da estratégia excede seu volume diário completo, o servidor se forma e o modo warmup auto-desativa.
As classes DynamicRateTracker e InMemoryRateTracker (app/Library/) cuidam de rate limiting por minuto / por hora no nível SMTP — mesmo fora do warmup, o AcelleMail impõe os tetos de taxa publicados pelo relay para que um surto de fila não tropece em throttling do lado do provedor.