Pepsi-Handbuch¶
Pepsi ist ein in Rust geschriebener Mail Transfer Agent und Krypto-Gateway. Es empfängt Mail über SMTP, authentifiziert sie an der Grenze und schaltet dann jede Nachricht durch eine konfigurierbare Kette kleiner Stage-Programme weiter — ARC-Versiegelung, SRS-Umschreibung des Umschlags, Ende-zu-Ende-Verschlüsselung und -Entschlüsselung, DKIM-Signierung, Bounce-Erzeugung, Mailinglisten-Verarbeitung und Zustellung (direkt zum MX, über einen Smarthost oder lokal) — und bewahrt dabei die Authentifizierungsurteile, die der endgültige Empfänger benötigt.
Diese Programme sind über eine einzige gemeinsame Datenbanktabelle verkettet. Jeder Verarbeitungsschritt ist ein eigenes Programm, sodass sich die Pipeline umordnen, einzelne Schritte ersetzen und neues Verhalten durch Einfügen eines weiteren Programms hinzufügen lässt — ohne den Rest des Systems anzufassen.
Beginnen Sie mit Einführung; dort steht, was Pepsi ist, welche Funktionen es bietet, wie es sich mit den etablierten MTAs vergleicht und wie der Rest dieses Handbuchs gegliedert ist. Erste Schritte auf einem günstigen VPS ist der Durchgang vom DNS bis zur ersten empfangenen E-Mail, und Der Assistent zeigt die Pipelines, die pepsi-setup --wizard baut, und was jede seiner Fragen entscheidet.
Inhalt
- 1. Einführung
- 2. Erste Schritte auf einem günstigen VPS
- 2.1. Was wir bauen werden
- 2.2. Voraussetzungen
- 2.3. Schritt 1 — DNS delegieren und die Basis-Einträge anlegen
- 2.4. Schritt 2 — Pepsi installieren
- 2.5. Schritt 3 — Das System vorbereiten
- 2.6. Schritt 4 — Die Konfiguration schreiben
- 2.7. Schritt 5 — Schema, Schlüssel und Zertifikat einrichten
- 2.8. Schritt 6 — Die übrigen Einträge veröffentlichen und überprüfen
- 2.9. Schritt 7 — Die Dienste starten
- 2.10. Schritt 8 — Die erste E-Mail senden
- 2.11. Schritt 9 — Die Konsole öffnen (optional)
- 2.12. Auch Mail senden: einen Submission-Port hinzufügen
- 2.13. Fehlersuche
- 2.14. Nächste Schritte
- 3. Installation
- 4. Debian-Pakete
- 5. Der Assistent
- 6. Konfiguration
- 7. Pepsi betreiben
- 8. Fehlersuche
- 9. Unterstützte Funktionen
- 9.1. Eingehender SMTP-Empfang
- 9.2. Trace-Header
- 9.3. Client-Authentifizierung
- 9.4. Nachrichteneinlieferung
- 9.5. Grenz-Authentifizierung
- 9.6. Authenticated Received Chain (ARC)
- 9.7. Sender Rewriting Scheme (SRS)
- 9.8. Ende-zu-Ende-Verschlüsselung und -Signierung
- 9.9. Serverseitige Entschlüsselung und Verifikation
- 9.10. Schlüsselverwaltung, -entdeckung und -veröffentlichung
- 9.11. Der Secure-Link-Ausweg
- 9.12. Ausgehende DKIM-Signierung
- 9.13. Zustellungsstatusbenachrichtigungen
- 9.14. Internationalisierte und 8-Bit-Inhalte
- 9.15. Ausgehendes Relay
- 9.16. Lokale Zustellung
- 9.17. Mailinglisten und Archive
- 9.18. Unerwünschte Mail
- 9.19. Betriebsfunktionen
- 9.20. Funktionsstabilität
- 10. SMTP-Protokollerweiterungen
- 11. Schlüsselverwaltung
- 11.1. Drei Arten von Material
- 11.2. Verwahrung: wie ein privater Schlüssel gespeichert wird
- 11.3. Die Privilegiengrenze
- 11.4. Wogegen die Verwahrung schützt
- 11.5. Signieren und Verschlüsseln sind getrennt
- 11.6. Identitäten erzeugen
- 11.7. Automatische Schlüssel nach Art von pEp
- 11.8. Zwei Schlüssel je Benutzer
- 11.9. Die Schlüssel unserer Benutzer veröffentlichen
- 11.10. Den Schlüsselverschlüsselungsschlüssel sichern und rotieren
- 11.11. Peer-Schlüssel
- 11.12. Den Schlüssel eines Korrespondenten finden
- 11.13. Ein CLI-Durchgang
- 11.14. Konfigurationsübersicht
- 11.15. Siehe auch
- 12. Das Secure-Link-Ausweichportal
- 13. Interoperabilität mit Clients
- 13.1. Zusammenfassung
- 13.2. OpenPGP: gpg
- 13.3. S/MIME: OpenSSL
- 13.4. Thunderbird: die Schranke, und wie ein GUI-Client ohne GUI getestet wird
- 13.5. Outlook und Apple Mail: festgehaltene Beobachtungen, keine Schranken
- 13.6. Kodierungsregeln, die die Interoperabilität erzwungen hat
- 13.7. Die gemessenen Zeilen reproduzieren
- 13.8. Siehe auch
- 14. Bedrohungsmodell
- 14.1. Wie dieses Kapitel zu lesen ist
- 14.2. Schutzgüter
- 14.3. Beteiligte und wie weit jedem vertraut wird
- 14.4. Vertrauensgrenzen
- 14.5. Angreifer
- 14.6. Ende-zu-Ende-Verschlüsselung: zwei Verwahrungsmodi
- 14.7. Was ein Sicherheitsindikator bedeutet
- 14.8. Adressbezogene Einstellungen sind eine Vertrauensgrenze
- 14.9. Der Netzwerkangreifer
- 14.10. Verfügbarkeit
- 14.11. Was Pepsi nicht schützt
- 14.12. Die Garantien auf einen Blick
- 14.13. Siehe auch
- 15. Sicherheitsmodell
- 15.1. Was Pepsi voraussetzt
- 15.2. Die Privilegientrennung
- 15.3. Die Verwahrungsgrenze für private Schlüssel
- 15.4. Ein zweiter Faktor für die Schlüsselverwaltung
- 15.5. Ein Angreifer, der die Datenbank hat
- 15.6. Ein Angreifer, der die Konfigurationsdatei hat
- 15.7. Ein Angreifer, der einen Stage-Worker kompromittiert
- 15.8. Konkrete Verteidigungen
- 15.9. Wogegen Pepsi sich nicht verteidigt
- 15.10. Eine Schwachstelle melden
- 15.11. Siehe auch
- 16. Microsoft Exchange als Gateway
- 16.1. Topologien
- 16.2. Die Routing-Entscheidung
- 16.3. Exchange Online: der Mandanten-Endpunkt
- 16.4. Auswahl der Adressfamilie
- 16.5. Schleifenverhinderung
- 16.6. Konfiguration der Exchange-Connectors
- 16.7. Das Outlook-Add-in
- 16.8. Der
X-Pepsi-*-Header-Vertrag - 16.9. Automatische Identitätsbereitstellung
- 16.10. Schlüsselverteilung
- 16.11. Fehlersuche
- 16.12. Was Pepsi nicht tut
- 17. Mailinglisten
- 17.1. Dieses Subsystem ist eine Neuimplementierung von GNU Mailman 3
- 17.2. Was eine Liste ist
- 17.3. Wie das Subsystem aufgebaut ist
- 17.4. Erste Schritte
- 17.5. Stile
- 17.6. Einstellungen je Liste
- 17.7. Konfiguration
- 17.8. Die Teilzeichenfolgensuche ist optional
- 17.9. Zwei Kontosysteme
- 17.10. Bounce-Verarbeitung
- 17.11. Bekannte Einschränkungen
- 17.12. Sammelnachrichten
- 17.13. Erklärte Unterschiede zu GNU Mailman 3
- 18. Archive
- 19. Die REST-API von GNU Mailman 3
- 19.1. In diesem Baum gibt es zwei APIs
- 19.2. Wo sie angeboten wird
- 19.3. Authentifizierung
- 19.4. Die beiden Versionen unterscheiden sich in vier Punkten
- 19.5. Vorlagen-URIs
- 19.6. Drei ehrliche Entsprechungen
- 19.7. Was über die Zugangsdaten hinaus konfiguriert werden muss
- 19.8. Ein durchgearbeitetes Beispiel
- 19.9. Was nicht implementiert ist
- 19.10. Sie testen
- 20. Die administrative API
- 20.1. Wo sie bedient wird
- 20.2. Authentifizierung
- 20.3. Autorisierung: Geltungsbereiche
- 20.4. Konventionen
- 20.5. Paginierung
- 20.6. Endpunkte
- 20.7. Was dieser Server nicht kann
- 20.8. Korrespondentenschlüssel
- 20.9. Secure Links
- 20.10. DNS-Einträge
- 20.11. Online-Setup
- 20.12. Härtung
- 20.13. Das Prüfprotokoll
- 20.14. Das Maillog (standardmäßig aus)
- 20.15. Bootstrapping
- 20.16. Die Browser-Konsole
- 21. Die Verwaltungskonsole
- 21.1. Drei Listener-Flags, und bei zwei davon lautet der Rat entgegengesetzt
- 21.2. Sie sicher erreichen
- 21.3. Anmelden
- 21.4. Was die Konsole kann und was nicht
- 21.5. Die Seiten
- 21.6. Zwei Templating-Engines, zwei Zwecke
- 21.7. Kein Scripting, keine entfernten Ressourcen
- 21.8. Barrierefreiheit
- 21.9. Die öffentlichen Mailinglistenseiten
- 21.10. Zwei Kontosysteme, und keines gewährt dem anderen etwas
- 21.11. Die Seiten des Mitglieds
- 21.12. Die Konsole für Verwalter und Moderatoren
- 21.13. Die Sprache der Oberfläche und warum es nicht zehn sind
- 22. Architektur
- 23. Der Nachrichten-State
- 24. Die Pipeline erweitern
- 24.1. Wann eine Stage das richtige Werkzeug ist
- 24.2. Anatomie einer Stage-Crate
- 24.3. Der Rumpf
- 24.4. Terminale Helper (wählen Sie genau einen)
- 24.5. Fehler
- 24.6. Regeln, nach denen die Stages leben
- 24.7. Es verdrahten
- 24.8. Eine Stage testen
- 24.9. Unterstützung für die Migration von einem anderen MTA hinzufügen
- 24.10. Einen externen Credential-Refresh-Dienst integrieren
- 24.11. Lebenszyklus des Datenbankschemas
- 24.12. Die Funktionsstabilitätstabelle aktuell halten
- 25. Testsuite
- 26. Benchmark-Suite
- 27. Leistung
- 28. pepsi-ingress
- 29. pepsi-dispatch
- 30. pepsi-httpd
- 31. pepsi-stage-arc
- 32. pepsi-stage-srs
- 33. pepsi-stage-encrypt
- 34. pepsi-stage-decrypt
- 35. pepsi-stage-dkim-sign
- 36. pepsi-stage-bounce
- 37. pepsi-stage-aliases
- 38. pepsi-stage-relay-to-internet
- 39. pepsi-stage-relay-to-smarthost
- 40. pepsi-stage-relay-to-maildir
- 41. pepsi-stage-dot-forward
- 42. pepsi-stage-relay-to-lmtp
- 43. pepsi-stage-discard
- 44. pepsi-stage-anti-spam
- 45. pepsi-stage-auto-pay
- 46. pepsi-stage-check-whitelist
- 47. pepsi-stage-auto-whitelist
- 48. pepsi-stage-autocrypt-learn
- 49. pepsi-stage-reencrypt
- 50. pepsi-stage-detect-language
- 51. pepsi-detect-language
- 52. pepsi-stage-block-language
- 53. pepsi-stage-vacation
- 54. pepsi-stage-secretary
- 55. pepsi-stage-edit-settings
- 56. pepsi-stage-if
- 57. pepsi-stage-milter
- 58. pepsi-stage-route
- 59. pepsi-stage-vks-confirm
- 60. pepsi-stage-secure-link
- 61. pepsi-setup
- 62. pepsi-queue
- 63. pepsi-status
- 64. pepsi-sendmail
- 65. pepsi-whitelist
- 66. pepsi-keys
- 67. pepsi-keydisc
- 68. pepsi-settings
- 69. pepsi-list
- 70. pepsi-archive
- 71. pepsi-stage-list
- 72. pepsi-stage-list-post
- 73. pepsi-stage-list-deliver
- 74. pepsi-stage-list-command
- 75. pepsi-stage-list-bounce
- 76. pepsi-tlsrpt
- 77. pepsi-secure-link
- 78. pepsi-failure-bouncer
- 79. pepsi-quota
- 80. pepsi-helper-token-refresh
- 81. pepsi-telemetry
- 82. pepsi-telemetry-client
- 83. pepsi-config
- 84. Funktionsstabilität
- 85. Handbuchseiten
- 86. RFC-Index