Egress IP Management
PostMTA supports multiple egress IP strategies: PostMTA-owned dedicated IPs, shared IPs from a common pool, and Bring Your Own (BYO) IPs that you manage and warm up independently. This page covers pool types, IP assignment, warmup schedules, and rotation procedures.
Pool Types
Dedicated Pool
A dedicated IP is assigned exclusively to your workspace. You have full control over its warmup schedule, reputation, and rotation. Dedicated IPs are ideal for high-volume senders with distinct sending identities (e.g., different brands or product lines).
- 1–50 dedicated IPs per workspace (plan-dependent)
- Fully isolated reputation — other senders cannot affect your deliverability
- You control when to warm up and when to rotate
- Monthly fee per IP
Shared Pool
Shared IPs are owned and warmed up by PostMTA. Multiple workspaces send through the same pool, sharing the warmup reputation benefit. PostMTA manages warmup schedules and IP rotation for all shared IPs.
- No per-IP cost — included in standard pricing
- PostMTA manages warmup and rotation automatically
- Reputation is shared — a neighbour workspace's poor behaviour can affect shared IP reputation
- Best for low-to-medium volume senders or new senders in warmup
Bring Your Own (BYO)
You can add your own IP addresses to PostMTA and manage them as a separate pool. BYO IPs are ideal for enterprises that need full IP ownership for compliance or routing requirements, or that already have warmed IPs with established reputation.
- You own and control the IPs
- PostMTA provides warmup guidance but you manage DNS and rDNS
- Requires valid rDNS (PTR record) pointing to your domain
- No monthly PostMTA fee for BYO IPs — data transfer fees apply
IP Assignment
Per-Domain Assignment
Assign specific IPs or pools to individual sending domains. This is useful when each sending domain has its own reputation tier or warmup state.
curl -X POST https://api.postmta.com/v1/ip-pools \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"pool_name": "example-com-dedicated",
"pool_type": "dedicated",
"ip_addresses": [
"203.0.113.10",
"203.0.113.11",
"203.0.113.12"
],
"default_for_domain": "mail.example.com",
"warmup_ladder": "default_30day"
}'To assign this pool to a specific sending domain:
curl -X PUT https://api.postmta.com/v1/domains/mail.example.com/ip-assignment \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"pool_id": "pool_01HXPOOL001",
"strategy": "round_robin"
}'Global Pool Assignment
Assign a default IP pool to a workspace. All sending domains that do not have an explicit per-domain assignment use the workspace default.
curl -X PUT https://api.postmta.com/v1/workspaces/ws_01HXABC123DEF456/ip-pool \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"pool_id": "pool_01HXPOOL001",
"strategy": "least_used"
}'Assignment Strategies
| Strategy | Description | Best For |
|---|---|---|
round_robin | Distributes sends evenly across all IPs in the pool | Balanced warmup across multiple IPs |
least_used | Sends to the IP with the most available daily quota remaining | Maximising throughput within warmup limits |
sticky | All sends to a given recipient domain always use the same source IP | Reputation continuity for known heavy recipients |
Warmup Schedule
Each IP in a dedicated or BYO pool follows a warmup schedule independently. The warmup schedule limits the daily send volume through the IP to give recipient mail servers time to learn and trust the new source.
Warmup Phases
| Phase | Days | Daily Limit | Burst Cap | Notes |
|---|---|---|---|---|
| Phase 1 | 1-7 | 100 | 50/hr | Seed to known good domains (Gmail, Microsoft, Yahoo) first |
| Phase 2 | 8-14 | 500 | 200/hr | Expand to broader ISP audience |
| Phase 3 | 15-21 | 5,000 | 1,000/hr | Broad sending. Watch bounce rate carefully. |
| Phase 4 | 22+ | 20,000+ | 4x daily | Full production volume |
IP Rotation
Rotation Triggers
An IP should be rotated out of active service (cooled down) when:
- Reputation collapses (blocklist placement, sudden bounce rate spike above 5%)
- IP is flagged by a major recipient (Gmail, Microsoft, Yahoo)
- Scheduled rotation: a new IP is ready to take over after its own warmup
- Compliance requirement to cycle sending IPs periodically
Rotation Procedure
To rotate an IP out of service and bring a replacement into rotation:
curl -X POST https://api.postmta.com/v1/ip-pools/pool_01HXPOOL001/rotate \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"remove_ip": "203.0.113.10",
"add_ip": "203.0.113.20",
"drain_strategy": "graceful",
"drain_window_hours": 24,
"warmup_ladder": "default_30day"
}'The drain_strategy options:
| Strategy | Behaviour |
|---|---|
graceful | Stop routing new deliveries through the IP; allow in-flight messages to complete. The IP cools down over the drain window. |
immediate | Stop all new and in-flight deliveries immediately. Use only in emergencies. |
BYO IP Onboarding
To add your own IP addresses to PostMTA:
Step 1: Verify IP Ownership
Confirm you control the IP by responding to a Challenge-Response challenge sent by PostMTA to the IP's port 25 or via DNS:
curl -X POST https://api.postmta.com/v1/ip-pools/byo/verify \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"ip_address": "198.51.100.42",
"verification_method": "dns_txt",
"domain": "mail.example.com"
}'Step 2: Configure rDNS
Set a valid rDNS (PTR record) for each BYO IP, pointing to your sending domain:
42.100.51.198.in-addr.arpo. IN PTR mail.example.com.PostMTA checks rDNS on every connection. An IP without a valid rDNS is rejected at connection time.
Step 3: Add to PostMTA
curl -X POST https://api.postmta.com/v1/ip-pools \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"pool_name": "my-byo-pool",
"pool_type": "byo",
"ip_addresses": [
"198.51.100.42",
"198.51.100.43"
],
"warmup_ladder": "default_30day"
}'Step 4: Begin Warmup
Once the pool is created, the warmup ladder starts automatically. Monitor warmup progress in Settings → IP Pools → BYO Pool.
IP Monitoring
View per-IP reputation scores, blocklist status, and delivery rates:
curl https://api.postmta.com/v1/ip-pools/pool_01HXPOOL001/stats \
-H "Authorization: Bearer pmta_live_xxxxxxxxxxxxxxxx"Response:
{
"pool_id": "pool_01HXPOOL001",
"pool_name": "example-com-dedicated",
"ips": [
{
"ip": "203.0.113.10",
"status": "active",
"warmup_day": 12,
"warmup_phase": "phase_2",
"daily_sent_today": 347,
"daily_limit": 500,
"reputation_score": 94,
"blocklist_entries": 0,
"bounce_rate_7d": 0.4
},
{
"ip": "203.0.113.11",
"status": "warmup",
"warmup_day": 3,
"warmup_phase": "phase_1",
"daily_sent_today": 82,
"daily_limit": 100,
"reputation_score": 88,
"blocklist_entries": 0,
"bounce_rate_7d": 0.1
}
]
}