Atualize mail-receiver para a versão de lançamento

Se você chegou aqui porque notou esta mensagem no seu Painel de Administração:

Detectamos uma versão desatualizada do mail-receiver..

Você está no lugar certo.

Acesse seu servidor Discourse via SSH e execute os dois comandos abaixo para atualizar o mail-receiver:

sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
/var/discourse/launcher rebuild mail-receiver

Para mais detalhes, continue lendo.

Por que precisamos atualizar o mail-receiver?

Precisamos atualizar o mail-receiver para uma versão mais recente que não utilize um método de autenticação de API obsoleto.

Quando você configurou o mail-receiver originalmente, foi solicitado que criasse um arquivo containers/mail-receiver.yml contendo um número de versão fixo:

base_image: discourse/mail-receiver:x.x.x

Para receber atualizações futuras sem precisar atualizar manualmente esse número, você pode alterar o número da versão para release em vez de especificar uma versão específica.

Edite o arquivo /var/discourse/containers/mail-receiver.yml para usar esta imagem base:

base_image: discourse/mail-receiver:release

Se preferir, pode simplesmente executar este comando:

sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml

para editar o arquivo automaticamente.

Em seguida, execute:

/var/discourse/launcher rebuild mail-receiver

para atualizar para a versão mais recente do mail-receiver.

21 curtidas

Obrigado pelo guia de atualização, @blake! No entanto, por algum motivo, parece que não tenho o arquivo mail-receiver.yml em /var/discourse/containers/.

root@nomadgate-community-eu:/var/discourse# sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
sed: não foi possível ler /var/discourse/containers/mail-receiver.yml: Arquivo ou diretório inexistente

Para garantir, executei ls para verificar o que realmente está lá:

root@nomadgate-community-eu:/var/discourse/containers# ls
app.yml  app.yml.save

Alguma ideia do porquê não há um arquivo mail-receiver.yml e o que posso fazer a respeito? O Mail Receiver parece estar funcionando para minha comunidade, mesmo sem o arquivo…

EDIT: Pensando melhor, acho que nunca configurei o “mail-receiver”. Estou usando o recurso de webhook de parse de entrada do SendGrid, então por que estou vendo esse erro no painel do Discourse?

No entanto, para fazer isso funcionar, estou passando as credenciais da API como parâmetros de URL, assim: /admin/email/handle_mail?api_key=xxx&api_username=xxx — isso não funcionará mais? E, se não funcionar, existe alguma outra maneira de manter o suporte a mensagens de entrada via SendGrid?

2 curtidas

Eu concordo – não vejo um arquivo containers/mail-receiver.yml na minha instalação do Discourse. Até agora, não estou observando nenhum efeito adverso.

@dltj Você também está usando o SendGrid ou algo similar?

A coisa é esta: se você não instalou o receptor de e-mail, não precisa atualizá-lo.

2 curtidas

Claro, mas estou tentando reunir o máximo de informações possível, pois podem haver alterações nas chamadas de API baseadas em parâmetros de consulta, dependendo do suporte do SendGrid ou de outros provedores que você pode integrar para usar esse endpoint.

3 curtidas

Não, não estou usando o SendGrid — esta instalação do Discourse tem vários anos e, na época, escrevi um AWS Lambda que usava a API /admin/email/handle_mail para encaminhar e-mails recebidos para o Discourse. Esse script Lambda foi feito em Python 2.7, então está na hora de reescrevê-lo… provavelmente é o momento de ver quais opções tenho hoje.

Estranhamente, a mensagem “Detectamos uma versão desatualizada do mail-receiver…” não aparece mais no painel de administração do meu Discourse. Estranho. Esquece — a mensagem ainda está lá. Talvez tenha sumido porque a instalação do Discourse não recebeu nenhuma mensagem de entrada nos últimos dias no endpoint /admin/email/handle_mail, mas recebeu quando enviei a mensagem de teste?

Acabei de verificar — o recebimento de e-mails no Discourse ainda funciona.

1 curtida

Correto. Ele expira após 24 horas se não tiver recebido nenhuma mensagem.

2 curtidas

Ah, entendi. Então o aviso no painel não é por eu estar usando ‘mail-receiver’… é por eu estar usando os agora obsoletos api_key e api_username como parâmetros de consulta no endpoint da API. Ok… simples o suficiente para corrigir. Obrigado pelas dicas.

3 curtidas