systeme:omnimail:entwurf-v2-1
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| systeme:omnimail:entwurf-v2-1 [03/11/2026 19:22] – [Teil 1 · Die Postreise einfach erklärt] Holger Wehrs | systeme:omnimail:entwurf-v2-1 [04/11/2026 00:30] (aktuell) – OmniMail Teil 4: Benutzertext, ohne Diagramm; OmniBackup™ Holger Wehrs | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== OmniMail™ · Dokumentationsentwurf V2.1 ====== | ====== OmniMail™ · Dokumentationsentwurf V2.1 ====== | ||
| - | **Stand:** 2026-11-03. **Geltung: | + | **Stand:** 2026-11-04. **Geltung: |
| {{ : | {{ : | ||
| - | **Gestaltungsvergleich: | + | **Gestaltungsvergleich: |
| + | |||
| + | |||
| + | ===== Vorwort ===== | ||
| + | Im Rahmen des Designs hat der Autor den verschiedenen Bereichen oder Routinen im OmniMail™ umgangssprachliche Namen gegeben, damit man sich ein besseres Bild von den Kommunikationswegen machen kann. In einigen Schaugrafiken sind diese Namen als **Codename** angegeben. So haben wir z.B. den Mail-Eingangsserver **// | ||
| ---- | ---- | ||
| Zeile 30: | Zeile 34: | ||
| primaryBorderColor: | primaryBorderColor: | ||
| lineColor: "# | lineColor: "# | ||
| - | edgeLabelBackground: | + | edgeLabelBackground: |
| - | fontFamily: " | + | fontFamily: "Roboto, |
| - | fontSize: "17px" | + | fontSize: "16px" |
| flowchart: | flowchart: | ||
| nodeSpacing: | nodeSpacing: | ||
| Zeile 59: | Zeile 63: | ||
| ry: 20px; | ry: 20px; | ||
| } | } | ||
| + | .nodeLabel p { padding: 10px 0 !important; } | ||
| + | .edgeLabel { font-size: 10px !important; } | ||
| + | .edgeLabel .labelBkg { | ||
| + | background: transparent !important; | ||
| + | padding: 0 !important; | ||
| + | border: 0 !important; | ||
| + | } | ||
| + | .edgeLabel .pill { | ||
| + | background: #eaf4fb; | ||
| + | border-radius: | ||
| + | box-shadow: inset 0 0 0 1px #b8ccdc; | ||
| + | display: inline-block; | ||
| + | padding: 1px 4px; | ||
| + | } | ||
| + | .edgeLabel .spacer { visibility: hidden; } | ||
| + | .edgeLabel .edge-row { display: inline-flex; | ||
| --- | --- | ||
| flowchart LR | flowchart LR | ||
| Zeile 65: | Zeile 85: | ||
| C --> D[" | C --> D[" | ||
| D --> E[" | D --> E[" | ||
| - | E --> F[" | + | E --> F[" |
| classDef decision stroke:# | classDef decision stroke:# | ||
| class C decision | class C decision | ||
| Zeile 95: | Zeile 115: | ||
| primaryBorderColor: | primaryBorderColor: | ||
| lineColor: "# | lineColor: "# | ||
| - | edgeLabelBackground: | + | edgeLabelBackground: |
| - | fontFamily: " | + | fontFamily: "Roboto, |
| - | fontSize: "17px" | + | fontSize: "16px" |
| flowchart: | flowchart: | ||
| nodeSpacing: | nodeSpacing: | ||
| Zeile 118: | Zeile 138: | ||
| stroke-width: | stroke-width: | ||
| } | } | ||
| - | .cluster rect { | + | .nodeLabel p { padding: 10px 0 !important; } |
| - | fill: # | + | |
| - | | + | |
| - | rx: 20px; | + | |
| - | ry: 20px; | + | |
| - | } | + | |
| + | .edgeLabel .pill { display: inline-block; | ||
| --- | --- | ||
| - | flowchart | + | flowchart |
| - | A["Externer SMTP-Client"] --> | + | A["Absender"] --> |
| - | Q --> | + | Q --> |
| - | H --> | + | H --> |
| - | S --> | + | S --> |
| - | H --> | + | H --> |
| classDef decision stroke:# | classDef decision stroke:# | ||
| class H decision | class H decision | ||
| Zeile 136: | Zeile 157: | ||
| <WRAP info round 80% justify> | <WRAP info round 80% justify> | ||
| + | <wrap em>Was bedeuten die Begriffe?</ | ||
| + | * **TCP 25:** SMTP-Anschlussnummer; | ||
| + | * **Policy 10031:** interner Prüfanschluss von Alois zu Hildegard. | ||
| + | * **RCPT:** Empfängerangabe im SMTP-Gespräch. | ||
| + | * **Rückpfeile: | ||
| + | </ | ||
| + | |||
| + | <WRAP important round 80% justify> | ||
| ===== Warum dieser Umweg? ===== | ===== Warum dieser Umweg? ===== | ||
| - | Stalwart kennt die lokalen Konten. Alois benötigt nur die Antwort, ob die Adresse zulässig ist. Der direkte Mailweg von Alois zu Stalwart bleibt gesperrt. | + | - Stalwart kennt die lokalen Konten. |
| + | - Alois benötigt nur die Antwort, ob die Adresse zulässig ist. | ||
| + | - Der direkte Mailweg von Alois zu Stalwart bleibt gesperrt. | ||
| </ | </ | ||
| Zeile 156: | Zeile 187: | ||
| primaryBorderColor: | primaryBorderColor: | ||
| lineColor: "# | lineColor: "# | ||
| - | edgeLabelBackground: | + | edgeLabelBackground: |
| - | fontFamily: " | + | fontFamily: "Roboto, |
| - | fontSize: "17px" | + | fontSize: "16px" |
| flowchart: | flowchart: | ||
| nodeSpacing: | nodeSpacing: | ||
| Zeile 185: | Zeile 216: | ||
| ry: 20px; | ry: 20px; | ||
| } | } | ||
| + | .nodeLabel p { padding: 10px 0 !important; } | ||
| + | .edgeLabel { font-size: 10px !important; } | ||
| + | .edgeLabel .labelBkg { | ||
| + | background: transparent !important; | ||
| + | padding: 0 !important; | ||
| + | border: 0 !important; | ||
| + | } | ||
| + | .edgeLabel .pill { | ||
| + | background: #eaf4fb; | ||
| + | border-radius: | ||
| + | box-shadow: inset 0 0 0 1px #b8ccdc; | ||
| + | display: inline-block; | ||
| + | padding: 1px 4px; | ||
| + | } | ||
| + | .edgeLabel .spacer { visibility: hidden; } | ||
| + | .edgeLabel .edge-row { display: inline-flex; | ||
| --- | --- | ||
| flowchart LR | flowchart LR | ||
| - | Q[" | + | Q[" |
| - | R --> | + | R --> |
| - | R --> | + | R --> |
| classDef decision stroke:# | classDef decision stroke:# | ||
| class R decision | class R decision | ||
| Zeile 198: | Zeile 245: | ||
| Für '' | Für '' | ||
| </ | </ | ||
| + | |||
| + | **Eingangspost** | ||
| < | < | ||
| Zeile 210: | Zeile 259: | ||
| primaryBorderColor: | primaryBorderColor: | ||
| lineColor: "# | lineColor: "# | ||
| - | edgeLabelBackground: | + | edgeLabelBackground: |
| - | fontFamily: " | + | fontFamily: "Roboto, |
| - | fontSize: "17px" | + | fontSize: "16px" |
| flowchart: | flowchart: | ||
| nodeSpacing: | nodeSpacing: | ||
| Zeile 239: | Zeile 288: | ||
| ry: 20px; | ry: 20px; | ||
| } | } | ||
| + | .nodeLabel p { padding: 10px 0 !important; } | ||
| + | .edgeLabel { font-size: 10px !important; } | ||
| + | .edgeLabel .labelBkg { | ||
| + | background: transparent !important; | ||
| + | padding: 0 !important; | ||
| + | border: 0 !important; | ||
| + | } | ||
| + | .edgeLabel .pill { | ||
| + | background: #eaf4fb; | ||
| + | border-radius: | ||
| + | box-shadow: inset 0 0 0 1px #b8ccdc; | ||
| + | display: inline-block; | ||
| + | padding: 1px 4px; | ||
| + | } | ||
| + | .edgeLabel .spacer { visibility: hidden; } | ||
| + | .edgeLabel .edge-row { display: inline-flex; | ||
| --- | --- | ||
| - | flowchart | + | flowchart |
| - | | + | E1[" |
| - | direction LR | + | E2 --> |
| - | | + | |
| - | E2 --> | + | |
| - | end | + | |
| - | subgraph A["Ausgangspost" | + | |
| - | direction LR | + | |
| - | A1[" | + | |
| - | A2 -->|" | + | |
| - | A3 --> | + | |
| - | end | + | |
| </ | </ | ||
| - | <WRAP tip round 80% justify> | + | **Ausgangspost** |
| - | ===== DNS und Zertifikats-Kurier ===== | + | |
| - | Alois verwendet für seine DNS-Abfragen den externen BIND-Dienst; | + | |
| - | </ | + | |
| < | < | ||
| Zeile 270: | Zeile 323: | ||
| primaryBorderColor: | primaryBorderColor: | ||
| lineColor: "# | lineColor: "# | ||
| - | edgeLabelBackground: | + | edgeLabelBackground: |
| - | fontFamily: " | + | fontFamily: "Roboto, |
| - | fontSize: "17px" | + | fontSize: "16px" |
| flowchart: | flowchart: | ||
| nodeSpacing: | nodeSpacing: | ||
| Zeile 299: | Zeile 352: | ||
| ry: 20px; | ry: 20px; | ||
| } | } | ||
| + | .nodeLabel p { padding: 10px 0 !important; } | ||
| + | .edgeLabel { font-size: 10px !important; } | ||
| + | .edgeLabel .labelBkg { | ||
| + | background: transparent !important; | ||
| + | padding: 0 !important; | ||
| + | border: 0 !important; | ||
| + | } | ||
| + | .edgeLabel .pill { | ||
| + | background: #eaf4fb; | ||
| + | border-radius: | ||
| + | box-shadow: inset 0 0 0 1px #b8ccdc; | ||
| + | display: inline-block; | ||
| + | padding: 1px 4px; | ||
| + | } | ||
| + | .edgeLabel .spacer { visibility: hidden; } | ||
| + | .edgeLabel .edge-row { display: inline-flex; | ||
| --- | --- | ||
| flowchart LR | flowchart LR | ||
| - | | + | |
| - | H["int-mailgateway"] -->|"DNS" | + | |
| - | | + | |
| - | | + | |
| - | T --> W["kontrollierter Reload"] | + | |
| - | W --> S["Stalwart | + | |
| </ | </ | ||
| - | < | + | < |
| - | ===== Monitoring und Backup | + | ===== Zwei getrennte DNS-Wege |
| - | Ein Host-Monitor prüft die Mailstraße und löst bei relevanten Zustandswechseln Alarm aus. Der Alarmdienst | + | Alois verwendet für DNS-Abfragen den externen BIND-Dienst; |
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Teil 3 · Der Zertifikats-Kurier ====== | ||
| + | |||
| + | <WRAP tip round 80% justify> | ||
| + | ===== Warum braucht OmniMail einen Kurier? ===== | ||
| + | Caddy beschafft | ||
| </ | </ | ||
| Zeile 325: | Zeile 400: | ||
| primaryBorderColor: | primaryBorderColor: | ||
| lineColor: "# | lineColor: "# | ||
| - | edgeLabelBackground: | + | edgeLabelBackground: |
| - | fontFamily: " | + | fontFamily: "Roboto, |
| - | fontSize: "17px" | + | fontSize: "16px" |
| flowchart: | flowchart: | ||
| nodeSpacing: | nodeSpacing: | ||
| Zeile 354: | Zeile 429: | ||
| ry: 20px; | ry: 20px; | ||
| } | } | ||
| + | .nodeLabel p { padding: 10px 0 !important; } | ||
| + | .edgeLabel { font-size: 10px !important; } | ||
| + | .edgeLabel .labelBkg { | ||
| + | background: transparent !important; | ||
| + | padding: 0 !important; | ||
| + | border: 0 !important; | ||
| + | } | ||
| + | .edgeLabel .pill { | ||
| + | background: #eaf4fb; | ||
| + | border-radius: | ||
| + | box-shadow: inset 0 0 0 1px #b8ccdc; | ||
| + | display: inline-block; | ||
| + | padding: 1px 4px; | ||
| + | } | ||
| + | .edgeLabel .spacer { visibility: hidden; } | ||
| + | .edgeLabel .edge-row { display: inline-flex; | ||
| --- | --- | ||
| flowchart LR | flowchart LR | ||
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | K --> |
| + | | ||
| </ | </ | ||
| + | |||
| + | <WRAP info round 80% justify> | ||
| + | ===== Was prüft und verteilt er? ===== | ||
| + | - **Eingang: | ||
| + | - **Prüfung: | ||
| + | - **Übergabe: | ||
| + | - **Aktivierung: | ||
| + | </ | ||
| + | |||
| + | <WRAP tip round 80% justify> | ||
| + | ===== Wer bekommt ein Zertifikat? ===== | ||
| + | ^ Ziel ^ Wofür? ^ Wie wird es aktiv? ^ | ||
| + | | Stalwart | IMAPS, Submission und die interne HTTPS-Verwaltung | Stalwarts lokaler TLS-Reload | | ||
| + | | Alois | STARTTLS am SMTP-Eingang | lokaler Postfix-Reload | | ||
| + | | Privater Konfigurationsdienst | HTTPS für AutoConfig und AutoDiscover | kontrollierter Reload des internen Webdienstes | | ||
| + | </ | ||
| + | |||
| + | <WRAP important round 80% justify> | ||
| + | ===== Wenn etwas schiefgeht ===== | ||
| + | Ein unvollständiges oder unpassendes Paket wird nicht veröffentlicht. Schlägt das Nachladen fehl, versucht der jeweilige Wächter die vorherige gültige Version wiederherzustellen. Der vorhandene Fünf-Minuten-Zyklus prüft neue Pakete und überspringt unveränderte Versionen. Private Schlüssel gehören ausschließlich in die geschützten Fächer, nicht in diese Seite, ins Git-Repository oder in Protokolle. | ||
| + | </ | ||
| ---- | ---- | ||
| - | ====== Teil 3 · Technische Referenz ====== | + | ====== Teil 4 · Monitoring und Backup ====== |
| + | |||
| + | <WRAP info round 80% justify> | ||
| + | ===== Wenn die Mailstraße Hilfe braucht ===== | ||
| + | Ein Host-Monitor prüft die beteiligten Dienste und meldet relevante Zustandswechsel per Info-Mail an das hinterlegte Administrator-Konto. Der Alarmdienst versendet seine Nachricht über Stalwart. | ||
| + | </ | ||
| + | |||
| + | <WRAP tip round 80% justify> | ||
| + | ===== Sicherung und Wiederherstellung ===== | ||
| + | Die Mail- und Konfigurationsdateien werden über das in einem separaten Artikel beschriebene OmniBackup™ in regelmäßigem Rhythmus archiviert. Die Sicherung erfolgt derzeit stündlich in mehrere verschlüsselte Borg-Repositories. | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ====== Teil 5 · Technische Referenz ====== | ||
| <WRAP info round 80% justify> | <WRAP info round 80% justify> | ||
| Zeile 406: | Zeile 533: | ||
| Bei Zustellproblemen zuerst Monitorstatus, | Bei Zustellproblemen zuerst Monitorstatus, | ||
| </ | </ | ||
| - | |||
| - | ===== VOE und Quellenstand ===== | ||
| - | Die VOE (**V**ereinigung der **O**mniMail-**E**lektriker) verlangt für jede produktive Leitung eine geprüfte Nummer und Verbindungsmatrix. Für die obigen Mailkanten ist keine vollständige autoritative OM-LINK-Liste belegt; deshalb tragen die neuen Diagramme keine erfundenen Leitungsnummern. Verifiziert ist der gesonderte Vertrag '' | ||
| - | |||
| - | Quellstand: Live-Docker-Inspect und Listener-Readback vom 03.11.2026; M01-DEPLOY-010, | ||
| - | |||
| ---- | ---- | ||
systeme/omnimail/entwurf-v2-1.1793730130.txt.gz · Zuletzt geändert: von Holger Wehrs
