Demasiados dominios de correo electrónico de usuario no funcionan, lo que lleva a la desactivación del dominio de Mailgun: ¿qué hacer?

¡Hola!

Mi foro tiene muchos usuarios importados que tienen un dominio de correo electrónico específico que ya no funciona.
Unos pocos miles de usuarios tienen una dirección de correo de este tipo.

No era un problema hasta ahora, pero aumenté el valor de suprimir correos de resumen después de días y mi foro envió muchos correos de resumen, incluidos a muchos usuarios con dominios de correo no válidos.

Esto provocó demasiados rebotes y Mailgun deshabilitó mi dominio.

¿Qué debo hacer con estas cuentas para prevenir esto y solucionar mi problema? Muchas de estas cuentas pertenecen a usuarios legítimos que aún no han vuelto al foro. No son necesariamente cuentas abandonadas.

Debido a este problema, los usuarios no pueden registrarse en el foro hasta que se solucione.

Consulta Manejo de correos rebotados

Por alguna razón no encontré este tema con la búsqueda… ¡Supongo que entré en pánico! :sweat_smile:

¡Muchas gracias por tu rápida respuesta!

Pero si hay un zillón de direcciones de correo electrónico como bademail.domain, quizás lo que quieras hacer sea algo como

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

como se describe en Replace a string in all posts. Eso hará que Discourse no envíe correos a ninguna de esas direcciones de correo electrónico. Otra buena solución sería algo como

bad=User.find_by_email     
<alguna búsqueda que los obtenga a todos>
bad.update_all(active: false)

y desactivar a todos los usuarios con direcciones de correo electrónico falsas conocidas. No estoy seguro de cómo hacer la primera parte de memoria, pero debería ser lo suficientemente fácil de averiguar.

Sí, pensé en hacer esto para deshacerme de estos dominios de correo electrónico.

He notado que un método de Discourse crea correos electrónicos con @no-email.invalid:

Y en la base del importador, se utiliza @email.invalid, lo cual es ligeramente diferente:

  1. ¿Estos dos “dominios ficticios” distintos se ignoran ambos cuando Discourse debe enviar correos electrónicos?

  2. ¿Debería reemplazar mi dominio no funcional con @no-email.invalid o @email.invalid, o no importa?

@pfaffman, no estoy seguro de entender por qué debería remapear en publicaciones en lugar de cambiar los correos electrónicos de los usuarios:thinking: Estas direcciones de correo electrónico no están en las publicaciones, a menos que esté pasando algo por alto.

Si es un método recomendado, solo me gustaría reemplazar mis direcciones @brokendomains.com en cada perfil por @no-email.invalid o @email.invalid. Puedo averiguar cómo hacerlo, solo me pregunto qué dominio “falso” usar.

Estoy bastante seguro de que posts:remap vuelve a mapear ese dominio en todas las tablas, pero tuvieron que colocarlo en alguna clase.

También podrías simplemente escribir tu propia sustitución en la tabla UserEmails (o como se llame).

Estoy bastante seguro de que whatever.invalid le indicará al mundo que es una dirección inválida y no intentará enviarla.

Genial. Supongo que esto hará el trabajo, ¿verdad?

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

Creo que podría funcionar:

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

La tuya también podría funcionar, pero no estoy seguro de si el modelo User se actualizó para poder hacer u.email.include? después de que movieron los correos a otro modelo/tabla.

Probé mi script solo para ver si devolvía las direcciones de correo electrónico objetivo y funciona.

Tu script debería ser más rápido que el mío, ya que usas una consulta para seleccionar dominios de correo específicos en lugar de iterar sobre todos los usuarios.

¡Muchas gracias por tu ayuda :+1:!

¡Ups! Aquí está el remapeo que quería. Es simplemente:

  discourse remap antiguo nuevo

Consulta Change the domain name or rename your Discourse.

Creo que lo anterior funcionaría, pero la solución de UserEmails es probablemente un poco mejor.

Gracias. Esta es la que utilicé.
Más de 5000 usuarios de un total de 17000 tenían dominios de correo electrónico como ese. No es de extrañar que aumentaran los rebotes cuando incrementé suprimir correo electrónico de resumen después de días

Esto es un manejo especial por parte de Discourse para cualquier cosa que termine en .invalid, que es un TLD reservado.