§7 · IP warmup
IP warmup — la pianificazione su 6 settimane.
Un IP di invio fresco parte da reputazione zero. I mailbox provider, per design, fanno throttling sui volumi alti da IP nuovi — è la difesa principale contro gli snowshoe spammer che spinnano istanze cloud e fanno blast. Il warmup è la pratica di aumentare gradualmente il volume di invio nell'arco di 4–6 settimane restando dentro i limiti di throttle per ora e per giorno, costruendo reputazione in modo organico.
Lo fai una sola volta per IP. La maggior parte dei team non lo fa mai perché gli IP condivisi di Amazon SES, SendGrid e Mailgun arrivano già pre-warmed. I casi in cui il warmup conta: IP dedicato su SES (di solito > 1M di invii/mese ne giustifica uno), Postal MTA self-hosted su un'istanza cloud fresca, migrazione da un ESP all'altro con cambio di dominio.
La pianificazione
| Giorno |
Volume giornaliero |
Coorte di audience |
Metrica da monitorare |
| 1 | 50 | Il 5% più engaged | Open rate > 30% |
| 2 | 100 | Il 5% più engaged | Bounce < 2% |
| 3–4 | 200–500 | Top 10% per engagement | Inbox placement (strumenti del provider) |
| 5–7 | 1K–2K | Top 25% | Complaint < 0,1% |
| 8–14 | 5K → 20K | Top 50% | SES reputation dashboard verde |
| 15–21 | 25K → 100K | Top 75% | Postmaster Tools spam < 0,1% |
| 22–42 | Volume giornaliero pieno | Lista intera (esclusi inattivi da 6 mesi+) | Open rate stabile, bounce basso |
Pianificazione basata sulle raccomandazioni di warmup pubblicate da SparkPost / Postmark / SES, consolidate in un'unica tabella settimana per settimana. Procedi più lentamente se vedi il complaint rate in trend al rialzo; accelera solo se hai conferma di reputation verde dal provider a ogni step.
Tracking del warmup in AcelleMail
Il modello SendingServer di AcelleMail ha lo stato del warmup come first-class. warmup_enabled, warmup_strategy_id e warmup_started_at stanno nella tabella sending_servers; isWarmupEnabled() in app/Model/SendingServer.php:333 fa da gate alle decisioni in fase di invio. La tabella complementare SendingServerWarmupLog registra ogni invio durante la finestra di warmup con data, status e un payload meta serializzato — vedi app/Model/SendingServerWarmupLog.php.
Il pattern: assegna una WarmupStrategy (una riga che definisce la curva di volume per giorno) a un sending server, imposta warmup_enabled = true, warmup_started_at = now(). SendingServerWarmupUsage nella pipeline di invio traccia il conteggio odierno e rifiuta di dispatchare oltre il tetto giornaliero della strategia. Quando il tetto del giorno N della strategia supera il tuo volume giornaliero pieno, il server "si diploma" e la modalità warmup si auto-disabilita.
Le classi DynamicRateTracker e InMemoryRateTracker (app/Library/) gestiscono il rate limiting per minuto / per ora a livello SMTP — anche fuori dal warmup, AcelleMail rispetta i rate cap pubblicati dal relay in modo che un picco di coda non faccia scattare il throttling lato provider.