Aller au contenu

Durcissement de la configuration des alertes SMTP

Billet #148 : Durcissement de la configuration des alertes SMTP
Type : Fiabilité / Sécurité / Observabilité
Composants concernés : code_source_simule/pipeline.py, tests/test_pipeline.py, README.md, docs/features/chapter3.md, docs/fr/features/chapter3.md


1. Contexte

Les alertes courriel existaient déjà dans le pipeline ETL, mais le comportement SMTP devait être durci pour l'exploitation: mode de transport explicite, timeout borné, et diagnostics plus clairs tout en conservant le fail-open.

2. Objectif

Renforcer l'envoi d'alertes SMTP sans casser les flux existants:

  • conserver une configuration SMTP uniquement par variables d'environnement
  • supporter un mode de transport explicite (starttls, ssl, none)
  • ajouter un timeout configurable (SMTP_TIMEOUT_SECONDS)
  • conserver le fail-open avec des événements structurés exploitables

3. Implémentation livrée

  • Ajout d'un helper de parsing/validation de configuration SMTP dans pipeline.py
  • Sélection explicite du transport:
  • starttls: smtplib.SMTP + starttls()
  • ssl: smtplib.SMTP_SSL
  • none: smtplib.SMTP en clair
  • Ajout d'un timeout configurable avec valeur sûre par défaut (10s)
  • Ajout d'événements structurés pour config manquante/invalide et succès/échecs d'envoi
  • Conservation des sujets d'alerte quota et prix manquants
  • Propagation du logger vers les appels d'alerte pour le diagnostic opérationnel

4. Validation

  • Tests pipeline ciblés passés après implémentation TDD
  • Suite complète du dépôt passée (54 passed)
  • Couverture globale recalculée : 95%
  • Couverture recalculée de code_source_simule/pipeline.py : 87%
  • Aucune régression sur les modes quota et les déclencheurs d'alerte existants

5. Validation en production (2026-03-29)

  • Identifiants SMTP (serveur courriel WHC) injectés dans le .env de production sur le VPS Hostinger
  • Alerte quota simulée déclenchée via docker compose exec
  • Courriel reçu avec succès
  • Chaîne complète confirmée : application → SMTP WHC → réception en boîte

6. Résultat opérationnel

Les opérateurs disposent désormais de contrôles SMTP explicites et de diagnostics d'échec plus lisibles, tandis que l'ETL reste fail-open et ne bloque pas le traitement métier en cas d'échec d'envoi courriel.