Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ETQ Mainteneur, je ne veux pas envoyer de mails à de mauvaise adresse pour conserver une bonne réputation #10424

Open
4 of 12 tasks
LeSim opened this issue May 16, 2024 · 0 comments

Comments

@LeSim
Copy link
Member

LeSim commented May 16, 2024

Pb:

spamhaus a marqué une des ips de nos routeurs emails comme émettant du spam. Le routeur a immédiatement bloqué l'envoi de mail.

La détection en tant que spam se fait lorsqu'une adresse détenue par spamhaus recoit de manière répétée des mails.

Pourquoi envoyons nous des mails a spamhaus ?
hypothèse 1 : les utilisateurs (usager / FC / instructeur / admin) entre des adresses comportant des typos, et on leur envoie du trafic

Solution proposée :

demander une confirmation par mail pour tester sa validité (Confirmed Opt In).
Tant que le mail n'a pas été confirmé, seul les mails de confirmation peuvent y être envoyés.

Dans le code, on conditionne l'envoi de mail à la méthode user.email_verified?.

  1. ajout d'une colonne email_verified_at de type date_time dans la table Users
  2. dans user, def email_verified = email_verified_at.present?
  3. dans un premier temps, dans BalancerDeliveryMethod, on rajoute un brutal return if !User.email_verified? en première ligne de de deliver!
    3.1 va falloir etre un poil plus subtile pour ne pas bloquer les mails d'inscription / validation

le PLAN

  1. ajout de la colonne email_verified_at
  2. modification du controler Devise pour que email_verified_at soit rempli en mm temps que confirmed_at
  3. écriture d une tache du genre User.by_batch.update_all('email_checked_at = confirmed_at')
  4. on confirmed_at partout on peut
  5. identification des mails d'identification et ajout d'un tag pour qu'il soit délivré dans tous les cas
  6. blockage des mails non vérifiés

dans un second temps

  1. on nettoie le stock
  2. on modifie l’enrôlement pour avoir de la confirmation d email partout.

Mise en place

Nettoyage du stock

Activation de la confirmation par email

Usager
Instructeur

(ca se joue dans `User.create_or_promote_to_instructeur)

Expert
Administrateur
  • ETQ administrateur, je dois confirmer mon mail
Super Admin
  • mail des super admin

FAQ

pourquoi ne pas utiliser le confirmed_at natif de devise ?

parce qu'on veut garder la promesse de simpliciter de FC dont les comptes doit avoir majoritairement des comptes corrects

Annexes

en base :
User.where(confirmed_at: nil).count -> 300K
User.where(confirmed_at: nil).where.missing(:dossiers).count -> 300K -2
2 profils users ont des dossiers sans avoir de mail confirmé (creation 2020 / 2022)

User.where(confirmed_at: nil).where.missing(:instructeur).count -> 173
User.where(confirmed_at: nil).where.missing(:administrateur).count -> 23
User.where(confirmed_at: nil).where.missing(:expert).count -> 106

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Priorisé non cadré
Development

No branches or pull requests

1 participant