Aller au contenu

Confidentialite

Les emails transportent des données de tous niveaux de classification — du planning d'équipe (Public) aux documents RH nominatifs (Confidentiel). La politique de sécurité de la messagerie doit couvrir le niveau le plus eleve.

Classification de la messagerie

La messagerie est classee Interne a Confidentiel dans le modèle de classification.

Classification Type de contenu Mesures requises
Public Newsletters, communications publiques TLS en transit (minimum)
Interne Échanges inter-équipes, comptes-rendus TLS obligatoire, authentification
Confidentiel Données RH, documents juridiques, bilans financiers TLS + chiffrement bout en bout (S/MIME ou PGP)
Restreint Données sensibles defense, brevets, secrets industriels Chiffrement bout en bout obligatoire, accès restreint

Un email peut contenir n'importe quoi

Contrairement a un service DNS ou IAM dont le contenu est previsible, un utilisateur peut envoyer n'importe quelle donnée par email. La protection doit couvrir le cas le plus sensible. Par defaut, traiter la messagerie comme Confidentiel.

TLS obligatoire

Chiffrement en transit

Tout le trafic email doit etre chiffre en transit. Stalwart supporte deux modes :

Mode Description Port Recommandation
TLS implicite TLS des la connexion 465, 993 Recommande (moderne)
STARTTLS Upgrade TLS apres connexion en clair 25, 587, 143 Acceptable (compatibilité)
Clair Pas de chiffrement Interdit

Forcer TLS sur les connexions SMTP entrantes

# /opt/stalwart/config/config.toml

# Forcer STARTTLS sur le port 25 (serveur-a-serveur)
[session.ehlo]
require = true

[session.extensions]
requiretls = true

Forcer TLS sur les connexions sortantes

# Exiger TLS pour la livraison sortante
[queue.outbound.tls]
starttls = "require"
allow-invalid-certs = false

Compatibilité avec les serveurs anciens

Certains serveurs email anciens ne supportent pas TLS. Si starttls = "require" est active, les emails vers ces serveurs seront rejetes. Monitorer les echecs de livraison TLS via Prometheus et ajouter des exceptions au cas par cas si nécessaire.

MTA-STS : annoncer la politique TLS

MTA-STS permet d'annoncer publiquement que votre serveur exige TLS, empechant les attaques de downgrade :

# Fichier https://mta-sts.company.io/.well-known/mta-sts.txt
version: STSv1
mode: enforce
mx: mail.company.io
max_age: 604800
Mode Comportement
testing Rapporter les echecs mais accepter le plain text
enforce Rejeter les connexions sans TLS valide
none Désactiver MTA-STS

TLSRPT : rapports TLS

_smtp._tls.company.io.  300  IN  TXT  "v=TLSRPTv1; rua=mailto:tls-reports@company.io"

Les serveurs qui tentent de vous envoyer des emails rapportent les echecs TLS. Cela permet de détecter les problèmes de certificats ou les attaques de downgrade.

Chiffrement bout en bout

Le TLS protège le transport mais pas le stockage. Pour les contenus Confidentiel ou Restreint, le chiffrement bout en bout (E2EE) est nécessaire.

S/MIME

S/MIME est le standard de chiffrement email le plus repandu en entreprise :

Aspect Detail
Standard RFC 8551
Infrastructure PKI (certificats X.509 par utilisateur)
Clients support Outlook, Thunderbird, Apple Mail, iOS
Gestion des cles CA interne (Vault PKI) ou CA publique
Avantage Integration native dans les clients enterprise
Inconvénient PKI a maintenir, certificats a renouveler

Déploiement S/MIME avec Vault PKI

# Generer un certificat S/MIME pour un utilisateur
vault write pki-email/issue/smime-user \
  common_name="alice@company.io" \
  alt_names="alice@company.io" \
  key_usage="DigitalSignature,KeyEncipherment" \
  ext_key_usage="EmailProtection" \
  ttl="365d"

PGP/GPG

PGP est l'alternative decentralisee (pas de PKI centralisee) :

Aspect Detail
Standard RFC 4880 (OpenPGP)
Infrastructure Web of trust ou serveur de cles
Clients support Thunderbird (natif), Outlook (plugin)
Gestion des cles Decentralisee (keyserver, WKD)
Avantage Pas de PKI a maintenir
Inconvénient UX complexe, adoption utilisateur difficile

WKD : Web Key Directory

WKD permet de publier les cles PGP publiques via HTTPS, facilitant la découverte automatique :

# Publication de la cle publique d'Alice
# URL : https://company.io/.well-known/openpgpkey/hu/<hash-of-alice>
# Le hash est le SHA-1 du local-part de l'adresse, encode en z-base-32

Comparaison S/MIME vs PGP

Critère S/MIME PGP
Gestion des cles PKI centralisee Decentralisee
Facilite d'adoption Elevee (enterprise) Faible (technique)
Integration clients Native (Outlook, Apple) Plugins nécessaires
Coût PKI a opérer Gratuit
Recommandation Enterprise (defaut) Équipes techniques

Audit des accès aux boites aux lettres

Journalisation des accès

Stalwart journalise toutes les opérations sur les boites aux lettres :

# Activer la journalisation detaillee
[tracing]
level = "info"
method = "stdout"

[tracing.event.mail-delivery]
enable = true

[tracing.event.imap]
enable = true

[tracing.event.auth]
enable = true

Événements audites

Événement Information journalisee Criticite
Authentification Utilisateur, IP source, méthode, résultat Info
Echec d'auth Utilisateur, IP source, méthode, raison Warning
Accès boite Utilisateur, dossier accede, protocole (IMAP/JMAP) Info
Envoi d'email Expéditeur, destinataire(s), taille Info
Suppression d'email Utilisateur, message-id, dossier Info
Export de boite Utilisateur admin, boite exportee Warning
Modification de filtre Utilisateur, filtre Sieve modifie Info

Centralisation des logs

# Envoi vers un collecteur syslog/Loki
[tracing]
method = "journal"  # systemd journal, collecte par Promtail/Loki

# Ou vers un endpoint OpenTelemetry
[tracing.otel]
endpoint = "http://otel-collector.monitoring.internal:4317"

Politiques de retention

Retention legale vs auto-suppression

Politique Duree Cas d'usage
Retention legale 5-10 ans Emails contractuels, juridiques, fiscaux
Retention standard 1-3 ans Emails courants
Auto-suppression 30-90 jours Spam, quarantaine, corbeille
Legal hold Indefinie Litige en cours, enquete

Configuration des quotas et retention

# Quotas par defaut
[jmap.quota]
max-size = 5368709120  # 5 Go par boite

# Retention de la corbeille
[jmap.trash]
auto-expunge = "30d"

# Retention du dossier spam
[jmap.spam]
auto-expunge = "14d"

En cas de litige ou d'enquete, les boites aux lettres concernees doivent etre preservees sans modification ni suppression :

# Activer le legal hold sur une boite
curl -X PATCH http://localhost:8080/api/principal/alice \
  -H "Authorization: Bearer <admin-token>" \
  -H "Content-Type: application/json" \
  -d '{"quota": 0}'  # Quota 0 = pas de suppression automatique

# Exporter une boite pour archivage legal
curl -X GET "http://localhost:8080/api/store/export?account=alice" \
  -H "Authorization: Bearer <admin-token>" \
  -o alice-mailbox-export.tar.gz

Legal hold et RGPD

Le legal hold entre en tension avec le droit a l'effacement du RGPD. Documenter la base legale de chaque legal hold et lever la preservation dès que le litige est clos.

Chiffrement des sauvegardes

Les sauvegardes des boites aux lettres contiennent toutes les données sensibles. Elles doivent etre chiffrees :

# Sauvegarde chiffree avec age (alternative moderne a GPG)
podman exec stalwart-mail \
  stalwart-mail export /tmp/backup.tar

# Chiffrer avec la cle publique de l'equipe ops
age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p \
  -o /backup/stalwart-$(date +%Y%m%d).tar.age \
  /tmp/backup.tar

# Supprimer la sauvegarde non chiffree
rm /tmp/backup.tar
Aspect Recommandation
Algorithme âge (X25519) ou GPG (RSA 4096)
Stockage cles Vault, HSM ou coffre-fort hors-ligne
Fréquence Quotidienne (incrementale), hebdo (complète)
Retention backups Alignee sur la politique de retention email
Test de restauration Mensuel (vérifier l'intégrité)

Isolation réseau

Architecture DMZ pour la messagerie

graph TD
    Internet --> FWext["Firewall externe"]
    FWext -->|Port 25 SMTP in<br/>Port 443 HTTPS/JMAP| DMZ
    subgraph DMZ
        Proxy["Reverse proxy"]
    end
    DMZ --> FWint["Firewall interne"]
    FWint --> Interne
    subgraph Interne["Reseau interne"]
        Stalwart["Stalwart<br/>IMAP:993<br/>SMTP:465"]
        Services["Keycloak,<br/>PostgreSQL,<br/>CoreDNS"]
    end

Regles firewall

Source Destination Port Protocole Justification
Internet DMZ (proxy) 25 SMTP Reception emails externes
Internet DMZ (proxy) 443 HTTPS JMAP, CalDAV (si expose)
DMZ (proxy) Stalwart 25, 8080 TCP Relais vers le serveur mail
Réseau int. Stalwart 993 IMAPS Consultation boites internes
Réseau int. Stalwart 465 SMTPS Soumission emails internes
Stalwart Internet 25 SMTP Livraison emails sortants
Stalwart Keycloak 636 LDAPS Authentification
Stalwart CoreDNS 53 DNS Résolution MX, SPF

Ne jamais exposer IMAP sur Internet

Le port IMAP (993) ne doit etre accessible que depuis le réseau interne ou via VPN. Seuls SMTP entrant (25) et HTTPS (443, pour JMAP) sont exposes dans la DMZ. Les utilisateurs distants accedent a leur boite via JMAP/HTTPS ou VPN.

Politique d'accès

Rôle Accès Justification
Utilisateurs Leur propre boite (IMAP/JMAP) Usage quotidien
Administrateur mail Admin UI, configuration, logs Opération du service
Équipe sécurité Logs d'audit (lecture seule) Detection d'anomalies
DPO / Juridique Export de boite (sur legal hold) Obligations legales
Personne d'autre Accès aux boites d'autrui Aucune raison legitime

Synthese

La messagerie est le service le plus sensible de l'infrastructure d'entreprise car elle transporte des données de tous niveaux de classification. La protection repose sur trois couches : TLS obligatoire en transit, chiffrement bout en bout (S/MIME) pour les contenus sensibles, et isolation réseau (DMZ pour SMTP, interne pour IMAP). Les politiques de retention et d'audit completent le dispositif. Le chapitre suivant couvre les bonnes pratiques operationnelles.