Discourse/mail-receiver:образ Docker release, похоже, устарел

Здравствуйте,

Похоже, официальный Docker-образ discourse/mail-receiver:release был упущен из виду и не пересобирается уже довольно давно.

Репозиторий на GitHub по-прежнему активно поддерживается:

Однако официальный Docker-образ:

discourse/mail-receiver:release

похоже, был собран почти 2 года назад.

Это, по всей видимости, вызывает проблемы с совместимостью с текущими версиями Discourse.

В моём случае входящая электронная почта успешно достигает почтового приёмника, но отклоняется на этапе RCPT TO с ошибкой:

450 4.7.1 Recipient address rejected: Internal error, API request failed

В старом Docker-образе, судя по всему, по-прежнему используется механизм smtp_should_reject / быстрой отклонки.

Однако в текущем исходном коде Discourse есть следующий комментарий:

# this endpoint has been broken for years
# and was used only in the public mail-receiver's fast rejection code,
# which is removed in https://github.com/discourse/mail-receiver/pull/33

PR #33 уже удалил этот код быстрой отклонки из mail-receiver, но эти изменения, похоже, не включены в текущий опубликованный образ discourse/mail-receiver:release.

Официальная документация/README для mail-receiver по-прежнему рекомендует пользователям использовать:

discourse/mail-receiver:release

Поэтому я не понимаю, был ли процесс публикации Docker-образа просто пропущен после недавних изменений.

Не могли бы вы проверить, нужно ли собрать и опубликовать новый образ discourse/mail-receiver:release?

Спасибо!

Обновление: я протестировал текущую ветку main

Я собрал текущую ветку main локально и обнаружил ещё одну проблему.

Старый образ release на Docker Hub по-прежнему использует старый код быстрого отклонения и во время RCPT выдаёт ошибку:

450 4.7.1 Recipient address rejected: Internal error, API request failed

Однако в текущей ветке main реализация smtp_should_reject / быстрого отклонения уже удалена. После сборки main Postfix вместо этого выдаёт ошибку:

warning: connect to private/policy: No such file or directory
451 4.3.5 Recipient address rejected: Server configuration problem

Я выяснил, что это связано с двумя оставшимися ссылками в Dockerfile:

check_policy_service unix:private/policy

Сам сервис политики был удалён, но smtpd_recipient_restrictions по-прежнему ссылается на его сокет.

Я удалил unix:private/policy из smtpd_recipient_restrictions, пересобрал образ, и входящая SMTP-почта успешно принималась.

После переключения на глобальный API-ключ доставка в Discourse также прошла успешно:

dsn=2.0.0, status=sent (delivered via discourse service)

Похоже, что есть две отдельные проблемы:

  1. Опубликованный образ discourse/mail-receiver:release устарел и по-прежнему содержит старую реализацию быстрого отклонения.
  2. В текущей ветке main эта реализация была удалена, но в Dockerfile Postfix по-прежнему настроен на использование unix:private/policy.

Возможно, также есть отдельная проблема с гранулярными API-ключами: ключ, ограниченный только функцией receive emails, возвращал HTTP 404 с /admin/email/handle_mail, тогда как глобальный API-ключ возвращал HTTP 200.

Я могу отправить PR для исправления двух устаревших ссылок на private/policy в Dockerfile, если это поможет.

2 лайка

Я могу подтвердить использование устаревшего образа релиза в рамках другого изменения в mail-receiver.

Я открыл этот PR, который был объединён 11 августа:

Он изменяет вызов в mail receiver с:

post.set_form_data(email: @mail)

на более новый параметр email_encoded, ожидаемый Discourse.

После того как PR был объединён, я пересобрал mail-receiver 17 августа, но в только что пересобранном контейнере всё ещё присутствовал код:

post.set_form_data(email: @mail)

Я добавил подробности в объединённый PR здесь:

22 августа я пересобрал его снова, и ./launcher rebuild mail-receiver сообщил, что опубликованный образ релиза является актуальным, с дайджестом:

sha256:2a0d45bb92a783c846a821e635413764eeadb3441ef6190085545a4bf054cb1e

Входящая почта на моей установке по-прежнему работает, но каждое полученное письмо продолжает вызывать предупреждение Discourse:

the email parameter is deprecated

так как опубликованный образ не содержит изменения из объединённого PR #37.

Таким образом, это, по-видимому, независимо подтверждает первую найденную вами проблему: изменения, объединённые в репозитории mail-receiver, не попадают в опубликованный образ discourse/mail-receiver:release.

1 лайк