그룹용 SMTP: ssl 잘못된 버전 번호 오류

안녕하세요,

그룹용 SMTP를 구현하려고 시도하고 있지만, 계속해서 다음 오류 메시지가 발생합니다.

image

그런데 저는 인스턴스가 사용하는 것과 동일한 SMTP 서버를 사용하고 있으며, app.yml 파일에 지정된 동일한 자격 증명을 사용해도 동일한 오류 메시지가 나타납니다… 왜 다르게 동작하는지 이해가 되지 않습니다: 기본 자격 증명에서는 이메일이 완벽하게 전송됩니다.

SMTP 서버 로그에서 Discourse 서버에서 오는 연결을 확인한 후, 다음 메시지를 볼 수 있습니다

smtp bad-input result=“500 5.5.1 Invalid command: Pipelining not supported”
smtp disconnected reason=“io-error: Connection reset by peer”

Discourse가 STARTTLS가 아니라 TLS로 SMTP 서버에 연결을 시도하고 있는 것 같습니다.

관련 설정 사항을 캡처해 주실 수 있나요?

구체적인 호스트명과 사용자 이름은 삭제해 주시고, 포트 정보와 기타 설정은 그대로 남겨 주세요.

설정은 상당히 전형적인 형태입니다: 일반적인 587 포트와 starttls가 true(기본값)로 설정되어 있습니다.

전체 설정:

그룹 smtp 설정:

tcpdump를 사용하여 어떤 일이 일어나고 있는지 확인해 보았는데, 3가지 다른 동작을 발견했습니다. 첫 두 가지 경우의 경우, 이 스레드에 설명된 것과 정확히 동일합니다.

  1. 정상 사용

사용자가 주제를 생성하거나 답변을 작성하는 등 작업을 수행하면, 다른 사용자에게 이메일 알림이 예상대로 수신됩니다.
또한 관리 인터페이스를 통해 테스트 이메일을 보내는 경우에도 문제가 없이 잘 보내지고 잘 수신됩니다.

tcpdump를 보면 STARTTLS를 통해 연결하는 등 올바른 순서가 표시됩니다.

  1. Discourse-doctor 및 rake

discourse-doctor 또는 rake emails:test를 사용할 때
이메일이 전송되지 않으며 다음 오류가 발생합니다: 503 5.5.1 Invalid command: Command not supported

  1. 그룹 smtp

그룹 smtp를 테스트할 때, TCP 핸드셰이크 직후 Discourse에서 “DATA fragment” 패킷이 오는 것을 볼 수 있으며, smtp 서버는 220 xxxxxxx ESMTP OpenSMTPD로 응답한 후 500 5.5.1 Invalid command: Pipelining not supported 메시지를 보내고 있습니다.

587은 STARTTLS는 지원하지만 TLS(연결 시점)는 지원하지 않습니다.

여기서 옵션을 수정하여 STARTTLS를 허용하도록 해야 합니다.

“SMTP에 SSL 사용” 옵션을 해제하면 작동하나요?

불행히도 작동하지 않습니다.
“Use SSL for SMTP” 옵션을 해제하면 다음 오류 메시지가 표시됩니다:

image

제 인증 정보는 정확하다고 알고 있으므로 기묘한 일입니다.

tcpdump로 확인해 보면, 이전에 “Discourse-doctor and rake” 사례에 대해 설명했던 것과 동일한 방식으로 동작합니다.
Discourse와 SMTP 서버 간의 통신은 다음과 같습니다:

< 220 [redacted] ESMTP ready
> EHLO [redacted]
< 250-[redacted]
< 250-PIPELINING
< 250-SIZE 36700160
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command : commande not supported

Discourse가 STARTTLS를 시작하려고 하지 않는 것처럼 보입니다. 이전 게시글에서 링크한 글에 설명된 내용과 정확히 일치합니다.

지금 ImprovMX 이메일 주소와 함께 Discourse SMTP를 설정하려고 하는데 같은 문제가 발생하고 있습니다.

@supermathie, 혹시 의견이 있으신가요?