§7 · IP warmup
IP warmup — lịch 6 tuần.
Một sending IP mới khởi điểm reputation bằng 0. Mailbox provider throttle volume lớn từ IP mới một cách có chủ ý — đây là phòng tuyến chính chống snowshoe spammer dựng cloud instance và blast. Warmup là thực hành tăng dần send volume trong 4–6 tuần trong khi giữ trong giới hạn throttle per-day và per-hour, xây reputation một cách hữu cơ.
Bạn chỉ làm việc này một lần cho mỗi IP. Đa số team không bao giờ làm vì IP chia sẻ của Amazon SES, SendGrid, và Mailgun đã pre-warmed. Trường hợp warmup quan trọng: dedicated IP trên SES (thường > 1M send/tháng mới justify), self-hosted Postal MTA trên một cloud instance mới, migration từ ESP này sang ESP khác có đổi domain.
Lịch warmup
| Ngày |
Volume hàng ngày |
Cohort audience |
Metric theo dõi |
| 1 | 50 | 5% engaged nhất | Open rate > 30% |
| 2 | 100 | 5% engaged nhất | Bounce < 2% |
| 3–4 | 200–500 | Top 10% engagement | Inbox placement (tool của provider) |
| 5–7 | 1K–2K | Top 25% | Complaint < 0.1% |
| 8–14 | 5K → 20K | Top 50% | SES reputation dashboard xanh |
| 15–21 | 25K → 100K | Top 75% | Postmaster Tools spam < 0.1% |
| 22–42 | Volume hàng ngày đầy đủ | Toàn list (loại trừ inactive 6 tháng+) | Open rate ổn định, bounce thấp |
Lịch dựa trên khuyến nghị warmup published của SparkPost / Postmark / SES, gộp lại thành một bảng theo tuần. Ramp chậm hơn lịch này nếu bạn thấy complaint rate đi lên; ramp nhanh hơn chỉ khi mỗi bước đều có provider xác nhận reputation green-light.
Theo dõi warmup trong AcelleMail
Model SendingServer của AcelleMail có state warmup first-class. warmup_enabled, warmup_strategy_id, và warmup_started_at nằm trên bảng sending_servers; isWarmupEnabled() tại app/Model/SendingServer.php:333 gate quyết định lúc send. Bảng đồng hành SendingServerWarmupLog ghi lại mọi send trong window warmup kèm date, status, và một meta payload serialize — xem app/Model/SendingServerWarmupLog.php.
Pattern: gán một WarmupStrategy (một row định nghĩa đường volume per-day) cho sending server, lật warmup_enabled = true, set warmup_started_at = now(). SendingServerWarmupUsage trong send pipeline track count hôm nay và từ chối dispatch vượt trần daily của strategy. Khi trần day-N của strategy vượt full daily volume của bạn, server tốt nghiệp và warmup mode tự disable.
Các class DynamicRateTracker và InMemoryRateTracker (app/Library/) xử lý rate limiting per-minute / per-hour ở lớp SMTP — kể cả ngoài warmup, AcelleMail vẫn enforce trần rate published của relay để một surge queue không trip throttling phía provider.