Knowledge base

show disabled sources

Which outgoing addresses are disabled
The only window into the disabling mechanism

Shows the sending addresses taken out of service. Without an argument — for all queues; with the domain[/vmta] argument — for the specified one.

It shows everything at once, regardless of the cause. The list equally includes addresses disabled by a person with the disable source command and those disabled by a mailbox provider rule with the disable-source-ip action based on a receiver’s response. The two cannot be told apart from the output — that requires the log enabled by the log-disabled-ips directive.

This is the only way to find out the current state. Neither the configuration nor pmta show settings shows disablings: they live in the engine’s memory, not in a file. An empty list is not the same as “the mechanism is not configured.”

The main trap. Disablings live only in the engine’s memory. A service restart wipes them all — the addresses return to service at once, including those a rule disabled because of a receiver complaint. After a planned node restart it is worth looking at the list again: it will be empty, and that does not mean the problem is gone.
What the Hub does. It calls it — with this command it checks the result of taking an address out and returning it, and the “Proxy gateway” module learns which proxies the engine took out itself: with one question without an argument, about all queues of the node.

One detail took a separate investigation: the output has to be requested in json format, not json-text. On this very command json-text returned an empty data field, while json in the same call returned a structure.

🔴 In 6.0 the structure is a list of queues: queues with the name and ips fields, and each address has address, the disable time disableTime and the return time enableTime. Until Sep 15, 2026 the Hub expected a “queue → addresses” map, and on a real reply the list of withdrawn addresses always came out empty — both in the control snapshot and in the proxy poll; as long as no addresses were withdrawn, the error could not be seen. Now the reply is unfolded into a flat list of “address → queue” lines.

Recommended values

Without an argument it is an overview, with an argument a check. For “what is disabled on the node at all,” call it without a target; to check a specific operation, specify the same target used for disabling.

Look at it regularly, not occasionally. The mechanism is quiet: an address leaves service without a single line in the configuration, and volume drops gradually. If disabled-source-ip-notify is not configured, this list is the only thing that will show what has accumulated.

From the manual here comes the command syntax. The note about the output format is our finding from the integration, verified on a live node.
Example configuration
# what is disabled for one receiver
$ pmta show disabled sources yahoo.com/vmta1
# what is disabled at all, across the whole node
$ pmta show disabled sources
The first line is the manual’s example. The second, without a target, shows the whole picture — that is where to start investigating “why the fleet is sending less.”
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 ends2 mistakes▶

Treating an empty list as a sign that everything is fine

our experience

What it costsDisablings are stored in the engine’s memory and do not survive a service restart. After a restart the list is empty regardless of what was there before — and all addresses, including those disabled because of a receiver complaint, are back in service.
How to spot itThe list is empty, yet the receiver’s complaints continue from the same address.
How to do it rightLook at the log (after enabling log-disabled-ips) or at notifications (disabled-source-ip-notify) — they survive a restart, the list does not.

Looking for disabled addresses in the configuration

our experience

What it costsThey are not in the file and cannot be: disabling is engine state, not a setting. A search of the configuration returns nothing and leads the investigation astray.
How to spot itNothing was found in the configuration, yet the address is not sending.
How to do it rightAsk the engine for the state with this command, and read the configuration only to see who could have disabled the address: mailbox provider rules with the disable-source-ip action.
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
The command itself is the check. It is useful to compare its output with the log — if it is enabled:
pmta show disabled sources
grep -i "disabl" /var/log/pmta/log | tail -20
The disabling log is written only if the log-disabled-ips directive is enabled in the receiver block — it is off by default. Without the log the list shows the state but not the history: there will be nowhere to find out when and based on which receiver response the address was disabled.
In the Hub
Cost of a mistake
safe: a wrong value breaks nothing
Scenarios
Sending address rotation