Discourse/mail-receiver:release Docker 이미지가 오래된 것으로 보입니다

안녕하세요,

공식 discourse/mail-receiver:release Docker 이미지가 무시되어 꽤 오랜 시간 동안 재빌드되지 않은 것 같습니다.

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 / 빠른 거부(fast-rejection) 메커니즘을 사용하고 있는 것으로 보입니다.

그러나 현재 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는 여전히 사용자에게 다음을 사용하도록 안내하고 있습니다:

discourse/mail-receiver:release

따라서 최근 변경 사항 이후 Docker 이미지 게시 과정이 단순히 누락되었는지 궁금합니다.

새로운 discourse/mail-receiver:release 이미지가 빌드되고 게시되어야 하는지 확인해 주시겠습니까?

감사합니다!

업데이트: 현재 main 브랜치 테스트

현재 main 브랜치를 로컬에서 빌드하여 또 다른 문제를 발견했습니다.

기존 Docker Hub의 release 이미지는 여전히旧的 빠른 거부(fast-rejection) 코드를 실행하며, 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에는 여전히 해당 소켓이 참조되고 있습니다.

smtpd_recipient_restrictions에서 unix:private/policy를 제거하고 이미지를 다시 빌드한 후, 수신 SMTP 메일이 성공적으로 수락되었습니다.

Global API Key로 전환한 후 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 범위로만 설정된 키는 /admin/email/handle_mail에서 HTTP 404를 반환한 반면, Global API Key는 HTTP 200을 반환했습니다.

도움이 된다면 Dockerfile의 두 가지 오래된 private/policy 참조에 대한 PR을 제출할 수 있습니다.

2개의 좋아요

#mail-receiver의 다른 변경 사항에서 오래된 릴리스 이미지를 확인할 수 있습니다.

8월 11일에 병합된 이 PR을 열었습니다:

이 PR은 메일 리시버를 다음과 같이 변경합니다:

post.set_form_data(email: @mail)

Discourse에서 기대하는 새로운 email_encoded 매개변수로 변경됩니다.

PR이 병합된 후 8월 17일에 mail-receiver를 다시 빌드했지만, 새로 빌드된 컨테이너에는 여전히 다음 코드가 포함되어 있었습니다:

post.set_form_data(email: @mail)

병합된 PR에 세부 정보를 여기에 추가했습니다:

8월 22일에 다시 빌드했으며 ./launcher rebuild mail-receiver 명령은 게시된 릴리스 이미지가 최신 상태라고 보고했고, 다이제스트는 다음과 같았습니다:

sha256:2a0d45bb92a783c846a821e635413764eeadb3441ef6190085545a4bf054cb1e

제 설치 환경에서는 수신 메일이 여전히 정상 작동하지만, 수신된 각 메일은 게시된 이미지에 병합된 #37 변경 사항이 포함되어 있지 않기 때문에 Discourse의 다음 경고를 계속 트리거합니다:

the email parameter is deprecated

따라서 이는 여러분이 발견한 첫 번째 문제를 독립적으로 확인하는 것으로 보입니다: mail-receiver 저장소에 병합된 변경 사항이 게시된 discourse/mail-receiver:release 이미지에 반영되지 않고 있습니다.

1개의 좋아요