Revisei recentemente os emails:task e o código relacionado com o objetivo de testar todos os caminhos de falha e retocar o texto de erro.
Também descobri que os efeitos de definir DISCOURSE_SMTP_ENABLE_STARTTLS=false são (na maioria) nulos. Definir isso não desativou realmente o STARTTLS e, de fato, ele pode coexistir perfeitamente com TLS no momento da conexão (DISCOURSE_SMTP_FORCE_TLS=true).
Antes de mesclar isso, acho que um aviso de administrador no painel para quando DISCOURSE_SMTP_ENABLE_STARTTLS=false for definido é adequado. Imagino que haja pelo menos um auto-hospedeiro que definiu isso, mas não precisa e está realmente confiando no STARTTLS.
Isso parece um bom trabalho! Uma coisa que eu (acho que) notei é que a tarefa rake não usa o mesmo código que o envio real (como da página de teste de e-mail /admin/email). Tenho quase certeza de que tive um caso em que funcionou no UX, mas não na tarefa rake (ou talvez tenha sido o contrário?)
Enquanto isso está fresco em sua mente, se você pudesse ver que, pelo menos quando realmente envia, o faz usando o mesmo código que o Discourse, seria ótimo.
@supermathie vale a pena enviar uma mensagem privada para todos os administradores em todos os sites que têm essa variável definida? Nosso sistema atual de verificação de problemas fará isso, e não tenho certeza se é garantido aqui, dado que, na maioria das vezes, isso tem um efeito nil. Idealmente, eu gostaria de mostrar isso apenas no painel sem notificar os usuários administradores, não tenho certeza se nossa estrutura atual de verificação de problemas suporta esse caso de uso.
Eu acho que sim - acho extremamente provável que, dada a confusão de muitos administradores com a configuração de e-mail, alguém tenha essa variável definida quando na verdade depende do starttls.
Ninguém deveria tê-la definida, provavelmente.
Prefiro ter um aviso espúrio do que quebrar silenciosamente a configuração de e-mail de alguém.
A alternativa é remover a verificação e neutralizar a variável para que ela não faça nada.
Seria bom se o aviso não aparecesse quando o servidor SMTP de saída for localhost (ou seja, corresponder ao nome de domínio do Discourse), pois o TLS entre o contêiner Docker e o host não é necessário, já que eles estão na mesma máquina.