Repository navigation
🐛 E-mails non reçus par les adresses Hotmail/Outlook : inscription impossible (investigation prod) #502
Copy link
Copy link
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Constat (prod, 2026-10-17)
Un membre avec une adresse Hotmail/Outlook ne reçoit pas les e-mails de l'application et ne peut donc pas finir son inscription (pas d'inscription publique : l'admin crée le compte, la personne définit son mot de passe via « Mot de passe oublié »).
Investigation en lecture seule sur la production :
- Compte actif, jamais connecté, non verrouillé (
last_login_atnul) : aucun blocage côté application. - 3 jetons de réinitialisation générés le 16/10 (15 h 41, 15 h 44, 19 h 58) : l'application a bien traité les demandes. Le 2ᵉ et le 3ᵉ ont invalidé le précédent, et le dernier est expiré sans avoir servi.
- Aucun échec d'envoi journalisé : pas d'
app.log(leSafeMaily écrit la classe de l'erreur),cron.logsans échec. Doncsendmaila accepté le message : la perte se produit après la remise à Exim. - Aucun rebond (bounce) dans la boîte locale. Les journaux Exim (
exim_mainlog) ne sont pas lisibles depuis le compte (pas admin) : impossible de voir le refus ou la mise en file. - DNS du domaine d'envoi : SPF
~all(softfail par construction, IP de sortie variable de l'hébergeur), DKIM présent, DMARCp=nonesansrua. Outlook/Hotmail est connu pour être strict avec les expéditeurs sur IP mutualisée : e-mail rejeté, ou classé en courrier indésirable, sans rebond visible.
Hypothèse la plus probable : rejet ou filtrage silencieux par Outlook.com (réputation de l'IP mutualisée + SPF softfail), pas un bogue applicatif. Non confirmée faute de journaux Exim.
À faire
- Confirmer : demander à la personne de chercher dans Indésirables/Autres et d'ajouter
no-reply@…à ses expéditeurs sûrs ; demander au support de l'hébergeur le journal Exim pour ces envois (heures ci-dessus, UTC+2 côté utilisateur). - Inscrire l'expéditeur au programme Outlook SNDS / JMMP si l'IP de sortie est stable, ou demander à l'hébergeur le
include:SPF officiel d'envoi (voir 🔒 E-mails : durcir DMARC (p=none vers quarantine/reject) et SPF (audit #185, gravité faible) #430). - Passer DMARC avec
ruapour voir les rapports (🔒 E-mails : durcir DMARC (p=none vers quarantine/reject) et SPF (audit #185, gravité faible) #430). - Observabilité : journaliser (sans donnée personnelle) l'envoi accepté, et exposer dans l'écran admin Utilisateurs un état « dernier e-mail d'invitation envoyé à telle heure », pour qu'un admin sache si le mail est parti.
- Contournement pour l'inscription quand un e-mail n'arrive pas : lien d'activation/réinitialisation affichable à l'admin pour transmission par un autre canal (à challenger côté sécurité : jeton à usage unique, 1 h).
Liens
- 🔒 E-mails : durcir DMARC (p=none vers quarantine/reject) et SPF (audit #185, gravité faible) #430 (durcir DMARC/SPF),
.claude/deploiement.md§ Délivrabilité des e-mails (📧 Certifier la délivrabilité des e-mails (Gmail, Outlook, autres) : SPF, DKIM, DMARC #132).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
ronan-develop commentedon Oct 17, 2026
Étape 3 faite (2026-10-17) : le DMARC du domaine d'envoi porte maintenant un
rua(toujoursp=none, observation seulement), vérifié sur deux résolveurs publics. Premiers rapports attendus sous 24 à 48 h. Reste : réponse du support hébergeur (journaux Exim, IP de sortie,include:SPF) et l'observabilité côté application.ronan-develop commentedon Oct 17, 2026
Périmètre retenu pour le volet observabilité : colonne
password_resets.mail_sent_at(migration 042) renseignée seulement quand le transport accepte le mail, et affichage par compte dans l'écran admin Utilisateurs (dernière demande de lien, mail accepté ou non). Le journal info « accepté » est abandonné : les mesuresMailSent/MailFailedexistent déjà et la prod est en niveauwarning.Merge pull request #505 from ronan-develop/feat/#502-mail-sent-at
ronan-develop commentedon Oct 17, 2026
PR #505 fusionnée (volet observabilité :
mail_sent_at, journal info, état d'envoi dans l'écran Utilisateurs). Non déployé. Reste ouvert : réponse du support hébergeur (journaux Exim, IP de sortie,include:SPF), lecture des premiers rapports DMARC, décision sur le contournement par lien transmis par l'admin.