dms-kanban: Ticket INT-18 ausformuliert (SMTP-Gateway)

War seit INT-17-ENTSCHEIDUNG.md als zurückgestellter Kanal
vorgemerkt, jetzt zur Umsetzung freigegeben und ausformuliert,
analog zu INT-19s Aufbau.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
patrickandClaude Sonnet 5 committed 2026-09-26 22:27:55 +02:00
1 parent 5bbabfee95
commit 982fc3a6aa
1 file changed
+61
+61
View File
@@ -0,0 +1,61 @@
# INT-18 – SMTP-Gateway (Weiterleitung an feste Adresse je Mandant/Postfach)
**Epic:** 🔌 Integration & API | **Rolle:** Fullstack | **Komplexität:** Mittel | **Aufwand:** 3 Personentage | **Welle:** 14
---
## Rolle
Du bist erfahrene Entwicklerin im Bereich Fullstack und baust NEXARCH DMS (Dokumentenkern, Suche & OCR, Metadaten, Versionierung, Integration/API), das sich an paperless-ngx, Alfresco, Docspell und ecoDMS orientiert und bekannte Fehler aus archivdms (siehe known-issues-archivdms.md) bewusst vermeidet.
Schnittstelle und Oberfläche aus einem Guss: Fachlogik serverseitig, Oberfläche ausschließlich über die öffentliche Schnittstelle.
## Auftrag
Aus `INT-17-ENTSCHEIDUNG.md`: SMTP-Gateway wurde als Kanal freigegeben, zurückgestellt bis zur expliziten Freigabe. Diese liegt jetzt vor. Ein SMTP-Eingang nimmt E-Mails an einer festen, mandanten-/postfachgebundenen Adresse entgegen und übergibt Anhänge/Nachricht an die bestehende Upload-Pipeline — analog zum bestehenden IMAP-Abruf (INT-03), aber als eingehender SMTP-Dienst statt aktivem Abruf.
**Technische Grundlage:** SMTP-Server-Bibliothek (Go), Absenderauthentifizierung (SPF/DKIM-Prüfung oder Zulassungsliste, siehe Prüfungen), bestehende DOC-01-Upload-API und Malware-Scan-Pipeline (DOC-17), Ratenbegrenzung wie bei INT-17/DOC-01.
## Produkt-DNA für diesen Bereich
**Übernehmen:**
- Feste Zuordnung Mandant/Postfach zu einer Empfangsadresse — wie bei INT-03s IMAP-Postfachbindung, kein Mandant durch Absenderwahl.
- Größen-/Typ-/Ratenbegrenzung, Malware-Scan-Pflicht wie bei jedem anderen Eingangskanal dieser Session (DOC-01, INT-17, INT-19).
**Bewusst vermeiden:**
- Kein offenes Relais: nur eingehende Zustellung an registrierte, mandantengebundene Adressen, kein Weiterversand.
- Kein Vertrauen in den Absender ohne Prüfung: SPF/DKIM oder Zulassungsliste, sonst Ablehnung.
- Keine ungescannte Ablage: jeder Anhang durchläuft Typprüfung und Malware-Scan wie jeder andere Upload.
## Ausgangslage
Setzt auf folgenden bereits fertigen Kacheln auf: DOC-01, DOC-17, INT-03 (Postfachbindungs-Muster), INT-17-ENTSCHEIDUNG, INT-19 (Kill-Switch-Muster).
Bezug: `dms-kanban/tickets/INT-17-ENTSCHEIDUNG.md` (Freigabe-Historie).
## Akzeptanzkriterien
Die Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:
1. SMTP-Dienst nimmt E-Mails an registrierten, mandanten-/postfachgebundenen Adressen entgegen; unbekannte Zieladresse wird abgelehnt (kein offenes Relais)
2. Absenderauthentifizierung (SPF/DKIM-Prüfung oder Zulassungsliste) vor Annahme; ungeprüfter/fehlgeschlagener Absender wird abgelehnt
3. Anhänge laufen über die bestehende DOC-01-Pipeline (Größen-/Typlimit, Malware-Scan vor Sichtbarkeit, Audit-Eintrag je Eingang)
4. Ratenbegrenzung je Absender/Zieladresse; Abschaltbar per Umgebungsvariable (Standard aus), ohne Schalter kein aktiver Codepfad/Port
## Prüfungen vor der Abnahme
Führe jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:
1. Missbrauchsfälle: unbekannte Zieladresse, fehlgeschlagene SPF/DKIM-Prüfung, überlanger/zu großer Anhang, falscher Dateityp, wiederholte Zustellung, Rate-Limit-Überschreitung
2. Malware-Pfad: ein Testmuster wird abgewiesen und nie sichtbar; Ausfall des Scanners führt zur Ablehnung
3. Kein offenes Relais: Zustellversuch an eine nicht-registrierte Adresse wird abgelehnt, keine Weiterleitung möglich
4. Abschaltung und Standardzustand: ohne Schalter ist der Dienst/Port nicht aktiv
## Nicht Bestandteil dieser Kachel
- Ausgehender Mailversand (das ist Mail-Board, nicht dieses Ticket)
- Anonyme Upload-URLs (in INT-17-ENTSCHEIDUNG.md abgelehnt)
- Mobile Erfassung (siehe INT-19/INT-21)
## Arbeitsweise
1. Lies zuerst INT-03 (Postfachbindungs-Muster) und die bestehende DOC-01-Upload-API/Malware-Pipeline, halte dich an die dort etablierten Muster.
2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.
3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.
4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.
5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.
6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.
## Abschluss
- Commit-Nachricht: `INT-18: smtp gateway weiterleitung an feste adresse`
- Branch: `feature/int-18-smtp-gateway-weiterleitung-an-feste-adresse-dms`
- Schrittweise committen, Branch pushen, dann anhalten. Kein Merge, kein Deploy.
- In der Beschreibung des Pull Request die durchgeführten Prüfungen mit Ergebnis auflisten.