How to handle "WARN Strategy not found (smtp.id-not-found)"?

Your question

Hi,
it looks like I have something not well configured for the case the dmarc report is tried to deliverd to a possible fake domain.

i see in the log files the messages “WARN Strategy not found (smtp.id-not-found)”.
here as an example a few log lines.

2026-05-29T11:51:29Z INFO Connection error (delivery.connect-error) queueId = 309778662514010624, queueName = "default", from = "[email protected]", to = ["[email protected]"], size = 2613, total = 1, domain = "laurablood.living", hostname = "mail.laurablood.living", localIp = 152.53.14.73, remoteIp = 103.27.249.94, remotePort = 25, causedBy = SMTP error occurred (smtp.error) { details = "I/O Error", reason = "Operation timed out (os error 110)" }, elapsed = 135368ms
2026-05-29T11:51:29Z WARN Strategy not found (smtp.id-not-found) queueId = 309778662514010624, queueName = "default", from = "[email protected]", to = ["[email protected]"], size = 2613, total = 1, id = "report", details = "Queue strategy not found"
2026-05-29T11:51:29Z INFO Message rescheduled for delivery (queue.rescheduled) queueId = 309778662514010624, queueName = "default", from = "[email protected]", to = ["[email protected]"], size = 2613, total = 1, nextRetry = 2026-05-29T13:51:29Z, nextDsn = 2082-10-24T16:06:30Z, expires = 2026-06-02T18:46:17Z
2026-05-29T11:51:29Z INFO Delivery attempt ended (delivery.attempt-end) queueId = 309778662514010624, queueName = "default", from = "[email protected]", to = ["[email protected]"], size = 2613, total = 1, elapsed = 135468ms

What kind of Strategy is here missing? I use here the default settings, nothing changed. So what to configure to remove this WARN message.

I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.

on

Let me look into this warning message in the source code.

This warning is telling you that a queue strategy named "report" is referenced in your schedule expression but no MtaDeliverySchedule object with that name exists in your configuration.

Here is what is happening step by step:

  1. Stalwart is trying to send a DMARC aggregate report (you can see source == 'report' in the log: from = "[email protected]").
  2. Your MtaOutboundStrategy’s schedule expression evaluates to 'report' for that message (as shown in the log: id = "report", details = "Queue strategy not found").
  3. Stalwart then looks for an MtaDeliverySchedule object named "report" – and cannot find it – so it logs the WARN.

The default example configuration (shown in the strategy docs) includes this clause for the schedule expression:

{"if": "source == 'report'", "then": "'report'"}

This means you need a corresponding MtaDeliverySchedule object named "report" to exist. In the WebUI, go to Settings › MTA › Outbound › Schedule and create one named report, or check whether the one that should have been created by default is missing or named differently.

The delivery still retries (as you can see from the queue.rescheduled log line), so the message is not lost – but every retry will produce this warning until the strategy object exists.

See the Strategies documentation and the Scheduling documentation for details on how to create and name the required MtaDeliverySchedule objects.

This is an automated reply from the Stalwart Help Bot. Other community members may follow up if this answer is incomplete or wrong.