Обновите mail-receiver до релизной версии

Если вы попали сюда, потому что увидели это сообщение на своей панели администратора:

Мы обнаружили устаревшую версию mail-receiver..

Вы находитесь в нужном месте.

Пожалуйста, подключитесь по SSH к вашему серверу Discourse и выполните следующие две команды для обновления mail-receiver:

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

Для получения более подробной информации продолжайте чтение.

Почему необходимо обновить mail-receiver?

Нам нужно обновить mail-receiver до более новой версии, которая не использует устаревший метод аутентификации API.

Когда вы настраивали mail-receiver изначально, вас попросили создать файл containers/mail-receiver.yml, содержащий зафиксированный номер версии:

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

Чтобы получать будущие обновления без необходимости вручную менять этот номер, вы можете обновить номер версии до release вместо указания конкретной версии.

Пожалуйста, отредактируйте файл /var/discourse/containers/mail-receiver.yml, чтобы использовать следующее базовое изображение:

base_image: discourse/mail-receiver:release

Если хотите, вы можете просто выполнить эту команду:

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

чтобы файл был отредактирован автоматически.

Затем выполните:

/var/discourse/launcher rebuild mail-receiver

чтобы обновить mail-receiver до последней версии.

21 лайк

Спасибо за гайд по обновлению, @blake! Однако, по какой-то причине у меня нет файла mail-receiver.yml в папке /var/discourse/containers/.

root@nomadgate-community-eu:/var/discourse# sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
sed: не удалось прочитать /var/discourse/containers/mail-receiver.yml: файл или каталог не существует

Для уверенности я выполнил ls, чтобы проверить, что там на самом деле находится:

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

Есть ли у кого-нибудь идеи, почему файла mail-receiver.yml нет и что с этим можно сделать? По-видимому, функция приёма почты работает для моего сообщества даже без этого файла…

РЕДАКТИРОВАНИЕ: Подумав, я вспомнил, что, кажется, никогда не настраивал «mail-receiver». Я использую функцию веб-хука входящего разбора SendGrid, так почему же я вообще вижу эту ошибку в панели управления Discourse?

Однако, чтобы это работало, я передаю учётные данные API как параметры URL следующим образом: /admin/email/handle_mail?api_key=xxx&api_username=xxx — перестанет ли это работать? И если да, то есть ли другой способ сохранить поддержку входящих сообщений через SendGrid?

2 лайка

Я согласен — в моей установке Discourse я не вижу файла containers/mail-receiver.yml. Пока никаких негативных последствий я не наблюдаю.

@dltj Вы тоже используете SendGrid или аналогичный сервис?

Дело в следующем: если вы не устанавливали почтовый получатель, то его обновлять не нужно.

2 лайка

Конечно, но я стараюсь собрать как можно больше информации, так как могут быть изменения в API-вызовах с параметрами запроса в зависимости от поддержки SendGrid или других провайдеров, которые можно подключить для использования этой конечной точки.

3 лайка

Нет, я не использую SendGrid — эта установка Discourse уже несколько лет, и на тот момент я написал AWS Lambda, который использовал API /admin/email/handle_mail для передачи входящей почты в Discourse. Этот скрипт Lambda был написан на Python 2.7, поэтому его пора переписать… вероятно, самое время посмотреть, какие у меня есть варианты сейчас.

Странно, что сообщение «Мы обнаружили устаревшую версию mail-receiver…» больше не отображается на панели администратора Discourse. Хм. Забудьте — сообщение всё ещё там. Возможно, оно исчезло, потому что установка Discourse не получала входящие сообщения в течение нескольких дней через конечную точку /admin/email/handle_mail, но получило их, когда я отправил тестовое сообщение?

Только что проверил — входящая почта в Discourse всё ещё работает.

1 лайк

Верно. Если сообщения не поступают, тайм-аут наступает через 24 часа.

2 лайка

А, понятно. Так что предупреждение в панели управления связано не с тем, что я использую ‘mail-receiver’, а с тем, что я применяю устаревшие параметры api_key и api_username в качестве параметров запроса к конечной точке API. Понятно… это довольно просто исправить. Спасибо за подсказки.

3 лайка