Entrega direta: falha no recebimento de correio do LetsEncrypt (prop.ltcmp.net.key está incorreto) e não entrega devido a isso?

Ao usar a configuração de recebimento de e-mail com entrega direta conforme descrito, acabo obtendo os seguintes erros nos logs, que incluem tanto uma falha com o LetsEncrypt quanto um teste de entrada para “nobody@discourse.domain.tld” a partir de uma conta do Gmail:

<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

Minha configuração é tal que tenho outro servidor de e-mail em mail.domain.tld, mas o Discourse roda diretamente em domain.tld. discourse.domain.tld também é o nome de host do servidor Docker que está executando tanto os contêineres do Discourse quanto do mail-receiver.

Tenho também os seguintes registros MX:

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

O que pode estar errado aqui?

Uma coisa que notei, obviamente, foi que /letsencrypt/domain.tld/prop.ltcmp.net.key estava ausente no conteúdo da pasta:

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 ..

É interessante, pois isso remonta a essa pergunta aqui feita por @surety, que parece não ter recebido uma resposta direta.

O tópico lá parece continuar discutindo esse ponto, mas há tanta conversa naquele tópico agora que as coisas podem se tornar confusas, e é por isso que criei um tópico aqui (para alcançar maior clareza para futuros usuários com esse tipo de problema).

Parece que o valor da entrada POSTCONF_smtpd_tls_key_file no arquivo de configuração mail-receiver.yml, que é /letsencrypt/domain.tld/prop.ltcmp.net.key, deve ser substituído por /letsencrypt/domain.tld/domain.tld.key.

Portanto, a resposta à pergunta #1 de @surety é “SIM”, está correto substituir o conteúdo dessa entrada pelo que você vê. A #2 também parece estar correta ao permanecer como padrão.

Acredito que talvez @pfaffman ou @mpalmer devessem reescrever o script de criação do contêiner para usar o arquivo .key correto, em vez dessa entrada prop.ltcmp.net.key (que parece estar errada)…

Neste ponto, agora, felizmente, consigo avançar e ultrapassar a etapa de @mpalmer:

Você também pode tentar enviar um e-mail para nobody@forum.example.com. Embora o Discourse ainda não faça nada útil com ele, o e-mail que você enviou deve aparecer no seu painel de administração em “E-mails”, “Rejeitados” em questão de segundos. Se isso acontecer, você está definitivamente pronto para prosseguir.

Já que agora meu e-mail de teste está aparecendo na lista /admin/email/rejected do Discourse! :slight_smile:

Eu achei que fosse óbvio que prop.ltcmp.net era um espaço reservado, assim como domain.tld.

Com a migração para o Debian e o novo receptor de e-mail, pode ser que sejam necessárias outras alterações. Vou tentar dar uma olhada nos próximos dias, pois meus scripts de instalação podem ter sido quebrados por essas atualizações.

Interessante, por que você acha que isso é obviamente visto apenas como um espaço reservado? As siglas deveriam ser autoexplicativas? Se sim, então talvez possamos torná-las ainda mais evidentes com algo como: <REPLACE_THIS_WITH_LETSENCRYPT_DOT.KEY_FILE_PATH.key>