Installing PowerMTA 5 on AlmaLinux 9
Prepare, install, validate and secure a licensed PowerMTA 5 deployment on AlmaLinux 9.
Scope and licensing
PowerMTA is commercial software. Obtain the correct RPM and license from an authorized source before beginning. This guide assumes root access to a clean AlmaLinux 9 host and a legitimate PowerMTA 5.x package.
Architecture and DNS planning
Plan the server hostname, sending hostnames, source IP addresses, reverse DNS and DKIM selectors before installation. Each source IP should have stable forward and reverse identity.
- Server hostname resolves to the management IP
- Every sending IP has provider-assigned PTR
- HELO names resolve back to their source IP
- SPF covers the actual envelope-from domain
- DKIM and DMARC are planned before production traffic
Prepare AlmaLinux
dnf update -y
dnf install -y curl wget bind-utils net-tools policycoreutils-python-utils
hostnamectl set-hostname mta1.example.com
timedatectl set-timezone UTCRe-login after changing the hostname. Confirm that hostname -f returns the expected fully qualified name and that time synchronization is healthy.
Install the licensed package
Copy the vendor-provided RPM to the server and install it with DNF so dependencies are handled consistently.
dnf install -y ./PowerMTA-5.*.rpm
systemctl daemon-reload
systemctl enable pmtaCreate a restricted first listener
Begin with a listener reachable only from localhost or a trusted application server. The example below is intentionally minimal and must be adapted to your licensed version and network.
smtp-listener 127.0.0.1:2525
<source 127.0.0.1>
always-allow-relaying yes
</source>Service validation
systemctl restart pmta
systemctl --no-pager --full status pmta
ss -lntp | grep -E ":(25|2525)\b"
journalctl -u pmta -n 100 --no-pagerDo not continue until the service starts without configuration errors and only the intended interfaces are listening.
Test submission
swaks --server 127.0.0.1:2525 \
--from [email protected] \
--to [email protected]Inspect the transaction, queue state and accounting records. A successful SMTP acceptance does not by itself prove inbox placement.
Firewall and access control
Allow only the ports and source networks actually required. Submission ports should normally require authentication or be limited by network policy.
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=198.51.100.20/32 port port=2525 protocol=tcp accept"
firewall-cmd --reloadProduction checklist
- License loads successfully
- Configuration validates
- Listener access is restricted
- PTR and HELO align
- DKIM signing tested
- SPF and DMARC published
- Bounce and complaint handling defined
- Accounting logs retained
- Monitoring and backups enabled
- Provider-specific rates begin conservatively
Common failures
Startup failures are most often caused by invalid directives, missing referenced objects, duplicate names, unreadable license files or an IP address that is not assigned locally. Read the first parser error rather than changing multiple lines at once.