Knowledge base

License file

PowerMTA license file
An ordinary file with one strict encoding requirement

The license key sits on the node as an ordinary file. On Linux it is /etc/pmta/license, on Windows — license.dat in the installation directory.

The contents are opaque — it is a vendor-issued key that is not read or edited.

The manual names one strict requirement directly: on Windows the file must be saved in ASCII, not Unicode. The requirement looks trivial right up until the key is copied through a notepad that saves in UTF-16 — then the engine will not accept it, and the cause cannot be seen by eye.

The file is part of the node’s state. It lives in the configuration directory and is part of what is copied for recovery (backup-restore): recovering without it means a new request to support.

The main trap is the encoding during transfer. The key arrives by email or from the customer portal, and it is copied through an editor. An editor that saves in Unicode makes the file unusable, while on screen it looks correct. The error will show up as a startup failure, and the cause will not be named anywhere except this line of the manual.
What the Hub does. It neither creates nor checks the file — the key comes to the customer from the vendor and is installed along with the engine.

⚠️ And the license tier is unknown to the Hub: this data is not in telemetry. So connection presets are calculated without regard to which license the customer has — and the standard one silently cuts outgoing connections to two hundred (licensing).

When restoring a node, the file is needed just like the configuration: the Hub will restore the settings, but not the key.

Recommended values

What to check in the file:

What What it should be
location /etc/pmta/license on Linux
encoding on Windows ASCII, not Unicode — a requirement of the manual
permissions the same as for the configuration: key material
backup together with the configuration directory

Checking the contents by eye is pointless — the key is opaque. The only real check is the one the engine does itself.

Copy the file, not the text. Transferring through an editor is exactly the source of the encoding problem; transferring as a file eliminates it.

The check order is ours. From the manual here come the file location on both platforms and the ASCII requirement on Windows.
Example configuration
# moving the key: as a file, not through an editor
scp license root@node:/etc/pmta/licensechown pmta:pmta /etc/pmta/license && chmod 640 /etc/pmta/license
The highlighted line moves the file as is — that way the encoding does not change. The line below sets the same permissions as for the rest of the configuration: this is key material.
yellow — — directive names, blue — blocks. They are highlighted the same way in the text of the card.
▲

Common mistakes and problems

what people get wrong and how it ends3 mistakes▶

Transferring the key through an editor on Windows

§ 2.2

What it costsAn editor that saves in Unicode makes the file unusable. On screen it looks correct, but the engine does not accept it — and the cause is not named anywhere except one line of the manual.
How to spot itThe engine does not start after installation; the license file is in place and looks right.
How to do it rightTransfer it as a file, not as text. If it has already been transferred through an editor, re-save it in ASCII.

Leaving the file out of the backup

§ 1.8

What it costsIt lives in the configuration directory and is part of the node’s state. Recovering without it means a new request to support and downtime exactly when the node is needed most.
How to spot itThe node is restored, the configuration is in place, but the engine does not start.
How to do it rightCopy the configuration directory in full — the key is there too.

Trying to understand the license from the file's contents

§ 2.2

What it costsThe key is opaque: neither the tier nor the term can be seen from it. Time goes into examining something that cannot be read.
How to spot itThe question “what license do we have” is answered by opening the file.
How to do it rightAsk the engine with a command — it prints both the tier and the term.
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.
Reference data
Syntax
Opaque key material supplied by SparkPost. The manual states one hard constraint on the file itself: on Windows it must be stored as ASCII, not Unicode. It may carry a SupportExpires field, and on a volume licence it carries an instances limit.
Everything here comes from the manual, with the section.
Inheritance
The file has no inheritance. It affects the whole instance: the license tier sets a ceiling above total-max-smtp-out, and nothing below overrides that ceiling.
How to check on the node
Only the engine itself checks the license — the file cannot be read by eye:
pmta show license
ls -l /etc/pmta/license
The first will show the license tier and its validity term — that is the only real check. The second — that the file is in place and has the correct permissions.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Prepare a node for sending