메일 관련 가능한 버그: 인증서 검증 실패 (로컬 발급자 인증서를 가져올 수 없음)

새 서버에 Discourse를 설치했는데, 메일 관련 문제가 발생했습니다. (certificate verify failed (unable to get local issuer certificate)) 같은 주소로 Mac과 iPhone에서는 메일을 보내고 받을 수 있었고, 인증서 관련 경고나 오류도 없었습니다.

여기 가이드를 참고하여 테스트를 다시 수행했는데 성공했습니다: How to Test SMTP AUTH using Telnet [] 결과: 235 2.7.0 Authentication successful.

결국 다른 스레드에서 @Falco님이 게시한 내용을 따라 app.yml에 다음 내용을 추가했습니다:

  DISCOURSE_SMTP_ENABLE_START_TLS: false
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

하지만 같은 메일과 동일한 자격 증명이 다른 곳에서는 정상적으로 작동하므로 버그인 것 같습니다. 혹시 모를 상황에 대비하여 여기에 게시합니다.

확인하신 오류는 메일 프로토콜과 관련이 있으며, 특정 수신 주소와는 무관합니다. 어떤 이유로든 Discourse 인스턴스가 대상 메일 서버와 TLS 연결을 협상하지 못하고 있습니다. 메일 전송 연결 시 TLS 협상을 비활성화함으로써 문제를 해결했습니다.

휴대폰을 사용하는 경우, 메시지가 다른 서버를 통해 전송되고 있을 가능성이 높습니다. 동일한 대상 서버를 사용하는 경우라면, 휴대폰은 TLS를 올바르게 협상할 수 있습니다.

Chris, 이 문제를 어떻게 해결할 수 있을까요? 아이디어가 있으신가요?

Mac과 iPhone 모두 동일한 mail.domain 서버를 사용하여 메일을 보내도록 설정되어 있으며, 이 테스트를 수행했을 때 성공적이었습니다(다만 이것이 Discourse가 수행하는 것과 얼마나 밀접하게 일치하는지는 확실하지 않습니다).

시계가 크게 틀어져 있으면, 만료되지 않은 인증서가 만료된 것처럼 보일 수 있습니다. 메일 제공자가 사용하는 SSL 라이브러리가 불완전할 수도 있습니다.

“보안 비활성화” 버튼을 클릭하는 것은 절대 권장되지 않습니다.

서버 시간은 정확합니다, Sam. Discourse가 메일 서버에 어떤 SSL 라이브러리를 요구하나요?

이것이 기이한 점은 (Apple) Mail이 일반적으로 문제가 발생하면 매우 빠르게 경고하는데, 같은 이메일이 제 Mac에서는 정상적으로 작동한다는 것입니다.

제가 생각할 수 있는 다른 유일한 원인은 DNS 전파입니다. 이 서버는 새 서버이고, 이전 서버에서는 이메일 호스트가 약간 달랐기 때문입니다(다만 이메일은 포럼과 동일한 서버에서 호스팅되고 있으므로 이것이 문제가 될 것 같지는 않습니다).

샘, 고마워! 해결했어!

어떤 이유에선지 Postfix에서 chain.pem을 설정하는 걸 잊고 있었어 :smiling_face: