Knowledge base

Deployment in the cloud

Deploying PowerMTA on an EC2 instance
The same steps plus what your own machine does not have

Deploying in AWS is an ordinary installation on an EC2 machine with a Red Hat Enterprise Linux 9 HVM image, whose type and size are chosen from the manual’s capacity table.

The cloud has three specifics. The outbound port 25 restriction is lifted by a request in advance. The manual advises encrypting the EBS volume that holds the configuration, state, logs and message contents. And memory needs about 2 KB per queued recipient, while the spool disk needs a bit more than the volume of unsent messages.

The main trap is treating the capacity table as a promise. The manual calls it a rough estimate for 50 KB messages: the real rate depends on the configuration, TLS, DNS and the reputation of the sending addresses.
What the Hub does. It installs the engine on a prepared machine itself and checks beforehand whether the machine is suitable. Fixing the address and lifting the restriction on the outgoing mail port with the cloud provider remain with whoever sets up the node.
Recommended values

Capacity estimate from the manual, 50 KB messages:

Purpose Type Cores Memory Disk Messages per hour
development c5.large 2 4 GB 100 GB 1,000,000
production c5.xlarge 4 8 GB 400 GB 2,000,000
production c5.2xlarge 8 16 GB 800 GB 4,000,000
production c5.4xlarge 16 32 GB 1.6 TB 8,000,000
The steps, the image, the capacity table, memory per recipient and the advice to encrypt the volume come from the manual (§ 1.7.1.1–1.7.1.3); the port 25 restriction is § 1.7. The table is a selection from the manual.
Example configuration
# is the volume that will hold the spool encrypted
aws ec2 describe-volumes --query 'Volumes[*].[VolumeId,Encrypted]' --output table
False for the node’s volume means message contents lie on the disk unencrypted; encryption is set when the volume is created.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
Compatibility
PowerMTA 6.0
described in the manual of this version · platform: any
The vendor does not state the first version for every directive — there is no note here. The name also appears in the 5.0 edition of the manual.
How to check on the node
Check outbound port 25 before the first campaign:
nc -vz -w 5 gmail-smtp-in.l.google.com 25
A timeout with a working network means the cloud’s port 25 restriction has not been lifted.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Prepare a node for sending