The "hot" configuration above includes several moving parts, but delivering email is simple: follow the receiver's rules. Here is how to tune the key limits for major ISPs:
A perfect configuration file cannot overcome poor server setup or bad sending habits. Ensure these external factors are configured alongside your PowerMTA deployment:
Properly mapping your IPs and DKIM keys to ensure every mail is authenticated. sample powermta configuration file hot
bounce-log yes bounce-log-path /var/log/pmta/bounce bounce-server mailbounce.example.com bounce-smtp-port 25 max-bounce-recipients 100
vmta prewarm pool pool-warmup seed-domains gmail.com, yahoo.com, outlook.com warmup-rate 200/hour warmup-duration 3d The "hot" configuration above includes several moving parts,
default-remote-smtp-connection-rate 200/s default-remote-smtp-burst 10000 per-recipient-rate-limit 20/minute per-domain-message-rate 10000/hour
In lifestyle, unsubscribes are not just legal requirements (CAN-SPAM, GDPR); they are reputation savers. If a user marks "luxury watches" as spam, PowerMTA must remember this globally. Replace placeholder values like yourdomain
Below is a robust config file structured for high-performance delivery. Replace placeholder values like yourdomain.com and IP addresses with your actual infrastructure details.
<schedule 17-21> set max-smtp-out 300 set throttle-smtp-out 100000 </schedule>
# ===================================================================== # PowerMTA Custom Directive Template for Hotmail / Outlook / Live / Msn # ===================================================================== # --- Queue Management --- queue-to hotmail.com # Groups all Microsoft variants into a single queue retry-interval 30m # Wait 30 minutes before retrying deferred emails max-retry-time 4d # Keep trying to deliver for up to 4 days # --- Connection and Traffic Control --- max-smtp-out 20 # Maximum concurrent SMTP connections from this server max-msg-per-connection 100 # Close connection and open a new one after 100 emails max-errors-per-connection 5 # Drop the connection early if multiple errors occur # --- Delivery Rate Limits (Throttling) --- max-msg-per-hour 5000 # Global cap per hour for this specific domain group min-retry-interval 15m # Minimum delay between retries for temporary failures # --- Bounce and Error Handling --- bounce-on-4xx-status false # Do not bounce emails permanently on 4xx temp errors log-delivery-failures true # Record detailed failure logs for debugging log-fallback-failures true # Record fallback routing logs # --- Automated Backoff (Critical for Microsoft Filters) --- # If Microsoft responds with standard throttling codes, reduce traffic 421 RP-001 *, 1h, 5, 1000 # Back off for 1 hour, drop connections to 5, max 1000/hr 421 4.3.2 *, 45m, 2, 500 # Server busy code: Back off 45 mins, drop to 2 connections # --- Security and Authentication --- use-starttls yes # Enforce TLS encryption for secure transit require-starttls no # Fall back to clear text only if remote server lacks TLS dkim-sign yes # Force DKIM signing on all outgoing items Use code with caution. Critical Directive Breakdown 1. Queue Consolidation ( queue-to )
; Virtual MTA (vMTAs) for IP/pool separation — create two pools: warm and hot virtual-mta hot-pool