Discourse SMTP envia \"EHLO localhost\" em vez do domínio, quebrando o Google smtp-relay

@iwaffles -

Você já tentou os passos de resolução neste tópico e nos outros relacionados?

Adicione uma linha ao seu app.yml:

DISCOURSE_SMTP_DOMAIN: [fqdn do seu servidor]

Em seguida, em /var/discourse, execute ./launcher rebuild app

O discourse-doctor pode ainda relatar falhas, mas os e-mails de teste feitos a partir do console de administração devem funcionar, e o fluxo normal de e-mail deve ser retomado.

Se isso não funcionar, por favor, nos dê um retorno, pois isso significa que há algum outro aspecto que ainda não foi descoberto.

3 curtidas

Tentei a reconstrução e funcionou!

Você tem razão, o discourse-doctor ainda falha para mim.

Acho que reiniciei o Discourse antes em vez de reconstruir, o que provavelmente é o motivo pelo qual a alteração não surtiu efeito. Obrigado, @Syonyk!

2 curtidas

Parece claro que localhost está sempre errado, mas a maioria dos servidores SMTP ignora esse valor, então não fez diferença.

Os 3 locais onde smtp_domain aparece em https://github.com/discourse/discourse têm mais de 2 a 7 anos. Estava me perguntando se talvez alguma biblioteca tenha começado a enviar localhost por algum motivo.

Acho que a melhor solução, apesar das preocupações do @Falco, seria corrigir isso em algum lugar como

Independentemente de o consenso seja continuar enviando localhost mesmo estando fora das RFCs, corrigir a tarefa rake conforme descrito acima é necessário. Ah, e fui eu quem escreveu aquele código. :man_shrugging: Mas, espere. Vejo que action_mailer.smtp_settings['domain'] pode estar vazio. Então, acho que

    Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

deve ser

     Net::SMTP.start(smtp[:address], smtp[:port], smtp[:domain] || 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

por enquanto, pelo menos. Acho que isso deve usar o domain se existir e manter o comportamento atual (mas errado?) de usar localhost se discourse_smtp_host não estiver definido.

Estou relutante em adicionar isso ao discourse-setup, pois está funcionando para quase todos como está e é mais uma pergunta bastante confusa a ser feita. (E estou prestes a adicionar uma pergunta para notification_email, então, se não tivermos cuidado, começará a parecer com o que lembro de fazer o kernel do Linux há algumas décadas.)

Talvez seja daqui que vem o localhost?

2 curtidas

Acabei de ser notificado sobre esse problema e posso confirmar que a correção funciona. Nossa instância, normalmente de baixo volume, também explodiu no Sidekiq, aparentemente devido a jobs de digest sendo reprocessados várias vezes.

Eu pensei que o Google tivesse implementado novos limites de uso, já que a mensagem de erro exibida é a mesma que eles usam para rejeições por DoS.

2 curtidas

Obrigado pelo relatório! Em breve, incluirei uma correção para isso na configuração do Discourse.

2 curtidas

Agora isso:

  • Foi adicionado como exemplo de configuração de ambiente em todos os arquivos de exemplo

  • Foi perguntado durante a configuração de instalação nova do Discourse

  • Foi corrigido no discourse doctor e na tarefa rake

Obrigado a todos :tada:

5 curtidas