DiveLogix360 – Nachweis Hostpoint-Mailversand UC00 vom 10.10.2026¶
Stand: 14.10.2026 09:17 Branch: main Status: Aktiv
Zweck: Überprüfbarer Nachweis für die technische Hostpoint-Konfiguration gemäss ADR-016 und die Kriterien UC00-08-54, UC00-08-35, UC00-08-55 und UC00-09-32 der UC00-Abschlusscheckliste.
Abgrenzung: Dieser Nachweis belegt nur die am 10.10.2026, 12.10.2026 und 14.10.2026 geprüften Stände in der Entwicklungsumgebung. Er ersetzt weder die vertragliche und datenschutzrechtliche Produktivfreigabe (UC00-07-12) noch die Aktivierung und Überwachung der Bounce-Verarbeitung im produktiven Betrieb.
Geprüfte Domain und Postfächer¶
| Element | Wert |
|---|---|
| Domain | divelogix360.ch |
| DNS-Provider | Hostpoint AG (ns.hostpoint.ch, ns2.hostpoint.ch, ns3.hostpoint.ch) |
| SMTP-Server | asmtp.mail.hostpoint.ch, Port 587, STARTTLS |
| Absenderadresse | noreply@divelogix360.ch |
| Envelope-Absender (Return-Path) | bounces@divelogix360.ch |
| Entwicklungsempfänger (Catch-All) | dev@divelogix360.ch |
DMARC-Berichte (rua, seit 12.10.2026) |
dmarc@divelogix360.ch, eigenes Postfach |
Zugangsdaten werden ausschliesslich in der lokalen, nicht versionierten backend/.env geführt und sind nicht Bestandteil dieses Nachweises.
1. SMTP-Laufzeitprüfung¶
| Prüfpunkt | Ergebnis |
|---|---|
| Prüfwerkzeug | backend/scripts/test-smtp.ts (Commit 88308e5) |
| Ausführung | Lokal durch David Mittig mit NODE_ENV=development am 10.10.2026 |
STARTTLS-Hochstufung (requireTLS) |
Erfolgreich |
Zertifikatsprüfung (rejectUnauthorized, mindestens TLS 1.2) |
Erfolgreich |
| SMTP-Authentifizierung | Erfolgreich |
Zustellung an dev@divelogix360.ch |
Bestätigt |
Ein Eintrag im Ordner «Gesendet» von noreply@divelogix360.ch entsteht nicht, weil der Versand ausschliesslich per SMTP und ohne IMAP-Ablage erfolgt. Der Versandnachweis wird stattdessen gemäss ADR-018 in notification_log geführt (Commit 64c375d).
2. DNS-Konfiguration¶
Grundlage ist der Export der DNS-Zone aus dem Hostpoint-Kundencenter vom 10.10.2026.
| Typ | Name | Wert | Ergebnis |
|---|---|---|---|
| TXT (SPF) | divelogix360.ch |
v=spf1 redirect=spf.mail.hostpoint.ch -all |
Syntaktisch gültig, aber wegen -all wirkungslos; am 12.10.2026 korrigiert (Abschnitt 6.3) |
| TXT (DKIM, Ed25519) | 20261010-ed25519-3688e808._domainkey.divelogix360.ch |
v=DKIM1; k=ed25519; h=sha256; p=… |
Veröffentlicht |
| TXT (DKIM, RSA 1024) | 20261010-rsa1024-3688e808._domainkey.divelogix360.ch |
v=DKIM1; k=rsa; h=sha256; p=… |
Veröffentlicht |
| TXT (DKIM, RSA 2048) | 20261010-rsa2048-3688e808._domainkey.divelogix360.ch |
v=DKIM1; k=rsa; h=sha256; p=… |
Veröffentlicht |
| TXT (DMARC) | _dmarc.divelogix360.ch |
v=DMARC1; p=quarantine; |
Gültig, Richtlinie Quarantäne |
| MX | divelogix360.ch |
mx1.mail.hostpoint.ch, mx2.mail.hostpoint.ch (Priorität 10) |
Gesetzt |
Die DKIM-Selektoren werden von Hostpoint pro Domain automatisch erzeugt. Für www.divelogix360.ch bestehen zusätzlich eigene Schlüssel mit dem Selektorsuffix 4d7d1849.
3. Hostpoint-Kundencenter: Erweiterter Schutz¶
| Einstellung | Wert |
|---|---|
| SPF | «SPF-Record ist gesetzt» |
| DKIM | Aktiviert |
| DMARC | Aktiviert, Richtlinie «Quarantäne» |
| Absenderrichtlinie E-Mail-Programm | «Versand nur mit jeweiligem E-Mail-Benutzer möglich» |
| Absenderrichtlinie Webserver | «Versand nur mit dem Webhosting möglich, dem die Domain zugewiesen ist» |
4. Externe Gegenprüfung¶
| Werkzeug | Ergebnis |
|---|---|
| dmarcian Domain Checker | SPF gültig mit Hardfail (-all); DMARC p=quarantine gefunden. Die Bewertung «SPF gültig» erwies sich am 12.10.2026 als unzutreffend (Abschnitt 6.3). |
| MXToolbox SuperTool | DMARC-Eintrag gefunden, Quarantäne-Richtlinie aktiv |
Die DKIM-Abfrage bei MXToolbox wurde mit dem Selektor hostpoint ausgeführt und fand deshalb keinen Eintrag. Mit den tatsächlichen Selektoren aus Abschnitt 2 wurde keine externe Gegenprüfung durchgeführt.
5. Nachtrag vom 12.10.2026: Selbstverwalteter DMARC-Eintrag mit Berichtsadresse¶
Hostpoint führt den DMARC-Eintrag bei aktiviertem DMARC unter «Erweiterter Schutz» als nicht bearbeitbaren Systemeintrag. Der Dialog «DMARC-Richtlinie» erlaubt nur die Wahl zwischen «Quarantäne» und «Ablehnen»; eine Berichtsadresse lässt sich dort nicht angeben. Deshalb wurde der Eintrag am 12.10.2026 durch David Mittig auf Selbstverwaltung umgestellt:
- Eigenes Postfach
dmarc@divelogix360.chfür DMARC-Sammelberichte angelegt, getrennt vonbounces@divelogix360.ch. - DMARC unter «Erweiterter Schutz» deaktiviert; der Systemeintrag
_dmarcwurde dadurch entfernt. - Eigenen TXT-Eintrag angelegt.
| Typ | Name | TTL | Wert |
|---|---|---|---|
| TXT (DMARC) | _dmarc.divelogix360.ch |
300 | v=DMARC1; p=quarantine; rua=mailto:dmarc@divelogix360.ch; fo=1 |
Kontrolle anhand des Zonenexports vom 12.10.2026: genau ein DMARC-Eintrag; die DKIM-Einträge für divelogix360.ch und www.divelogix360.ch, SPF, MX, A, AAAA und CNAME sind gegenüber dem 10.10.2026 unverändert.
Gegenprüfung mit dem dmarcian Domain Checker am 12.10.2026: DMARC gültig mit p=quarantine und Berichtsadresse; SPF gültig mit Hardfail (später als unzutreffend erkannt, Abschnitt 6.3); DKIM gültig (RSA-2048-Schlüssel des Selektors 20261010-rsa2048-3688e808). dmarcian empfiehlt p=reject; die Verschärfung ist nach Auswertung der ersten Berichte vor dem Produktivbetrieb vorgesehen.
Betriebshinweis: DMARC unter «Erweiterter Schutz» darf nicht wieder aktiviert werden, solange der eigene Eintrag besteht, weil sonst zwei DMARC-Einträge entstehen und Empfänger DMARC ignorieren. Änderungen der Richtlinie erfolgen direkt im eigenen TXT-Eintrag.
6. Nachtrag vom 12.10.2026: Zustell-, Bounce- und Authentifizierungsprüfung¶
Die Prüfungen wurden am Abend des 12.10.2026 durch David Mittig mit dem Prüfwerkzeug backend/scripts/test-smtp.ts ausgeführt. Für einzelne Läufe wurde der Empfänger ausschliesslich über die Umgebungsvariable MAIL_DEV_CATCH_ALL der jeweiligen Konsolensitzung gesetzt; Skript und backend/.env blieben unverändert. Externe Testadressen werden hier nicht namentlich geführt.
6.1 Unbekannte Adresse der eigenen Domain¶
| Prüfpunkt | Ergebnis |
|---|---|
| Empfänger | Nicht existierende Adresse unter divelogix360.ch |
| Ergebnis | Hostpoint lehnt die Adresse bereits beim Versand ab: 550 unroutable address |
| Rücklaufmeldung | Keine; der Fehler wird synchron an den Absender gemeldet |
Folge: Unzustellbarkeit tritt in zwei Formen auf. Synchrone Ablehnungen erkennt der MailService direkt und protokolliert sie heute als failed in notification_log; der dabei gespeicherte Fehlercode ist der allgemeine Nodemailer-Code und unterscheidet nicht zwischen endgültigen (5xx) und vorübergehenden (4xx) Fehlern.
6.2 Rücklaufmeldung an bounces@divelogix360.ch¶
| Prüfpunkt | Ergebnis |
|---|---|
| Empfänger | Nicht existierende Adresse einer externen Domain bei Microsoft 365 |
| Annahme durch Hostpoint | Erfolgreich (Message-ID zurückgegeben) |
| Ablehnung durch Empfängerserver | 550 5.4.1 Recipient address rejected: Access denied |
| Eingang der Rücklaufmeldung | In bounces@divelogix360.ch, rund eine Minute nach dem Versand |
| Format | multipart/report; report-type=delivery-status nach RFC 3464 mit Textteil, message/delivery-status und vollständiger Originalnachricht (message/rfc822) |
| Umschlagabsender der Meldung | <> mit Auto-Submitted: auto-replied |
| Zuordnung zur Originalnachricht | Message-ID der Originalnachricht im Kopf References: der Meldung und im Kopf Message-ID: der angehängten Originalnachricht |
| Zustelldaten | Action: failed; Status: 5.0.0 (allgemeiner Code von Hostpoint); genauer Code 5.4.1 nur in Diagnostic-Code |
Damit ist belegt, dass die Rücklaufadresse trotz strikter Absenderrichtlinie funktioniert. Für die Bounce-Verarbeitung ergeben sich folgende Anforderungen:
- Als endgültige Unzustellbarkeit gelten
Action: failedmit Status5.x.x, nicht nur5.1.1. - Der genaue Fehlercode ist aus
Diagnostic-Codezu lesen;Statusdient als Rückfall. - Die Zuordnung zu
notification_log.providerMessageIderfolgt überReferences:und ersatzweise über die angehängte Originalnachricht. - Rücklaufmeldungen enthalten die vollständige Originalnachricht, bei Einladungen also auch den Einladungslink. Verarbeitete Meldungen sind deshalb unverzüglich zu löschen.
- Die Meldung trug den Kopf
X-Hostpoint-Spambox: YESbeiX-Spam-Status: No; ein Abruf muss den Spam-Ordner einbeziehen oder die Spamfilterung fürbounces@ist anzupassen.
6.3 Authentifizierung beim Empfänger¶
| Prüfung | Empfänger | Zeitpunkt | SPF | DKIM | DMARC |
|---|---|---|---|---|---|
| A | dev@divelogix360.ch (Eingangsserver Hostpoint) |
10.10.2026 13:42 | pass |
pass, Selektoren 20260326-…-8010784d |
pass |
| B | dev@divelogix360.ch (Eingangsserver Hostpoint) |
12.10.2026 21:41 | pass |
pass, Selektoren 20261010-…-3688e808 |
pass |
| C | Bestehendes Postfach bei Microsoft 365 | 12.10.2026 21:45 | fail |
pass (RSA-1024, RSA-2048); Ed25519 ignore |
pass über DKIM |
| D | Bestehendes Postfach bei Microsoft 365, nach SPF-Korrektur | 12.10.2026 22:01 | pass |
pass (RSA-1024, RSA-2048); Ed25519 ignore |
pass |
Prüfung A wurde noch mit den früheren DKIM-Schlüsseln vom 26.03.2026 signiert; Hostpoint hat die Schlüssel am 10.10.2026 nach dieser Nachricht neu erzeugt. Microsoft unterstützt Ed25519-Signaturen nicht und ignoriert sie; die RSA-Signaturen genügen. Bei C und D stellte Microsoft die Nachricht in den Posteingang zu (Spam-Bewertung SCL 1, compauth=pass).
Befund SPF: Gemäss RFC 7208, Abschnitt 6.1, ist ein redirect-Modifikator zu ignorieren, wenn der Eintrag einen all-Mechanismus enthält. Der Eintrag v=spf1 redirect=spf.mail.hostpoint.ch -all wirkte deshalb bei standardtreuen Empfängern wie v=spf1 -all. MXToolbox bestätigte dies mit der Warnung «SPF Modifier will be ignored». Der Eingangsserver von Hostpoint wertete den Eintrag abweichend als pass, weshalb der Fehler bei Prüfung A und B nicht sichtbar war. DMARC bestand bei Microsoft nur wegen der ausgerichteten DKIM-Signatur.
Korrektur: Der SPF-Eintrag wurde am 12.10.2026 durch David Mittig geändert (laut SOA-Seriennummer des Zonenexports um 21:57):
| Typ | Name | TTL | Wert |
|---|---|---|---|
| TXT (SPF) | divelogix360.ch |
300 | v=spf1 include:spf.mail.hostpoint.ch -all |
Kontrolle anhand des Zonenexports vom 12.10.2026: genau ein SPF-Eintrag; «Erweiterter Schutz» meldet weiterhin «SPF-Record ist gesetzt»; DMARC, DKIM und MX unverändert. MXToolbox zeigt nach der Änderung include spf.mail.hostpoint.ch mit «Pass» und keine Warnung mehr. Prüfung D bestätigt die Wirkung.
7. Nachtrag vom 14.10.2026: End-to-End-Test der Bounce-Verarbeitung¶
Geprüft wurde die automatisierte Bounce-Verarbeitung gemäss ADR-024 vom Versand bis zur Zuordnung in notification_log. Werkzeug: backend/scripts/test-bounce-e2e.ts (npm run bounce:e2e), ausgeführt auf dem Entwicklungsrechner gegen Hostpoint und die Entwicklungsdatenbank.
7.1 Ablauf und Ergebnis¶
| Schritt | Ergebnis |
|---|---|
| Automatisierte Tests vor dem Lauf | 59 von 59 Unit-Tests in elf Testdateien erfolgreich |
send |
Testnachricht über Hostpoint SMTP (Port 587, STARTTLS) mit Return-Path bounces@divelogix360.ch an eine nicht existierende Adresse einer fremden, über Microsoft 365 betriebenen Domain gesendet; Versandeintrag status=sent mit Message-ID <ee602c98-…@divelogix360.ch> angelegt (Empfänger nur als SHA-256-Hash) |
| Rücklaufmeldung | Am 14.10.2026 um 08:31 im Postfach bounces@divelogix360.ch eingegangen: multipart/report; report-type=delivery-status, Status: 5.0.0, Diagnostic-Code mit 550 5.4.1, References: mit der Message-ID des Versands; trotz Kopf X-Hostpoint-Spambox: YES im Posteingang abgelegt |
verify |
Abruf geprüft=1, zugeordnet=1, vorübergehend=0, manuell=0; Versandeintrag status=bounced, errorCode=DSN_5.4.1; Testeintrag danach gelöscht |
| Postfach nach dem Abruf | Zugeordnete Rücklaufmeldung aus dem Postfach gelöscht, auch nicht im Ordner «Manuell-pruefen» vorhanden |
Damit sind belegt: Erkennung des Hostpoint-Formats (genauer Code aus Diagnostic-Code), Zuordnung über References:, Fortschreibung des Versandeintrags mit standardisiertem Fehlercode ohne Diagnosetext sowie die unverzügliche Löschung verarbeiteter Meldungen gemäss Runbook.
7.2 Befund beim ersten Lauf und Korrektur¶
Ein erster Lauf um 08:21 scheiterte beim Anlegen des Versandeintrags an der Prüfregel notification_log_timestamps_chk: queued_at wurde von der Datenbankuhr gesetzt, sent_at von der Anwendungsuhr, die geringfügig zurücklag. Derselbe Fehler konnte im MailService Versandprotokolle stillschweigend verhindern. Korrektur am 14.10.2026: queuedAt wird vor dem Versand in der Anwendung gesetzt, sentAt und failedAt liegen nie davor; mit Unit-Tests abgesichert. Rücklaufmeldungen ohne passenden Versandeintrag, darunter die dieses ersten Laufs, liessen sich nicht zuordnen und wurden wie vorgesehen in den Ordner «Manuell-pruefen» verschoben.
Nachweisgrenzen und offene Punkte¶
- SPF, DKIM und DMARC sind seit 12.10.2026 an zugestellten Nachrichten bei Hostpoint und Microsoft 365 nachgewiesen (Abschnitt 6.3); andere Empfängerdienste wurden nicht geprüft.
- Die DMARC-Berichtsadresse ist seit 12.10.2026 gesetzt (Abschnitt 5); der Eingang der ersten Berichte ist noch nicht bestätigt.
- Die Verschärfung der DMARC-Richtlinie auf
p=rejectsteht nach Auswertung der Berichte noch aus. - Der Rücklauf an
bounces@divelogix360.ch(Abschnitt 6.2) und die automatisierte Bounce-Verarbeitung (Abschnitt 7) sind in der Entwicklungsumgebung nachgewiesen. Geprüft wurde ein Rücklauf von Microsoft 365; andere Empfängerdienste wurden nicht geprüft. Im produktiven Betrieb ist der Abruf mitBOUNCE_POLL_ENABLED=truezu aktivieren; der Monitoring-Alarm für «Manuell-pruefen» folgt mit ADR-021. - Monitoring-Alerts, schriftliche Nutzungsbestätigung und Auftragsbearbeitungsvereinbarung mit Hostpoint bleiben gemäss ADR-016 offen.
- Die Prüfungen der Domain-Authentifizierung (SPF, DKIM, DMARC) vom 10.10.2026 und 12.10.2026 wurden manuell ausgeführt und sind vor der Umstellung auf
p=rejectzu wiederholen. Die Bounce-Verarbeitung ist mit Unit-Tests und dem End-to-End-Skript wiederholbar prüfbar.
Änderungshistorie¶
| Datum, Uhrzeit | Version | Änderung | Autor |
|---|---|---|---|
| 14.10.2026 09:17 | 1.4 | Nachtrag Abschnitt 7 ergänzt: End-to-End-Test der Bounce-Verarbeitung vom 14.10.2026 mit Zuordnung, Fehlercode DSN_5.4.1 und Löschung der Meldung; Befund und Korrektur der Versandzeitpunkte; Abgrenzung und Nachweisgrenzen nachgeführt |
Claude |
| 12.10.2026 22:04 | 1.3 | Nachtrag Abschnitt 6 ergänzt: synchrone Ablehnung unbekannter eigener Adressen, Rücklaufmeldung an bounces@ mit Formatbefund, Authentifizierungsprüfung bei Hostpoint und Microsoft 365, SPF-Befund (redirect mit -all wirkungslos) und Korrektur auf include; Bewertungen in Abschnitt 2, 4 und 5 sowie Nachweisgrenzen nachgeführt | Claude |
| 12.10.2026 20:53 | 1.2 | Nachtrag vom 12.10.2026 ergänzt: DMARC-Eintrag selbstverwaltet mit Berichtsadresse dmarc@divelogix360.ch, Postfach angelegt, Zonenkontrolle und dmarcian-Gegenprüfung; Nachweisgrenzen nachgeführt | Claude |
| 12.10.2026 09:58 | 1.1 | Änderungshistorie ans Dokumentende verschoben und Sprunglink «Änderungshistorie anzeigen» unter dem Kopf ergänzt (einheitlicher Dokumentaufbau gemäss AGENTS.md) | Claude |
| 12.10.2026 09:02 | 1.0 | Nachweis der SMTP-Laufzeitprüfung sowie der SPF-, DKIM-, DMARC- und Absenderrichtlinienkonfiguration vom 10.10.2026 dokumentiert | Claude |