Existe uma maneira de estender o intervalo de tempo limite quando o Discourse espera que o servidor SMTP retorne o reconhecimento de que uma mensagem de e-mail foi enviada? Alternativamente, existe uma maneira de configurar o Discourse para não exigir esse reconhecimento.
Estou enfrentando um problema em que o Discourse está gerando e-mails duplicados. O Discourse está recebendo um erro Net::Timeout ao enviar e-mails para entrega. Meu provedor de e-mail está realmente entregando os e-mails, mas o Discourse não sabe disso e continua reenviando os e-mails. Isso se repete indefinidamente.
Sim, pelo que posso dizer. A conexão é estabelecida, a mensagem de e-mail é enviada, mas um erro Net::Timeout é relatado depois disso.
Usando o script discourse_doctor, vejo o ID da mensagem retornado quando a transição é bem-sucedida e o erro Net::Timeout quando ela falha.
Este problema surgiu após a atualização para o Discourse 2.9.0.beta5. Presumo que o Discourse se tornou menos permissivo com esse erro nessa atualização.
Não encontrei nenhuma alteração relacionada nos gems ruby mail e net/smtp. Talvez seu servidor SMTP esteja se comportando mal? Seria possível migrar para outro?
Obrigado por verificar. Concordo, meu provedor de e-mail parece ser a causa do problema, pois ele não está respondendo rápido o suficiente após o envio de um e-mail. Só posso supor que o problema está de alguma forma relacionado à carga, pois alguns dias não experimento o problema.
Mudar de provedor de e-mail é um desafio significativo por uma série de razões. Encontrar uma maneira de configurar o Discourse para contornar isso é a solução mais atraente.
Mudar para um novo provedor de e-mail parece ser a única solução para este problema, mas isso exige que eu reconfigure o provedor de e-mail para todo o meu domínio, o que é uma tarefa que eu gostaria de evitar.
Existe alguma alteração que eu possa fazer no código do Discourse que lida com o envio de e-mails para que ele ignore as falhas no envio de e-mails, como fazia no passado? Eu não sou um desenvolvedor Rails, então não tenho certeza por onde começar. Eu não quero quebrar minha capacidade de aceitar futuras atualizações do Discourse.
No que você baseia a declaração acima? Você só pode realmente receber e-mail em um conjunto de infraestrutura por domínio/subdomínio, mas vários serviços podem encaminhar e-mail em seu nome.
Alternativamente, você também poderia criar um novo subdomínio dedicado à sua instância, o que nem sequer requer uma reconstrução para configurar.
Tentei isso em um ponto no passado e configurei as coisas incorretamente e não consegui descobrir, daí minha relutância em mudar qualquer coisa. Eu também preferiria que os e-mails do Discourse se originassem do domínio da minha empresa, mas como isso não vai mais funcionar, tentarei novamente fazer como você sugere e usar um subdomínio para e-mails de saída.
Criei um subdomínio de e-mail usando o RackSpace Cloud e confirmei que posso enviar e-mails através dele do meu Mac usando o Apple Mail e o curl. Também confirmei que posso enviar e-mails do meu servidor usando o curl. No entanto, estou recebendo este erro do discourse-doctor:
Testing sending to support@latenightsw.com using secure.emailsrvr.com:465, username:username with plain auth.
======================================== ERROR ========================================
UNEXPECTED ERROR
Net::ReadTimeout
====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!
Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
Meu arquivo app.yml contém estas configurações:
DISCOURSE_SMTP_ADDRESS: secure.emailsrvr.com # (mandatory)
DISCOURSE_SMTP_PORT: 465 # (optional)
DISCOURSE_SMTP_USER_NAME: username # (optional)
DISCOURSE_SMTP_PASSWORD: password # (optional, WARNING the char '#' in pw can cause problems!)
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
Tentei definir DISCOURSE_SMTP_ENABLE_START_TLS como false. Outras postagens sobre o erro Net::ReadTimeout sugerem tentar essas configurações, mas isso não fez diferença:
@Falco como faço essa alteração na minha configuração do Discourse? Não consigo encontrar nenhuma documentação para uma configuração que eu possa adicionar ao meu arquivo app.yml.