| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung |
| systeme:omnimail:entwurf-v2-1 [03/11/2026 20:57] – [Teil 2 · Die beteiligten Dienste] Holger Wehrs | systeme:omnimail:entwurf-v2-1 [04/11/2026 00:30] (aktuell) – OmniMail Teil 4: Benutzertext, ohne Diagramm; OmniBackup™ Holger Wehrs |
|---|
| ====== OmniMail™ · Dokumentationsentwurf V2.1 ====== | ====== OmniMail™ · Dokumentationsentwurf V2.1 ====== |
| **Stand:** 2026-11-03. **Geltung:** ausschließlich OmniMail für ''omnisrv.de'' auf OMNISRV. Diese eigenständige Entwurfsseite ergänzt [[systeme:omnimail:start|die technische V1-Systemübersicht]] und verändert sie nicht. | **Stand:** 2026-11-04. **Geltung:** ausschließlich OmniMail für ''omnisrv.de'' auf OMNISRV. Diese eigenständige Entwurfsseite ergänzt [[systeme:omnimail:start|die technische V1-Systemübersicht]] und verändert sie nicht. |
| |
| {{ :systeme:omnimail:omnimail-titelbild.png?1100 |OmniMail – Die Mailstraße für omnisrv.de}} | {{ :systeme:omnimail:omnimail-titelbild.png?1100 |OmniMail – Die Mailstraße für omnisrv.de}} |
| |
| **Gestaltungsvergleich:** [[systeme:omnimail:entwurf-v2|V2 vor der Diagrammgestaltung]] · V2.1 mit der vom Benutzer vorgegebenen hellgrauen, gerundeten Darstellung. Die Empfängerprüfung steht waagerecht; ihre Kantenbeschriftungen sitzen in kleinen hellblauen Boxen. Rechts erklärt eine Legende die technischen Angaben. | **Gestaltungsvergleich:** [[systeme:omnimail:entwurf-v2|V2 vor der Diagrammgestaltung]] · V2.1 mit der vom Benutzer vorgegebenen hellgrauen, gerundeten Darstellung. Die Empfängerprüfung steht waagerecht; ihre Kantenbeschriftungen sitzen in kleinen hellblauen Boxen. Darunter erklärt eine Infobox die technischen Angaben. Diese Diagrammgestaltung gilt auch für die übrigen Schaubilder. |
| | |
| | |
| | ===== 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 **//Alois//** genannt und die interne Vermittlungsstelle **//Hildegard//**. Die weiteren Mitspieler sind am Ende dieses Artikels gelistet. |
| |
| ---- | ---- |
| primaryBorderColor: "#d8d8d8" | primaryBorderColor: "#d8d8d8" |
| lineColor: "#969696" | lineColor: "#969696" |
| edgeLabelBackground: "#ffffff" | edgeLabelBackground: "transparent" |
| fontFamily: "Arial" | fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" |
| fontSize: "17px" | fontSize: "16px" |
| flowchart: | flowchart: |
| nodeSpacing: 36 | nodeSpacing: 36 |
| 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: 8px; |
| | box-shadow: inset 0 0 0 1px #b8ccdc; |
| | display: inline-block; |
| | padding: 1px 4px; |
| | } |
| | .edgeLabel .spacer { visibility: hidden; } |
| | .edgeLabel .edge-row { display: inline-flex; align-items: center; } |
| --- | --- |
| flowchart LR | flowchart LR |
| C --> D["Spam- und Virenschutz"] | C --> D["Spam- und Virenschutz"] |
| D --> E["Interner Transport"] | D --> E["Interner Transport"] |
| E --> F["Stalwart-Mailbox"] | E --> F["Stalwart Mailbox"] |
| classDef decision stroke:#d8d8d8,stroke-dasharray:4 4 | classDef decision stroke:#d8d8d8,stroke-dasharray:4 4 |
| class C decision | class C decision |
| </WRAP> | </WRAP> |
| |
| <WRAP group> | |
| <WRAP column twothirds> | |
| <mermaid> | <mermaid> |
| raw | raw |
| primaryBorderColor: "#d8d8d8" | primaryBorderColor: "#d8d8d8" |
| lineColor: "#969696" | lineColor: "#969696" |
| edgeLabelBackground: "#eaf4fb" | edgeLabelBackground: "transparent" |
| fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" | fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" |
| fontSize: "16px" | fontSize: "16px" |
| stroke-width: 1.2px !important; | stroke-width: 1.2px !important; |
| } | } |
| | .nodeLabel p { padding: 10px 0 !important; } |
| .edgeLabel { font-size: 10px !important; } | .edgeLabel { font-size: 10px !important; } |
| .edgeLabel .labelBkg { | .edgeLabel .labelBkg { background: transparent !important; padding: 0 !important; border: 0 !important; } |
| background-color: #eaf4fb !important; | .edgeLabel .pill { background: #eaf4fb; border-radius: 8px; box-shadow: inset 0 0 0 1px #b8ccdc; } |
| border: 1px solid #b8ccdc; | .edgeLabel .spacer { visibility: hidden; } |
| border-radius: 10px; | .edgeLabel .edge-row { display: inline-flex; align-items: center; } |
| padding: 2px 5px; | .edgeLabel .pill { display: inline-block; padding: 1px 4px; } |
| box-sizing: border-box; | |
| } | |
| --- | --- |
| flowchart LR | flowchart LR |
| A["Absender"] -->|"TCP 25"| Q["<strong>ext-qipu</strong><br/>Codename:<br/><i>Alois</i>"] | A["Absender"] -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> TCP 25 </span><span class="spacer"> </span></span>"| Q["<strong>ext-qipu</strong><br/>Codename:<br/><i>Alois</i>"] |
| Q -->|"Policy 10031"| H["<strong>int-mailgateway</strong><br/>Codename:<br/><i>Hildegard</i>"] | Q -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> Policy 10031 </span><span class="spacer"> </span></span>"| H["<strong>int-mailgateway</strong><br/>Codename:<br/><i>Hildegard</i>"] |
| H -->|"SMTP RCPT<br/>TCP 25"| S["Stalwart"] | H -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> SMTP RCPT<br/>TCP 25 </span><span class="spacer"> </span></span>"| S["<strong>cdf-stalwart</strong><br/>Stalwart Mailserver"] |
| S -->|"RCPT<br/>Ergebnis"| H | S -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> RCPT<br/>Ergebnis </span><span class="spacer"> </span></span>"| H |
| H -->|"SMTP<br/>Entscheidung"| Q | H -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> SMTP<br/>Entscheidung </span><span class="spacer"> </span></span>"| Q |
| classDef decision stroke:#d8d8d8,stroke-dasharray:4 4 | classDef decision stroke:#d8d8d8,stroke-dasharray:4 4 |
| class H decision | class H decision |
| </mermaid> | </mermaid> |
| </WRAP> | |
| <WRAP column third> | <WRAP info round 80% justify> |
| <WRAP box round> | <wrap em>Was bedeuten die Begriffe?</wrap> |
| **Lesehilfe zur Annahmeprüfung** | |
| * **TCP 25:** SMTP-Anschlussnummer; kein Fehlercode. | * **TCP 25:** SMTP-Anschlussnummer; kein Fehlercode. |
| * **Policy 10031:** interner Prüfanschluss von Alois zu Hildegard. | * **Policy 10031:** interner Prüfanschluss von Alois zu Hildegard. |
| * **Rückpfeile:** Antworten zur Annahmeentscheidung, keine direkte Mailzustellung. | * **Rückpfeile:** Antworten zur Annahmeentscheidung, keine direkte Mailzustellung. |
| </WRAP> | </WRAP> |
| </WRAP> | |
| </WRAP> | |
| <WRAP clear /> | |
| |
| <WRAP info round 80% justify> | <WRAP important round 80% justify> |
| ===== Warum dieser Umweg? ===== | ===== Warum dieser Umweg? ===== |
| - Stalwart kennt die lokalen Konten. | - Stalwart kennt die lokalen Konten. |
| primaryBorderColor: "#d8d8d8" | primaryBorderColor: "#d8d8d8" |
| lineColor: "#969696" | lineColor: "#969696" |
| edgeLabelBackground: "#ffffff" | edgeLabelBackground: "transparent" |
| fontFamily: "Arial" | fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" |
| fontSize: "17px" | fontSize: "16px" |
| flowchart: | flowchart: |
| nodeSpacing: 36 | nodeSpacing: 36 |
| 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: 8px; |
| | box-shadow: inset 0 0 0 1px #b8ccdc; |
| | display: inline-block; |
| | padding: 1px 4px; |
| | } |
| | .edgeLabel .spacer { visibility: hidden; } |
| | .edgeLabel .edge-row { display: inline-flex; align-items: center; } |
| --- | --- |
| flowchart LR | flowchart LR |
| Q["ext-qipu: Postfix"] <-->|"Milter 11332<br/>Prüfergebnis"| R["int-spamcheck: Rspamd"] | Q["ext-qipu: Postfix"] <-->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> Milter 11332<br/>Prüfergebnis </span><span class="spacer"> </span></span>"| R["int-spamcheck: Rspamd"] |
| R -->|"ClamAV 3310"| V["int-viruscheck: ClamAV"] | R -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> ClamAV 3310 </span><span class="spacer"> </span></span>"| V["int-viruscheck: ClamAV"] |
| R -->|"Cache"| C["int-mailmemcache: Redis"] | R -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> Cache </span><span class="spacer"> </span></span>"| C["int-mailmemcache: Redis"] |
| classDef decision stroke:#d8d8d8,stroke-dasharray:4 4 | classDef decision stroke:#d8d8d8,stroke-dasharray:4 4 |
| class R decision | class R decision |
| Für ''omnisrv.de'' führt die aktive Postfix-Transporttabelle von Alois über Hildegard zu Stalwart. Stalwart verwaltet die Postfächer. Authentifizierte, autorisierte Ausgangspost geht von Stalwart über Hildegard und Alois zum externen MX. Postfix ist dabei kein offenes Relay. | Für ''omnisrv.de'' führt die aktive Postfix-Transporttabelle von Alois über Hildegard zu Stalwart. Stalwart verwaltet die Postfächer. Authentifizierte, autorisierte Ausgangspost geht von Stalwart über Hildegard und Alois zum externen MX. Postfix ist dabei kein offenes Relay. |
| </WRAP> | </WRAP> |
| | |
| | **Eingangspost** |
| |
| <mermaid> | <mermaid> |
| primaryBorderColor: "#d8d8d8" | primaryBorderColor: "#d8d8d8" |
| lineColor: "#969696" | lineColor: "#969696" |
| edgeLabelBackground: "#ffffff" | edgeLabelBackground: "transparent" |
| fontFamily: "Arial" | fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" |
| fontSize: "17px" | fontSize: "16px" |
| flowchart: | flowchart: |
| nodeSpacing: 36 | nodeSpacing: 36 |
| 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: 8px; |
| | box-shadow: inset 0 0 0 1px #b8ccdc; |
| | display: inline-block; |
| | padding: 1px 4px; |
| | } |
| | .edgeLabel .spacer { visibility: hidden; } |
| | .edgeLabel .edge-row { display: inline-flex; align-items: center; } |
| --- | --- |
| flowchart TB | flowchart LR |
| subgraph E["Eingangspost"] | E1["Alois<br/>ext-qipu"] -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> TCP 25 </span><span class="spacer"> </span></span>"| E2["Hildegard<br/>int-mailgateway"] |
| direction LR | E2 -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> lokale Zustellung </span><span class="spacer"> </span></span>"| E3["Stalwart<br/>cdf-stalwart"] |
| E1["Alois<br/>ext-qipu"] -->|"TCP 25"| E2["Hildegard<br/>int-mailgateway"] | |
| E2 -->|"lokale Zustellung"| E3["Stalwart<br/>cdf-stalwart"] | |
| end | |
| subgraph A["Ausgangspost"] | |
| direction LR | |
| A1["Stalwart<br/>cdf-stalwart"] -->|"autorisierter Ausgang"| A2["Hildegard<br/>int-mailgateway"] | |
| A2 -->|"Relay"| A3["Alois<br/>ext-qipu"] | |
| A3 -->|"SMTP TCP 25"| A4["externer MX"] | |
| end | |
| </mermaid> | </mermaid> |
| |
| <WRAP tip round 80% justify> | **Ausgangspost** |
| ===== DNS und Zertifikats-Kurier ===== | |
| Alois verwendet für seine DNS-Abfragen den externen BIND-Dienst; Hildegard nutzt den internen BIND-Dienst. Der Zertifikats-Kurier übernimmt geprüfte Zertifikatspakete aus der Caddy-Welt in geschützte Zielverzeichnisse. Kontrollierte Watcher laden die Zertifikate bei den Maildiensten nach. Private Schlüssel gehören weder in das Wiki noch in Git. | |
| </WRAP> | |
| |
| <mermaid> | <mermaid> |
| primaryBorderColor: "#d8d8d8" | primaryBorderColor: "#d8d8d8" |
| lineColor: "#969696" | lineColor: "#969696" |
| edgeLabelBackground: "#ffffff" | edgeLabelBackground: "transparent" |
| fontFamily: "Arial" | fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" |
| fontSize: "17px" | fontSize: "16px" |
| flowchart: | flowchart: |
| nodeSpacing: 36 | nodeSpacing: 36 |
| 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: 8px; |
| | box-shadow: inset 0 0 0 1px #b8ccdc; |
| | display: inline-block; |
| | padding: 1px 4px; |
| | } |
| | .edgeLabel .spacer { visibility: hidden; } |
| | .edgeLabel .edge-row { display: inline-flex; align-items: center; } |
| --- | --- |
| flowchart LR | flowchart LR |
| Q["ext-qipu"] -->|"DNS"| E["ext-bind-public"] | A1["Stalwart<br/>cdf-stalwart"] -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> autorisierter Ausgang </span><span class="spacer"> </span></span>"| A2["Hildegard<br/>int-mailgateway"] |
| H["int-mailgateway"] -->|"DNS"| I["int-bind-internal"] | A2 -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> Relay </span><span class="spacer"> </span></span>"| A3["Alois<br/>ext-qipu"] |
| C["Caddy-Zertifikatsspeicher"] --> K["Zertifikats-Kurier"] | A3 -->|"<span class="edge-row"><span class="spacer"> </span><span class="pill"> SMTP TCP 25 </span><span class="spacer"> </span></span>"| A4["externer MX"] |
| K --> T["geschuetzte Zertifikatsziele"] | |
| T --> W["kontrollierter Reload"] | |
| W --> S["Stalwart / Postfix"] | |
| </mermaid> | </mermaid> |
| |
| <WRAP info round 80% justify> | <WRAP tip round 80% justify> |
| ===== 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 nutzt authentifizierte Stalwart-Submission. Borg archiviert die vorgesehenen Daten- und Konfigurationsquellen; ein isolierter Restore wurde geprüft. Eine SMTP-Annahme bestätigt nur die Übergabe an den nächsten Dienst, nicht den tatsächlichen Eingang in einem externen Postfach. | Alois verwendet für DNS-Abfragen den externen BIND-Dienst; Hildegard nutzt den internen BIND-Dienst. So fragt jeder Postdienst nur die für ihn vorgesehene Namenssicht ab. |
| | </WRAP> |
| | |
| | ---- |
| | |
| | ====== Teil 3 · Der Zertifikats-Kurier ====== |
| | |
| | <WRAP tip round 80% justify> |
| | ===== Warum braucht OmniMail einen Kurier? ===== |
| | Caddy beschafft und verwaltet die TLS-Zertifikate. Die Maildienste sollen dafür weder Caddys gesamtes Zertifikatslager sehen noch untereinander Schlüssel austauschen. Ein lokaler Selektor legt nur die Pakete für ausdrücklich zugelassene Namen in ein geschütztes Eingangsfach. Von dort verteilt der Zertifikats-Kurier die geprüften Pakete an getrennte Zielfächer. Der Kurier selbst hat keine Netzwerkverbindung. |
| </WRAP> | </WRAP> |
| |
| primaryBorderColor: "#d8d8d8" | primaryBorderColor: "#d8d8d8" |
| lineColor: "#969696" | lineColor: "#969696" |
| edgeLabelBackground: "#ffffff" | edgeLabelBackground: "transparent" |
| fontFamily: "Arial" | fontFamily: "Roboto,Ubuntu,Aptos,Arial,sans-serif" |
| fontSize: "17px" | fontSize: "16px" |
| flowchart: | flowchart: |
| nodeSpacing: 36 | nodeSpacing: 36 |
| 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: 8px; |
| | box-shadow: inset 0 0 0 1px #b8ccdc; |
| | display: inline-block; |
| | padding: 1px 4px; |
| | } |
| | .edgeLabel .spacer { visibility: hidden; } |
| | .edgeLabel .edge-row { display: inline-flex; align-items: center; } |
| --- | --- |
| flowchart LR | flowchart LR |
| M["OmniMail-Monitor"] --> A["Alarmdienst"] | C["Caddy<br/>ACME-Zertifikate"] --> X["exakter<br/>Selektor"] |
| A -->|"authentifizierte Submission"| S["Stalwart"] | X --> I["geschütztes<br/>Eingangsfach"] |
| D["Mail- und Konfigurationsdaten"] --> B["Borg-Archiv"] | I --> K["Zertifikats-Kurier<br/>ohne Netz"] |
| B --> R["isolierter Restore-Test"] | K --> Z["versionierte<br/>Zielfächer"] |
| | Z --> W["lokaler Wächter<br/>und TLS-Reload"] |
| </mermaid> | </mermaid> |
| | |
| | <WRAP info round 80% justify> |
| | ===== Was prüft und verteilt er? ===== |
| | - **Eingang:** Der Kurier liest das geschützte Eingangsfach, aber nicht Caddys vollständigen ACME-Speicher. |
| | - **Prüfung:** Er kontrolliert, ob Zertifikat und privater Schlüssel zusammenpassen, die Zertifikatskette gültig ist, der Name im SAN steht, noch genügend Gültigkeit bleibt und das Ziel in seiner festen Liste freigeschaltet ist. |
| | - **Übergabe:** Erst danach veröffentlicht er ein vollständiges, versioniertes Paket. Der Wechsel auf die neue Version erfolgt atomar; die bisherige funktionsfähige Version bleibt für eine Rücknahme erhalten. |
| | - **Aktivierung:** Jeder Dienst sieht nur sein eigenes Zielfach schreibgeschützt. Ein lokaler Wächter bemerkt den Wechsel, lädt das Zertifikat beim Dienst nach und vergleicht anschließend den TLS-Fingerabdruck. |
| | </WRAP> |
| | |
| | <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> |
| | |
| | <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. |
| | </WRAP> |
| |
| ---- | ---- |
| |
| ====== 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> |
| | |
| | <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. |
| | </WRAP> |
| | |
| | ---- |
| | |
| | ====== Teil 5 · Technische Referenz ====== |
| |
| <WRAP info round 80% justify> | <WRAP info round 80% justify> |
| Bei Zustellproblemen zuerst Monitorstatus, Postfix-Queues, Stalwart-Health und DNS-Antworten aus den jeweils berechtigten Netzen prüfen. Zertifikatswechsel über den vorhandenen Kurier/Watcher und dessen Fingerprint-Readback bewerten. Die isolierte Borg-Recovery aus M01-DEPLOY-015C-B ist ein Teilnachweis, keine vollständige Ersatzhost-Abnahme. Änderungen an laufenden Maildiensten, DNS, Firewall oder Backup sind nicht Teil dieses Wiki-Entwurfs. | Bei Zustellproblemen zuerst Monitorstatus, Postfix-Queues, Stalwart-Health und DNS-Antworten aus den jeweils berechtigten Netzen prüfen. Zertifikatswechsel über den vorhandenen Kurier/Watcher und dessen Fingerprint-Readback bewerten. Die isolierte Borg-Recovery aus M01-DEPLOY-015C-B ist ein Teilnachweis, keine vollständige Ersatzhost-Abnahme. Änderungen an laufenden Maildiensten, DNS, Firewall oder Backup sind nicht Teil dieses Wiki-Entwurfs. |
| </WRAP> | </WRAP> |
| |
| ===== 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 ''OM-LINK-ETPW-001'' für die technische QaD-Maestro-Alarmierung, der hier keine zusätzliche allgemeine Mailroute begründet. | |
| |
| Quellstand: Live-Docker-Inspect und Listener-Readback vom 03.11.2026; M01-DEPLOY-010, 012D, 014 und 015C-B; OmniMail-ROM ''PANTHEON-GRUNDORDNUNG.md''; [[systeme:omnimail:start|V1-Systemübersicht]]; [[https://prv-forgejo.omnisrv.de/hwehrs/omnimail/src/branch/feature/m00-gazette-implementation-20261103/70-PRODUKTIONSQUELLEN/SOURCE-MANIFEST.md|geprüftes Quellmanifest]]. Offen bleiben die vollständige dynamische Konfigurationsabbildung, lückenlose VOE-Leitungsnummern und die visuelle Browserabnahme durch den Benutzer. | |
| |
| ---- | ---- |
| |