Muitos domínios de e-mail de usuários não funcionando levam ao desativamento do domínio do Mailgun: o que fazer?

Olá!

Meu fórum tem muitos usuários importados com um domínio de e-mail específico que não funciona mais. Alguns milhares de usuários possuem esse endereço de e-mail.

Isso não era um problema até agora, mas aumentei o valor de suprimir e-mail de resumo após X dias, e meu fórum enviou muitos e-mails de resumo, inclusive para muitos usuários com domínios de e-mail não funcionais.

Isso resultou em muitas devoluções de e-mail (bounces) e o Mailgun desativou meu domínio.

O que devo fazer com essas contas para prevenir isso e resolver meu problema? Muitas dessas contas pertencem a usuários legítimos que ainda não retornaram ao fórum. Não são necessariamente contas abandonadas.

Por causa desse problema, os usuários não podem se registrar no fórum até que isso seja corrigido.

Confira Gerenciamento de e-mails rejeitados

Por alguma razão, não encontrei este tópico na busca… Acho que entrei em pânico! :sweat_smile:

Muito obrigado pela sua resposta rápida!

Mas, se houver um zilhão de endereços de e-mail como bademail.domain, talvez o que você queira fazer seja algo como

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

conforme descrito em Replace a string in all posts. Isso fará com que todos esses endereços de e-mail sejam tratados de modo que o Discourse não envie e-mails para eles. Outra boa solução seria algo como

bad=User.find_by_email     
<alguma busca que os encontre todos>
bad.update_all(active: false)

e desativar todos os usuários com os endereços de e-mail falsos conhecidos. Não tenho certeza de como fazer a primeira parte de cabeça, mas deve ser fácil o suficiente para descobrir.

Sim, pensei em fazer isso para me livrar desses domínios de e-mail.

Notei que um método do Discourse cria e-mails com @no-email.invalid:

E na base do importador, ele usa @email.invalid, que é ligeiramente diferente:

  1. Esses dois “domínios fictícios” diferentes são ambos ignorados quando o Discourse precisa enviar e-mails?

  2. Devo substituir meu domínio não funcional por @no-email.invalid ou @email.invalid, ou não importa?

@pfaffman, não tenho certeza de entendi por que deveria remapear nos posts em vez de alterar os e-mails dos usuários:thinking: Esses endereços de e-mail não estão nos posts, a menos que esteja perdendo algo.

Se for a maneira recomendada, gostaria apenas de substituir meus endereços @brokendomains.com em cada perfil por @no-email.invalid ou @email.invalid. Consigo descobrir como fazer isso, só estou curioso sobre qual domínio “falso” usar.

Tenho quase certeza de que posts:remap remapeia aquele domínio em todas as tabelas, mas eles tiveram que colocá-lo em alguma classe.

Você também poderia simplesmente escrever sua própria substituição na tabela UserEmails (ou como quer que se chame).

Tenho quase certeza de que whatever.invalid informará ao Mundo que é um endereço inválido e ele não tentará enviá-lo.

Legal. Então acho que isso resolveria?

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

Acho que posso

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

O seu também poderia funcionar, mas não tenho certeza se o modelo User foi atualizado para permitir um u.email.include? depois que eles moveram os e-mails para outro modelo/tabela.

Testei meu script apenas para ver se ele estava retornando os endereços de e-mail de destino e funcionou.

Seu script deve ser mais rápido que o meu, já que você usa uma consulta para selecionar domínios de e-mail específicos em vez de iterar sobre todos os usuários.

Muito obrigado pela sua ajuda :+1:

Ops. Aqui está o remap que eu quis dizer. É apenas

  discourse remap antigo novo

Veja Change the domain name or rename your Discourse.

Acho que o acima funcionaria, mas a solução de UserEmails é provavelmente um pouquinho melhor.

Obrigado. Foi essa que eu usei.
Mais de 5000 usuários de um total de 17000 tinham esses domínios de e-mail. Não é de admirar que o número de rejeições tenha aumentado quando eu aumentei suprimir e-mail de resumo após dias

Isso é um tratamento especial pelo Discourse para qualquer coisa que termine em .invalid, que é um TLD reservado.