Skip to content

MailGuard 0.8.9 — Newsletter-Abmeldung Robustness + Sender vernichten

Choose a tag to compare

@RainerNeu1012 RainerNeu1012 released this 09 Jul 17:07
· 38 commits to master since this release

Fokus dieses Release: Newsletter-Abmeldung ist deutlich verlässlicher
und der neue „Sender vernichten"-Flow entfernt einen Absender
komplett aus dem Postfach in einem Klick.

Neu

  • „Sender vernichten" — kombinierter Ein-Klick-Flow: best-effort
    Abmeldung + Blacklist-Regel + IMAP-EXPUNGE aller bestehender Mails.
    Kein Papierkorb, kein Undo. Sichtbar als roter Button auf der
    Newsletter-Seite und in der gruppierten Inbox-Ansicht. Type-in-
    Bestätigung (VERNICHTEN eintippen) sowohl im Frontend als auch am
    REST-Endpoint gegen Muscle-Memory-Klicks.
  • Auto-DSN-Poll für mailto-Abmeldungen. Neuer WP-Cron
    itdatex_mailguard_unsub_poll (alle 10 Min.) verfolgt den Bounce-
    Status offener mailto-Abmeldungen der letzten 48 h automatisch.
    Bounces landen ohne User-Klick in Historie + Notify-Hook. Schedule
    wird beim plugins_loaded selbst-heilend nachgezogen, kein DB-Bump.
  • Neue Public-API: UnsubService::execute_for_sender,
    UnsubService::eradicate_sender, Subscriptions::messages_for_sender,
    PurgeService::block_sender, REST POST /subscriptions/eradicate.

Verbessert

  • Antiphish\Client retryt transiente Fehler (HTTP 429, 5xx, Netz-/
    Timeout-Fehler) genau einmal mit 400 ms Backoff. mailto-execute
    bleibt bewusst ohne Retry — sonst gingen doppelte Abmelde-Mails raus.
  • Idempotenz-Guard: schon erfolgreich abgemeldete Mails hitten die
    API nicht mehr erneut. Doppelklick-Race per Transient-Lock (60 s,
    per Kunde+Message) abgesichert — verhindert duplizierte
    mg_unsubs-Zeilen.
  • Bulk-Abmeldung mit Fallback: fällt bei toten/fehlenden Endpoints
    auf bis zu 5 ältere Absender-Mails zurück, statt sofort aufzugeben.
    Ältere Kampagnen haben häufiger noch gültige Tokens.
  • Klare REST-Statuscodes: already/ok/needs_manual/
    endpoints_dead → 200, not_found → 404, in_progress (Lock) →
    409, no_options → 422, sonst 502. UI kann echte Backend-Ausfälle
    von „Provider spielt nicht mit" unterscheiden.
  • Portal-UI zeigt konkrete Fehlerursachen (attempts[]/detail)
    statt „Status: unbekannt". Der endpoints_dead-Zweig ist jetzt auch
    auf der Newsletter-Seite verfügbar (nicht mehr nur in Inbox).

Migration

  • Keine DB-Änderung. Kein Datenverlust-Risiko.

Vollständige Details siehe CHANGELOG.md.