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

Thanks for the update guide @blake! However, I seem to not have the mail-receiver.yml file in /var/discourse/containers/ for some reason.

root@nomadgate-community-eu:/var/discourse# sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
sed: can't read /var/discourse/containers/mail-receiver.yml: No such file or directory

For good measure checked typed ls to check what’s actually there:

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

Any idea why there’s no mail-receiver.yml file and what I can do about it? Mail Receiver seems to be working for my community, even without the file…

EDIT: Come to think of it, I don’t think I’ve ever set up “mail-receiver”. I’m using SendGrid’s inbound parse webhook feature, so why am I even seeing this error in my Discourse dashboard?

However, to make that work I am passing the API credentials as URL parameters like so: /admin/email/handle_mail?api_key=xxx&api_username=xxx — will this no longer work? And if so, is there any other way to keep the support for inbound messages via SendGrid?

2 curtidas

I agree – I don’t see a containers/mail-receiver.yml file in my Discourse installation. So far I’m not seeing any ill effects.

@dltj Are you also using SendGrid or similar?

Here’s the thing: If you didn’t install the mail receiver you don’t need to upgrade it.

2 curtidas

Sure but I’m trying to gather as much info as I can because there may be some changes to query param based api calls depending on support from SendGrid or other providers that you can wire up to use this 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