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:
1 parent
5bbabfee95
commit
982fc3a6aa
1 file changed
+61
@@ -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.
|
||||
Reference in new issue
Block a user