Powermta Configuration Guide (2026)
<source 127.0.0.1> bounce-handler bounces@example.com </source> Sample bounce script:
<virtual-mta transactional> vmta-name transactional source-ip 192.0.2.10 max-smtp-out 50 max-msg-rate 10000/h queue-type FIFO </virtual-mta> <virtual-mta marketing> vmta-name marketing source-ip 192.0.2.20 max-smtp-out 200 max-msg-rate 50000/h queue-type FIFO </virtual-mta>
#!/bin/bash while read line; do echo "$line" >> /var/log/pmta/bounces.log done PowerMTA provides CSV accounting logs for analysis. powermta configuration guide
Per-domain rate limiting:
<virtual-mta ip1> source-ip 192.0.2.1 max-smtp-out 5 max-msg-rate 500/h </virtual-mta> <virtual-mta ip2> source-ip 192.0.2.2 max-smtp-out 10 max-msg-rate 1000/h </virtual-mta> <source 127
pmta check config # Validate syntax pmta reload # Graceful reload pmta restart # Full restart tail -f /var/log/pmta/pmta.log PowerMTA is powerful but requires careful tuning. Start with conservative throttles, monitor bounce logs, adjust domain stanzas based on ISP feedback, and use virtual MTAs to separate traffic types. Always test with low volume first, especially for new IPs/domains.
<domain *> max-msg-per-connection 20 max-rcpts-per-message 100 </domain> Use multiple virtual MTAs with increasing limits: Always test with low volume first, especially for
<domain *> max-smtp-out 20 max-msg-rate 1000/h max-msg-per-connection 10 use-starttls yes </domain> <bounce-handler bounces@example.com> command /bin/cat >> /var/log/pmta/bounces.log </bounce-handler> Logging <acct-file /var/log/pmta/acct.csv> record job,vmta,domain,rcpts,status,dsn-status,time roll daily </acct-file> 16. Restart & Verify After config changes: