Aloha KumoMTA Team ![]()
To start with, the entire init.lua configuration works completely fine with skip_queue_config_hook = true set, according to the recommendation.
The problem only affects the configuration verification via kumod --validate --policy /opt/kumomta/etc/policy/init.lua command.
Even though everything runs correctly, the validation fails. I understand that the order matters here, but the declaration
local queue_helper = queue_module:setup_with_options {
skip_queue_config_hook = true,
file_names = { '/opt/kumomta/etc/policy/queues.toml', },
}
…is actually the last one. However, this probably shouldn’t matter anyway because get_queue_config is skipped in queue_helper.
2026-05-26T09:22:14.573678Z INFO localset-0 kumod: Version is 2026.04.09-ea3b2a9b
2026-05-26T09:22:14.573712Z INFO localset-0 kumod: NodeId is b689113c-d829-4a0c-8d89-5657189d3f0f
2026-05-26T09:22:14.573787Z INFO localset-0 kumod: available_parallelism=8
2026-05-26T09:22:14.578206Z INFO localset-0 kumod::logging::classify: bounce-classify thread pool starting with 2 threads
queue.lua is in use, but it is not the last module to register for the get_queue_config event.
This can cause issues with routing/scheduling, especially if you have a [queue.default]
block defined in your queue data.
Here are the locations where each of the get_queue_config events are
registered:
1:
/opt/kumomta/share/policy-extras/log_hooks.lua:191
[string "/opt/kumomta/etc/policy/init.lua"]:20
2:
/opt/kumomta/share/policy-extras/shaping.lua:540
[string "/opt/kumomta/etc/policy/init.lua"]:118
3:
[string "/opt/kumomta/etc/policy/init.lua"]:185
You should adjust the initialization order so that queue.lua is last.
2026-05-26T09:22:14.635810Z INFO main kumod::spool: Shutting down spool
Error: Initialization raised an error: Validation failed
The command returns Error: Initialization raised an error: Validation failed and exit code 1, which prevents me from verifying the configuration validity in the pipeline before deployment.
[queue.default] is commented out.
At first glance, this does not look like a configuration error (everything works as it should).
Does the validation take skip_queue_config_hook = true into account?
The exact same configuration but with skip_queue_config_hook = false passes validation without any errors.
What else could have gone wrong?