Trop de domaines d'e-mails d'utilisateurs ne fonctionnent pas entraînent la désactivation du domaine Mailgun : que faire ?

Bonjour !

Mon forum compte de nombreux utilisateurs importés possédant un domaine e-mail spécifique qui ne fonctionne plus. Plusieurs milliers d’utilisateurs ont une adresse e-mail de ce type.

Ce n’était pas un problème jusqu’à présent, mais j’ai augmenté la valeur de supprimer les e-mails de résumé après X jours, et mon forum a envoyé un grand nombre d’e-mails de résumé, y compris à de nombreux utilisateurs dont les domaines e-mail ne fonctionnent plus.

Cela a entraîné un nombre excessif de rebonds, et Mailgun a désactivé mon domaine.

Que dois-je faire avec ces comptes pour prévenir cela et résoudre mon problème ? Beaucoup de ces comptes appartiennent à des utilisateurs légitimes qui ne sont pas encore revenus sur le forum. Il ne s’agit pas nécessairement de comptes abandonnés.

En raison de ce problème, les utilisateurs ne peuvent pas s’inscrire au forum tant que celui-ci n’est pas résolu.

Consultez la gestion des e-mails rebondis

Pour une raison quelconque, je n’ai pas trouvé ce sujet en utilisant la recherche… Je suppose que j’ai paniqué ! :sweat_smile:

Merci beaucoup pour votre réponse rapide !

Mais s’il y a un milliard d’adresses e-mail comme bademail.domain, ce que vous voudrez peut-être faire, c’est quelque chose comme

rake posts:remap['bademail.domain', 'no-email.invalid']

tel que décrit dans Replace a string in all posts. Cela fera en sorte que Discourse n’enverra plus d’e-mails à ces adresses. Une autre bonne solution consisterait à faire quelque chose comme

bad=User.find_by_email     
<une recherche qui les récupérera tous>
bad.update_all(active: false)

et de désactiver tous les utilisateurs ayant des adresses e-mail factices connues. Je ne suis pas tout à fait sûr de la manière de réaliser la première partie sur le moment, mais cela devrait être assez simple à comprendre.

Oui, j’ai pensé faire cela pour me débarrasser de ces domaines d’email.

Je remarque qu’une méthode Discourse crée des emails @no-email.invalid :

Et dans l’importateur de base, il utilise @email.invalid, ce qui est légèrement différent :

  1. Ces deux « faux domaines » sont-ils tous deux ignorés lorsque Discourse doit envoyer des emails ?

  2. Devrais-je remplacer mon domaine non fonctionnel par @no-email.invalid ou @email.invalid, ou cela n’a-t-il pas d’importance ?

@pfaffman, je ne suis pas sûr de comprendre pourquoi je devrais remapper dans les messages plutôt que de changer les emails des utilisateurs:thinking: Ces adresses email ne se trouvent pas dans les messages, sauf si je manque quelque chose.

Si c’est la méthode recommandée, je voudrais simplement remplacer mes adresses @brokendomains.com dans chaque profil par @no-email.invalid ou @email.invalid. Je peux trouver comment faire cela, je me demande juste quel « faux » domaine utiliser.

Je suis plutôt certain que posts:remap effectue le remappage de ce domaine dans toutes les tables, mais ils ont dû le placer dans une certaine classe.

Vous pourriez également simplement écrire votre propre remplacement dans la table UserEmails (ou celle qui porte ce nom).

Je suis plutôt certain que whatever.invalid indiquera au Monde qu’il s’agit d’une adresse invalide et qu’il n’essaiera pas de l’envoyer.

Super. Donc je suppose que cela devrait faire l’affaire ?

User.find_each do |u|
	if u.email.include? "@brokendomain.com"
		u.update(email: SecureRandom.hex + "@email.invalid")
	end
end

Je pense que je pourrais

UserEmail.where("email like '%@brokendomain.com'").each do |e|
   e.update(email: SecureRandom.hex + "@email.invalid")
end

La vôtre pourrait aussi fonctionner, mais je ne suis pas sûr que le modèle User ait été mis à jour pour permettre un u.email.include? après le déplacement des adresses e-mail vers un autre modèle/table.

J’ai testé mon script simplement pour vérifier s’il renvoyait les adresses e-mail cibles, et cela fonctionne.

Ton script devrait être plus rapide que le mien puisque tu utilises une requête pour sélectionner des domaines e-mail spécifiques au lieu de parcourir tous les utilisateurs.

Merci beaucoup pour ton aide :+1:

Oups. Voici le remap que je voulais. C’est simplement :

  discourse remap old new

Voir Change the domain name or rename your Discourse.

Je pense que la solution ci-dessus fonctionnerait, mais la solution UserEmails est probablement un tout petit peu meilleure.

Merci. C’est celle que j’ai utilisée.
Plus de 5000 utilisateurs sur un total de 17 000 avaient ces domaines d’e-mail. Pas étonnant que le nombre de rebonds ait augmenté lorsque j’ai accru supprimer les e-mails de résumé après X jours

Il s’agit d’un traitement spécial par Discourse pour tout ce qui se termine par .invalid, qui est un TLD réservé.