issue 800: fix review round 1 findings in mesh-mail-notifier

Flush now sorts accounts instead of walking a map, so notice order is
stable. A failed node-notifier.send keeps its mail pending and retries
at most once a minute, without holding up other accounts' notices, and
the failure is kept in the Store for a new health tool
(mail_notifier_health) that is unhealthy past ten minutes of failure.
The burst rule now follows the lead's reading of ADR 0378 S9: within an
account's sliding minute, the first three qualifying mails are shown
one by one and the rest are folded into one notice at the window's
end; there is no separate quiet-gap timer. The dedupe key is the
account and message id, falling back to folder/uidvalidity/uid only
when no message id is given, so a UIDVALIDITY reset cannot suppress a
new mail, and a redelivered event already buffered is never recounted.
status now lists every granted account, not only those with a notice,
and caches mail-store.accounts for a minute.
This commit is contained in:
jochen
2026-10-15 17:54:27 +02:00
parent 0993c31ad4
commit ed66a2e873
7 changed files with 762 additions and 185 deletions
+8 -2
View File
@@ -26,7 +26,8 @@
}
],
"tools": [
"mail-notifier.status"
"mail-notifier.status",
"mail_notifier_health"
],
"own-secrets": {
"broker": "${dir:state}/broker"
@@ -57,7 +58,12 @@
"notify"
],
"health": {
"kind": "unit"
"kind": "tool",
"tool": "mail_notifier_health",
"interval": "60s",
"timeout": "10s",
"looks": 2,
"grace": "120s"
}
}
],