Manuel Pepsi¶
Pepsi est un agent de transfert de courrier et une passerelle cryptographique écrit en Rust. Il reçoit le courrier par SMTP, l’authentifie à la limite, puis fait avancer chaque message à travers une chaîne configurable de petits programmes d’étape — scellement ARC, réécriture d’enveloppe SRS, chiffrement et déchiffrement de bout en bout, signature DKIM, génération de rebonds, traitement des listes de diffusion et remise (directe vers le MX, via un smarthost, ou locale) — en préservant les verdicts d’authentification dont le destinataire final a besoin.
Ces programmes sont enchaînés autour d’une unique table de base de données partagée. Chaque étape de traitement est son propre programme, de sorte que le pipeline peut être réordonné, des étapes individuelles remplacées et un nouveau comportement ajouté en insérant un autre programme — sans toucher au reste du système.
Commencez par Introduction, qui dit ce qu’est Pepsi, énumère ses fonctionnalités, le compare aux MTA établis et explique comment le reste de ce manuel est organisé. Démarrage sur un VPS bon marché est le parcours pas à pas du DNS jusqu’au premier e-mail reçu, et L’assistant présente les pipelines que construit pepsi-setup --wizard et ce que décide chacune de ses questions.
Sommaire
- 1. Introduction
- 2. Démarrage sur un VPS bon marché
- 2.1. Ce que nous allons construire
- 2.2. Prérequis
- 2.3. Étape 1 — Déléguer le DNS et placer les enregistrements de base
- 2.4. Étape 2 — Installer Pepsi
- 2.5. Étape 3 — Préparer le système
- 2.6. Étape 4 — Écrire la configuration
- 2.7. Étape 5 — Provisionner le schéma, les clés et le certificat
- 2.8. Étape 6 — Publier les enregistrements restants et vérifier
- 2.9. Étape 7 — Démarrer les services
- 2.10. Étape 8 — Envoyer le premier e-mail
- 2.11. Étape 9 — Ouvrir la console (facultatif)
- 2.12. Envoyer du courrier aussi : ajouter un port de soumission
- 2.13. Dépannage
- 2.14. Étapes suivantes
- 3. Installation
- 4. Paquets Debian
- 5. L’assistant
- 6. Configuration
- 7. Exploiter Pepsi
- 8. Dépannage
- 9. Fonctionnalités prises en charge
- 9.1. Réception SMTP entrante
- 9.2. En-têtes de trace
- 9.3. Authentification du client
- 9.4. Soumission de messages
- 9.5. Authentification à la bordure
- 9.6. Authenticated Received Chain (ARC)
- 9.7. Sender Rewriting Scheme (SRS)
- 9.8. Chiffrement et signature de bout en bout
- 9.9. Déchiffrement et vérification côté serveur
- 9.10. Gestion, découverte et publication des clés
- 9.11. Le repli par lien sécurisé
- 9.12. Signature DKIM sortante
- 9.13. Notifications d’état de remise
- 9.14. Contenu internationalisé et 8 bits
- 9.15. Relais sortant
- 9.16. Remise locale
- 9.17. Listes de diffusion et archives
- 9.18. Courrier non sollicité
- 9.19. Fonctionnalités opérationnelles
- 9.20. Stabilité des fonctionnalités
- 10. Extensions du protocole SMTP
- 11. Gestion des clés
- 11.1. Trois sortes de matériel
- 11.2. Garde : comment une clé privée est stockée
- 11.3. La frontière de privilèges
- 11.4. Ce contre quoi la garde protège
- 11.5. Signature et chiffrement sont séparés
- 11.6. Créer des identités
- 11.7. Clés automatiques à la manière de pEp
- 11.8. Deux clés par utilisateur
- 11.9. Publier les clés de nos utilisateurs
- 11.10. Sauvegarder et renouveler la clé de chiffrement de clés
- 11.11. Clés de pairs
- 11.12. Trouver la clé d’un correspondant
- 11.13. Une visite guidée en ligne de commande
- 11.14. Récapitulatif de configuration
- 11.15. Voir aussi
- 12. Le portail de repli par lien sécurisé
- 13. Interopérabilité des clients
- 13.1. Résumé
- 13.2. OpenPGP : gpg
- 13.3. S/MIME : OpenSSL
- 13.4. Thunderbird : la barrière, et comment tester un client graphique sans interface graphique
- 13.5. Outlook et Apple Mail : observations consignées, non des barrières
- 13.6. Règles d’encodage imposées par l’interopérabilité
- 13.7. Reproduire les lignes mesurées
- 13.8. Voir aussi
- 14. Modèle de menace
- 14.1. Comment lire ce chapitre
- 14.2. Actifs
- 14.3. Principaux et confiance accordée à chacun
- 14.4. Frontières de confiance
- 14.5. Adversaires
- 14.6. Chiffrement de bout en bout : deux modes de garde
- 14.7. Ce que signifie un indicateur de sécurité
- 14.8. Les paramètres par adresse sont une frontière de confiance
- 14.9. L’adversaire réseau
- 14.10. Disponibilité
- 14.11. Ce que Pepsi ne protège pas
- 14.12. Les garanties en un coup d’œil
- 14.13. Voir aussi
- 15. Modèle de sécurité
- 15.1. Ce que Pepsi présuppose
- 15.2. La séparation des privilèges
- 15.3. La frontière de garde des clés privées
- 15.4. Un second facteur pour la gestion des clés
- 15.5. Un attaquant qui a la base de données
- 15.6. Un attaquant qui a le fichier de configuration
- 15.7. Un attaquant qui compromet un worker d’étape
- 15.8. Défenses spécifiques
- 15.9. Ce contre quoi Pepsi ne défend pas
- 15.10. Signaler une vulnérabilité
- 15.11. Voir aussi
- 16. Microsoft Exchange comme passerelle
- 16.1. Topologies
- 16.2. La décision d’acheminement
- 16.3. Exchange Online : le point de terminaison du locataire
- 16.4. Choix de la famille d’adresses
- 16.5. Prévention des boucles
- 16.6. Configuration des connecteurs Exchange
- 16.7. Le module complémentaire Outlook
- 16.8. Le contrat des en-têtes
X-Pepsi-* - 16.9. Provisionnement automatique d’identités
- 16.10. Distribution des clés
- 16.11. Dépannage
- 16.12. Ce que Pepsi ne fait pas
- 17. Listes de diffusion
- 17.1. Ce sous-système est une réimplémentation de GNU Mailman 3
- 17.2. Ce qu’est une liste
- 17.3. Comment le sous-système est agencé
- 17.4. Pour commencer
- 17.5. Styles
- 17.6. Réglages par liste
- 17.7. Configuration
- 17.8. La recherche de sous-chaîne est optionnelle
- 17.9. Deux systèmes de comptes
- 17.10. Traitement des rejets
- 17.11. Limitations connues
- 17.12. Résumés
- 17.13. Différences déclarées avec GNU Mailman 3
- 18. Archives
- 19. L’API REST de GNU Mailman 3
- 19.1. Il y a deux API dans cet arbre
- 19.2. Où elle est servie
- 19.3. Authentification
- 19.4. Les deux versions diffèrent sur quatre points
- 19.5. URI de modèles
- 19.6. Trois équivalents honnêtes
- 19.7. Ce qu’il faut configurer au-delà de l’identifiant
- 19.8. Un exemple travaillé
- 19.9. Ce qui n’est pas implémenté
- 19.10. La tester
- 20. L’API d’administration
- 20.1. Où elle est servie
- 20.2. Authentification
- 20.3. Autorisation : les portées
- 20.4. Conventions
- 20.5. Pagination
- 20.6. Points de terminaison
- 20.7. Ce que ce serveur ne peut pas faire
- 20.8. Clés de correspondants
- 20.9. Liens sécurisés
- 20.10. Enregistrements DNS
- 20.11. Configuration en ligne
- 20.12. Durcissement
- 20.13. Le journal d’audit
- 20.14. Le journal de courrier (désactivé par défaut)
- 20.15. Amorçage
- 20.16. La console de navigateur
- 21. La console d’administration
- 21.1. Trois drapeaux de listener, et pour deux d’entre eux le conseil est inverse
- 21.2. L’atteindre en toute sécurité
- 21.3. Se connecter
- 21.4. Ce que la console peut et ne peut pas faire
- 21.5. Les pages
- 21.6. Deux moteurs de modèles, deux usages
- 21.7. Pas de script, pas de ressources distantes
- 21.8. Accessibilité
- 21.9. Les pages publiques des listes de diffusion
- 21.10. Deux systèmes de comptes, et aucun n’accorde rien à l’autre
- 21.11. Les pages du membre
- 21.12. La console du propriétaire et du modérateur
- 21.13. La langue de l’interface, et pourquoi elles ne sont pas dix
- 22. Architecture
- 23. L’état du message
- 24. Étendre le pipeline
- 24.1. Quand une étape est le bon outil
- 24.2. Anatomie d’une crate d’étape
- 24.3. Le corps
- 24.4. Helpers terminaux (en choisir exactement un)
- 24.5. Erreurs
- 24.6. Les règles auxquelles les étapes se tiennent
- 24.7. Le câbler
- 24.8. Tester une étape
- 24.9. Ajouter la prise en charge de la migration depuis un autre MTA
- 24.10. Intégrer un service externe de rafraîchissement d’identifiants
- 24.11. Cycle de vie du schéma de base de données
- 24.12. Maintenir à jour la table de stabilité des fonctionnalités
- 25. Suite de tests
- 26. Suite de benchmarks
- 27. Performance
- 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. Stabilité des fonctionnalités
- 85. Pages de manuel
- 86. Index des RFC