clusev/app
boban 5024675c94 fix(alerts): send one e-mail per recipient so a bad address can't drop all
The alert e-mail addressed ALL recipients in a single To:. When the admin
fallback list contains an undeliverable address (e.g. a seeded admin on a
non-routable domain), a receiving provider like Gmail sees the mixed
To: including a nonexistent recipient, scores the message as spam, and
silently drops it — for the valid recipients too (not even the spam
folder). A single-recipient test mail from the same relay arrived fine,
which is what isolated it: the shared To: was the difference, not SMTP.

Send one message per recipient instead (best-effort, per-address error
logging). A bad address now only fails its own send, and no recipient's
address leaks to the others. Diagnosis confirmed the worker sends over
real SMTP (mail.default=smtp, host=mail.thinkidoo.com) — this was purely
the recipient-list shape hurting deliverability.

Tests updated: two configured recipients now queue two messages, each
with a single To.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:56:23 +02:00
..
Console/Commands feat(alerts): threshold alerting + notifications (feature 2/8) 2026-07-05 20:07:54 +02:00
Enums feat(rbac): role enum + column + gates foundation (admin>operator>viewer) 2026-07-05 00:42:16 +02:00
Events fix(blade): garbled header on every signed-in page + private metrics channel (v0.4.1) 2026-06-14 08:34:07 +02:00
Exceptions perf/cleanup: one SSH round-trip for Docker, drop dead i18n, dedupe row 2026-07-06 20:06:27 +02:00
Http fix(ui): sidebar alert/threat badges update at once, not up to 60s late 2026-07-06 20:22:51 +02:00
Jobs feat: scaffold — Dockerized Laravel 13 + Livewire 3 + Tailwind 4 + Reverb 2026-06-12 00:31:50 +02:00
Livewire fix(ui): uniform action-element height + live fleet status / alerts 2026-07-06 20:42:09 +02:00
Mail feat(alerts): threshold alerting + notifications (feature 2/8) 2026-07-05 20:07:54 +02:00
Models fix(ui): sidebar alert/threat badges update at once, not up to 60s late 2026-07-06 20:22:51 +02:00
Notifications fix(security): constant-time password-reset (flatten account-enumeration timing) 2026-06-15 19:16:30 +02:00
Providers fix: alert mail on queue, SMTP reset, cert/uptime auto-probe, pill heights, XSS 2026-07-06 19:46:46 +02:00
Rules feat(auth): ValidIpOrCidr validation rule 2026-06-20 17:42:06 +02:00
Services fix(alerts): send one e-mail per recipient so a bad address can't drop all 2026-07-06 20:56:23 +02:00
Support feat(docker): show the Clusev host's own containers (host target) 2026-07-05 22:43:36 +02:00