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_SSLnone:smtplib.SMTPen 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
.envde 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.