Zu viele E-Mail-Domains von Benutzern funktionieren nicht, was zur Deaktivierung der Mailgun-Domain führt: Was tun?

Hallo!

Mein Forum verfügt über viele importierte Benutzer mit einer bestimmten E-Mail-Domain, die nicht mehr funktioniert. Einige tausend Benutzer haben eine solche E-Mail-Adresse.

Bisher war dies kein Problem, aber ich habe den Wert für Digest-E-Mails nach Tagen unterdrücken erhöht, und mein Forum hat eine große Anzahl von Digest-E-Mails gesendet, darunter auch an viele Benutzer mit nicht funktionierenden E-Mail-Domains.

Dies führte zu zu vielen Rückläufern, und Mailgun hat meine Domain deaktiviert.

Was sollte ich mit diesen Konten tun, um dies zu verhindern und mein Problem zu lösen? Viele dieser Konten gehören legitimen Benutzern, die noch nicht zum Forum zurückgekehrt sind. Es sind nicht unbedingt verwaiste Konten.

Aufgrund dieses Problems können sich Benutzer nicht im Forum registrieren, bis es behoben ist.

Schauen Sie sich Umgang mit zurückgewiesenen E-Mails an.

Aus irgendeinem Grund habe ich dieses Thema nicht über die Suche gefunden … Ich glaube, ich war in Panik! :sweat_smile:

Vielen Dank für deine schnelle Antwort!

Aber wenn es eine Million E-Mail-Adressen wie bademail.domain gibt, möchten Sie vielleicht etwas wie

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

machen, wie in Replace a string in all posts beschrieben. Dadurch werden alle diese E-Mail-Adressen so verändert, dass Discourse keine Nachrichten mehr an sie sendet. Eine weitere gute Lösung wäre etwas wie

bad=User.find_by_email     
<eine Suche, die alle findet>
bad.update_all(active: false)

und alle Benutzer mit den bekannten gefälschten E-Mail-Adressen zu deaktivieren. Ich bin mir nicht ganz sicher, wie der erste Teil im Kopf funktioniert, aber es sollte einfach genug sein, das herauszufinden.

Ja, ich habe darüber nachgedacht, das zu tun, um diese E-Mail-Domains loszuwerden.

Mir ist aufgefallen, dass eine Discourse-Methode E-Mails mit @no-email.invalid erstellt:

Und im Importer-Base wird @email.invalid verwendet, was sich leicht unterscheidet:

  1. Werden diese beiden verschiedenen „Dummy-Domains

Ich bin mir ziemlich sicher, dass posts:remap diese Domain in allen Tabellen neu zuordnet, aber sie mussten es in eine Klasse packen.

Du könntest auch einfach deine eigene Ersetzung in der Tabelle UserEmails (oder wie immer sie heißt) vornehmen.

Ich bin mir ziemlich sicher, dass whatever.invalid der Welt mitteilt, dass es sich um eine ungültige Adresse handelt, und es wird nicht versucht, sie zu senden.

Schön. Ich vermute, das sollte funktionieren?

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

Ich denke, ich könnte

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

Dein Ansatz könnte auch funktionieren, aber ich bin mir nicht sicher, ob das User-Modell so aktualisiert wurde, dass man u.email.include? verwenden kann, nachdem die E-Mail-Adressen in ein anderes Modell/eine andere Tabelle verschoben wurden.

Ich habe mein Skript nur getestet, um zu sehen, ob es die Ziel-E-Mail-Adressen zurückgibt, und es funktioniert.

Dein Skript sollte schneller sein als meines, da du eine Abfrage verwendest, um bestimmte E-Mail-Domains auszuwählen, anstatt alle Benutzer durchzulaufen.

Vielen Dank für deine Hilfe :+1:

Ups. Hier ist die Remap, die ich gemeint habe. Sie lautet einfach:

  discourse remap alt neu

Siehe Change the domain name or rename your Discourse.

Ich denke, das obige würde funktionieren, aber die Lösung mit UserEmails ist wahrscheinlich ein winziges bisschen besser.

Vielen Dank. Das ist die, die ich verwendet habe.
Mehr als 5000 von insgesamt 17.000 Benutzern hatten solche E-Mail-Domains. Kein Wunder, dass die Anzahl der Absprünge stieg, als ich Digest-E-Mails nach Tagen unterdrücken erhöhte…

Dies ist eine spezielle Behandlung durch Discourse für alles, was auf .invalid endet, eine reservierte TLD.