Кошмар Let's Encrypt X3

Сегодня при использовании приложения mail-receiver я получаю следующую ошибку. Ранее всё работало нормально.

Приложение пытается отправить электронное письмо в Discourse через API. Возможно, это связано с истечением срока действия сертификата DST Root CA X3?

Если да, не подскажете, как это исправить? Я пробовал пересобрать как само приложение, так и mail-receiver, заново создать сертификаты Let’s Encrypt и т. д..

<19>Sep 30 22:07:26 receive-mail[96]: Не удалось выполнить POST-запрос с электронным письмом на https://forum.validadortiss.com.br/admin/email/handle_mail: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: проверка сертификата не удалась (OpenSSL::SSL::SSLError)

Спасибо за отчет @wlandgraf — мы как можно скорее загрузим новый образ почтового получателя в Dockerhub

Тег release в Dockerhub теперь обновлён. Если вы следовали официальным инструкциям по настройке, вы можете загрузить новый образ, выполнив:

cd /var/discourse
./launcher rebuild mail-receiver

Привет, @david, ваша быстрая реакция очень ценится. Однако это не решило мою проблему. Она всё ещё сохраняется.

В /var/discourse/containers/mail-receiver.yml, что указано в строке base_image:? Там должно быть:

base_image: discourse/mail-receiver:release

(Подробнее об этом здесь)

Да, это то, что у меня есть.

Это начало моего файла:

## шаблон контейнера для входящей почты
##
## После внесения изменений в этот файл вы ДОЛЖНЫ выполнить пересборку
## /var/discourse/launcher rebuild mail-receiver
##
## БУДЬТЕ *ОЧЕНЬ* ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## используйте http://www.yamllint.com/ для проверки файла при необходимости

base_image: discourse/mail-receiver:release
update_pups: false

expose:
  - "25:25"   # SMTP

А вот (частичный) вывод операции пересборки (части с ключами API опущены):

Проверка актуальности лаунчера
Получение origin
Лаунчер актуален
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 mail-receiver
mail-receiver
cd /pups && /pups/bin/pups --stdin
sha256:5f123a8eb11784828d5195ee0f328a0ea5a5d2ce36eeae1760e3d47b0dbeb15c
165ebaa91836a07696924f95d3746cbd1cc14412f478ba715ee40f502780ab7a
Удаление старого контейнера
+ /usr/bin/docker rm mail-receiver
mail-receiver

Попробуйте выполнить:

docker pull discourse/mail-receiver:release
cd /var/discourse
./launcher rebuild mail-receiver

Вот и всё! Большое спасибо! Если не возражаете, у меня несколько вопросов:

  1. Почему это было необходимо? Должен ли я всегда вручную обновлять последний образ перед сборкой?
  2. Нужно ли применять ту же процедуру (docker pull) при пересборке приложения?
  3. Я вижу, что письма, отправленные после пересборки, доставлены, но не те, что были отправлены ранее. Неужели эти письма потеряны?

Похоже, что ваша установка Docker закэшировала тег :release. Чтобы в будущем избежать необходимости выполнять docker pull, мы могли бы добавить некоторую логику в наш скрипт launcher.

Изображения app обрабатываются иначе, поэтому проблем с кэшированием там не возникнет.

Письма, отправленные во время сбоя, должны были быть возвращены серверу-отправителю с ошибкой «временный сбой». Эти серверы должны периодически повторять попытку отправки, поэтому, надеюсь, недостающие письма появятся в течение следующих нескольких часов.

Отлично. Еще раз спасибо за быстрый ответ. Мир, похоже, страдает из-за этой путаницы с корневым центром сертификации X3, и вы внесли свой вклад, чтобы сделать мир немного лучше сейчас. :smiley:

Есть какие-то подсказки, как определить, нужно ли обновлять получателя почты и потребуется ли команда docker pull?

Все почтовые получатели, установленные до сегодняшнего дня, требуют обновления. (Технически это касается любых установок, использующих базовый образ ранее 67222bded865)

Команда docker pull потребуется до тех пор, пока мы не обновим launcher (что маловероятно сегодня или завтра). Я только что опубликовал тему с объявлением здесь, так как знаю, что это создаст неудобства для многих сайтов. В ней содержатся инструкции по обновлению, включая команду docker pull: