Skip to content

v1.10.14 – v1.10.26 — 2026-05-09

  • chore(apt): Suite-Label von bookworm auf trixie umgestellt. Build-Host + Production-Nodes laufen seit Debian 13 GA auf Trixie; der alte Suite-Label-Pool wird nicht mehr bestückt. Makefile lädt nach pool/trixie/main, install.sh schreibt trixie main in neue Source-Lists, und das Postinst migriert bestehende /etc/apt/sources.list.d/nmg.list einmalig idempotent von bookworm → trixie.
  • feat(antispam): four-fix bundle — DMARC-none, TLD-list, random-local, bayes-class consolidation
  • fix(apparmor): allow pg_dump via Debian's pg_wrapper symlink
  • fix(migrations): 0095 Schema-Mismatch — description-Spalte gibt's nicht
  • fix(nmg-api): migrate-failure ist jetzt fatal wenn DB erreichbar
  • fix(rspamd): FISHY_TLD-multimap auf regex-Suffix-Map umgestellt — email:domain:tld-Filter lieferte ohne PSL-Datenbasis das ganze Input-Domain zurück, FISHY_TLD und seine zwei Composites (NMG_BAD_WORD_BAD_TLD, NMG_SUSPICIOUS_NEW_DOMAIN) waren seit jeher tot
  • fix(rspamd): NMG_BAD_WORD_BAD_TLD entfernt — Composite war seit Erstellung dead-on-arrival, weil BAD_WORDS/BAD_WORDS_DE keine rspamd-Stock-Symbole sind und nirgends im Repo registriert werden. Migration 0098 wirft Composite + Symbol-Weight raus, hardcoded Pendant in maincfg.go ebenfalls entfernt. Ersatz durch NMG_SUSPICIOUS_NEW_DOMAIN + DACH_PHISHING_BODY ist bereits aktiv.
  • fix(rspamd): NMG_DISPLAY_NAME_SPOOF Pattern-Bug — after_ok-Check las das letzte Brand-Zeichen statt das Zeichen danach (Lua: e ist End-Index des Match-Range, nicht Char dahinter). Bei "DHL Paketdienst" → after_ok=false → Symbol seit Erstellung tot. Fix: e+1 und string.find(...,1,true) plain-find.
  • fix(rspamd): NMG_EXTERNAL_SENDER bekommt score=0.001 (Lua + Migration 0097) plus expliziten task:insert_result() im Callback — ohne aktiven Symbol-Hit hat rspamd den Postfilter als "no symbol produced" wegoptimiert, X-NMG-External-Header wurde nie gesetzt
  • fix(ui): Training-Tabelle blendet das Klassen-Tag-Icon aus wenn keine zusätzlichen Bayes-Klassen aktiv sind. Migration 0095 hat bec/newsletter/phishing/transactional auf inactive=true gesetzt; das Dropdown wäre seitdem leer, der Button trotzdem geklickt-zeigbar gewesen. Jetzt erscheint das Icon nur noch wenn der Operator eigene Extra-Klassen reaktiviert — Standard-Workflow ist Spam/Ham via die zwei Quick-Buttons.
  • fix(digest): Quarantine-Digest verschickt mit echtem Envelope-Sender statt MAIL FROM:<>. Strato/rzone.de hat 4 von 13 Digest-Mails mit 5.7.1 No SPAM please! abgelehnt weil moderner strict-Policy-Filter den NULL-Sender als Spam-Signal werten. Neuer Pfad: envFrom matched dem Header-From: (= mail_config.digest_from_email), Postfix transport_maps bekommt einen <digest_from> discard: Eintrag damit Bounces für nicht-existente Empfänger lokal silently verworfen statt stuck-deferred in der Queue gehalten werden. UI zeigt damit auch wieder einen Sender statt „—" für Digest-Mails in den Mail-Logs.
  • chore(ui): Sandbox-Whitelist-Tab ist auf die Sandbox-Seite gewandert. Mail-Filter-Seite zeigt jetzt nur noch Sender-Filter, Content-Filter und Watched-Domains.
  • ux(ui): Settings-Pages mit vielen Tabs (mail-config mit 12, Domain-Edit mit 8) zeigen ihre Tabs jetzt vertikal in einer linken Spalte — Pattern wie Slack/Notion/Gmail. Mobile-Viewport klappt automatisch zurück auf horizontale Tabs.