직접 전달: 수신 메일 LetsEncrypt 오류(prop.ltcmp.net.key가 잘못됨) 및 이로 인한 미전달?

이 문서에 따라 직접 전달 이메일 수신 설정(direct-delivery email receivership setup)을 사용했을 때, 로그에 다음 오류가 발생합니다. 이 오류에는 Let’s Encrypt 관련 실패와 Gmail 계정에서 "nobody@discourse.domain.tld"로 전송된 수신 테스트가 모두 포함되어 있습니다:

<22> postfix/master[1]: daemon started -- version 3.1.1, configuration /etc/postfix
<20> postfix/smtpd[97]: warning: cannot get RSA private key from file "/letsencrypt/domain.tld/prop.ltcmp.net.key": disabling TLS support
<20> postfix/smtpd[97]: warning: TLS library problem: error:02001002:system library:fopen:No such file or directory:bss_file.c:402:fopen('/letsencrypt/domain.tld/prop.ltcmp.net.key','r'):
<20> postfix/smtpd[97]: warning: TLS library problem: error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:404:
<20> postfix/smtpd[97]: warning: TLS library problem: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib:ssl_rsa.c:633:
<22> postfix/smtpd[97]: connect from mail-qk1-f180.google.com[209.85.222.180]
<22> postfix/smtpd[97]: lost connection after STARTTLS from mail-qk1-f180.google.com[209.85.222.180]
<22> postfix/cleanup[101]: 20A0CBCE22: message-id=<20191115221116.20A0CBCE22@discourse-mail-receiver.localdomain>
<22> postfix/qmgr[83]: 20A0CBCE22: from=<double-bounce@discourse-mail-receiver.localdomain>, size=900, nrcpt=1 (queue active)
<22> postfix/smtpd[97]: disconnect from mail-qk1-f180.google.com[209.85.222.180] ehlo=1 starttls=0/1 commands=1/2
<22> postfix/smtp[103]: 20A0CBCE22: to=<postmaster@discourse-mail-receiver.localdomain>, orig_to=<postmaster>, relay=none, delay=0.01, delays=0.01/0/0/0, dsn=5.4.4, status=bounced (Name service error for name=discourse-mail-receiver.localdomain type=AAAA: Malformed or unexpected name server reply)
<20> postfix/bounce[104]: warning: 20A0CBCE22: undeliverable postmaster notification discarded
<22> postfix/qmgr[83]: 20A0CBCE22: removed

제 구성은 mail.domain.tld에 별도의 메일 서버가 있지만, Discourse는 domain.tld에서 직접 실행되도록 되어 있습니다. discourse.domain.tld는 Discourse와 mail-receiver 컨테이너를 모두 실행 중인 Docker 서버의 호스트명입니다.

또한 다음과 같은 MX 레코드를 가지고 있습니다:

domain.tld > mail.domain.tld            priority: 10
d > discourse.domain.tld                priority: 20
domain.tld > discourse.domain.tld       priority: 30

여기서 무엇이 잘못되고 있을까요?

분명히 눈에 띈 한 가지 사실은, 폴더 내용에서 /letsencrypt/domain.tld/prop.ltcmp.net.key가 누락되어 있다는 점이었습니다:

discourse-mail-receiver:/# ls -tlrha letsencrypt/domain.tld
total 40
-rw-r--r--    1 root     root        3.2K Nov 10 05:10 domain.tld.key
-rw-r--r--    1 root     root         208 Nov 10 05:10 domain.tld.csr.conf
-rw-r--r--    1 root     root        1.6K Nov 10 05:10 domain.tld.csr
-rw-r--r--    1 root     root        2.2K Nov 10 05:10 domain.tld.cer
-rw-r--r--    1 root     root        3.8K Nov 10 05:10 fullchain.cer
-rw-r--r--    1 root     root        1.6K Nov 10 05:10 ca.cer
drwxr-xr-x    3 root     root        4.0K Nov 10 05:10 .
-rw-r--r--    1 root     root         799 Nov 11 15:56 domain.tld.conf
drwxr-xr-x    2 root     root        4.0K Nov 11 27 15:56 backup
drwxr-xr-x    8 root     root        4.0K Nov 16 00:49 ..

이것은 @surety가 여기에서 제기한 질문으로 거슬러 올라가며, 해당 질문에는 직접적인 답변이 주어지지 않은 것으로 보입니다.

해당 스레드에서는 이 지점에 대한 논의가 계속되고 있지만, 이제 그 스레드에는 많은 잡담이 섞여 있어 상황이 혼란스러울 수 있습니다. 그래서 저는 (이러한 문제를 겪는 미래의 사용자들에게 더 큰 명확성을 제공하기 위해) 여기에 별도의 토픽을 생성했습니다.

mail-receiver.yml 설정의 POSTCONF_smtpd_tls_key_file 항목 값인 /letsencrypt/domain.tld/prop.ltcmp.net.key를 /letsencrypt/domain.tld/domain.tld.key로 대체해야 하는 것으로 보입니다.

따라서 @surety의 1번 질문에 대한 답은 "예"입니다. 이 항목의 내용을 확인하신 것으로 대체하는 것이 정확합니다. 2번도 기본값으로 두는 것이 올바른 것으로 보입니다.

@pfaffman 또는 @mpalmer 중 한 명이 컨테이너 생성 스크립트를 다시 작성하여 이(명백히 잘못된) prop.ltcmp.net.key 항목 대신 올바른 .key 파일을 사용하도록 해야 한다고 생각합니다.

이 시점에서 저는 다행히 @mpalmer의 다음 단계를 넘어갈 수 있게 되었습니다:

또한 nobody@forum.example.com으로 이메일을 보내는 것을 시도해 볼 수도 있습니다. 아직 Discourse가 이를 유용하게 처리하지는 않지만, 보낸 이메일은 몇 초 안에 관리자 패널의 “Emails”, “Rejected” 섹션에 표시되어야 합니다. 이것이 발생하면 확실히 진행할 준비가 된 것입니다.

이제 제 테스트 이메일이 Discourse의 /admin/email/rejected 목록에 표시되고 있기 때문입니다! :slight_smile:

prop.ltcmp.net은 domain.tld와 마찬가지로 단순한 플레이스홀더라고 생각했습니다.

Debian으로의 마이그레이션과 새로운 메일 수신기 도입 외에도 필요한 변경 사항이 있을 수 있습니다. 이러한 업데이트로 인해 설치 스크립트가 깨졌을 수 있으므로, 앞으로 며칠 내에 확인해 보겠습니다.

흥미롭네요. 왜 이것이 단순히 자리 표시자로 여겨지는지 어떻게 생각하시나요? 약어는 스스로 명확해야 하는 걸까요? 그렇다면, <REPLACE_THIS_WITH_LETSENCRYPT_DOT.KEY_FILE_PATH.key>처럼 더 명확하게 만들어드리죠.