리버스 프록시(http(s), SMTP) 뒤에 있는 셀프호스팅 Discourse 인스턴스에 대한 수신 이메일 설정을 시도하고 있습니다. 공개 도메인: public.example.com, 리버스 프록시 뒤의 호스트: internal.example.com. 해당 매뉴얼을 따랐으나 인증서 오류로 인해 막혀 있을 가능성이 있습니다. 리버스 프록시와 Discourse 컨테이너 사이의 내부 암호화에는 자체 서명 인증서를 사용하고 있습니다. 메일 컨테이너는 Discourse 컨테이너가 제시하는 자체 서명 인증서에 문제가 있는 것 같습니다. 해당 인증서는 체인된 인증서임에도 불구하고요. 무엇을 잘못했거나, 이 문제를 어떻게 더 디버깅할 수 있을까요?
메일 수신 컨테이너의 (관련) 로그 출력(./launcher logs mail-receiver)은 다음과 같습니다:
May 21 15:34:06 internal-mail-receiver postfix/qmgr[101]: BA3E16FDE7: from=<foo@example.com>, size=3836, nrcpt=1 (queue active)
<23>May 21 15:34:06 receive-mail[113]: Recipient: nobody@public.example.com<19>May 21 15:34:06 receive-mail[113]: Failed to POST the e-mail to https://internal.example.com/admin/email/handle_mail: SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate) (OpenSSL::SSL::SSLError)<19>May 21 15:34:06 receive-mail[113]: /usr/lib/ruby/2.7.0/net/protocol.rb:44:in `connect_nonblock'
/usr/lib/ruby/2.7.0/net/protocol.rb:44:in `ssl_socket_connect'
/usr/lib/ruby/2.7.0/net/http.rb:1009:in `connect'
/usr/lib/ruby/2.7.0/net/http.rb:943:in `do_start'
/usr/lib/ruby/2.7.0/net/http.rb:932:in `start'
/usr/lib/ruby/2.7.0/net/http.rb:1483:in `request'
/usr/local/lib/site_ruby/mail_receiver/internal_mail_receiver.rb:43:in `process'
/usr/local/bin/receive-mail:13:in `<main>'May 21 15:34:06 internal-mail-receiver postfix/pipe[112]: BA3E16FDE7: to=<nobody@public.example.com>, relay=discourse, delay=0.39, delays=0.19/0.01/0/0.2, dsn=4.3.0, status=deferred (temporary failure)
메일 컨테이너의 (관련 부분의) 설정 파일 mail-receiver.yml은 다음과 같습니다:
env:
POSTCONF_smtpd_tls_key_file: /ssl/ssl.key
POSTCONF_smtpd_tls_cert_file: /ssl/ssl.crt
POSTCONF_smtpd_tls_security_level: may
DISCOURSE_MAIL_ENDPOINT: 'https://internal.example.com/admin/email/handle_mail'
volumes:
- volume:
host: /var/discourse/shared/standalone/ssl
guest: /ssl
비밀 키 ssl.key에는 (내부) 서버의 비밀 키가 포함되어 있습니다. 체인된 인증서 ssl.crt에는 서버 인증서 + CA 인증서가 포함되어 있습니다. (신규 사용자인 관계로 파일 업로드 권한이 없어 현재 ssl.crt를 제공할 수 없습니다)