# 30-Jul-2026 — keep the Brevo SMTP key active so re-send routing stops bouncing [ref #341](https://github.com/nbarrett/ngx-ramblers/issues/341)

## [build 805](https://github.com/nbarrett/ngx-ramblers/actions/runs/30537275334) — [commit 137ad2e](https://github.com/nbarrett/ngx-ramblers/commit/137ad2e35fdb41fbd5be0d9992dd16e0970aeb62)

_____

Brevo marks an SMTP key inactive after three months without a send. That key is a
separate credential from the REST API key, used only by Cloudflare Email Routing in
Brevo re-send mode. Low-traffic role addresses can go three months without a single
message, so the key expires purely from disuse while the routing rule is still enabled.

When that happens the failure is not graceful: the relay fails, Cloudflare rejects the
message, and anyone emailing that role address gets a bounce. Nothing in the admin UI
warns beforehand.

Adds a monthly keepalive task that sends one probe through the same relay the inbound
routing uses, which resets the inactivity clock and doubles as an end-to-end check. It
appears in Scheduled Tasks with run history, an enable toggle, an editable schedule and
a manual trigger, so a failure shows up there rather than as a bounce to a member. The
probe recipient is configurable in Mail Settings and falls back to the SMTP login, and
the task skips itself on sites that do not use Brevo re-send.

Scheduling it monthly exposed a defect in overdue detection, fixed here too. The
watchdog treated any day-of-month schedule as a flat 28 days, which for a monthly task
pointed the previous expected run a few days after the run that actually happened, so it
would raise a missed-run alert and re-run the task every month. Overdue detection now
works out the true previous occurrence from the schedule itself. Checked against all
seven existing schedules: only the monthly one moves, to the correct date, and genuine
missed-run recovery still works.