直接配送:着信メールのLetsEncrypt失敗(prop.ltcmp.net.key が誤り)により、配送不能となりましたか?

この設定に従って直接配信メール受信設定を使用すると、以下のようなエラーがログに記録されます。これには、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 の最初の質問に対する答えは「はい」、このエントリの内容をあなたが目にするものに置き換えるのは正しいということです。2 番目の項目もデフォルトのままにしておくのが正しいようです。

おそらく @pfaffman または @mpalmer のどちらかが、この(明らかに誤った)prop.ltcmp.net.key エントリではなく、正しい .key ファイルを持つようにコンテナ作成スクリプトを再設計すべきだと考えます。

この時点で、私は幸運にも @mpalmer の次のステップから先に進むことができました:

また、nobody@forum.example.com にメールを送信することもできます。Discourse はまだそれに対して 有用な 処理を行いませんが、送信したメールは数秒以内に管理パネルの「Emails」→「Rejected」に表示されるはずです。それが表示されれば、間違いなく先に進んで大丈夫です。

なぜなら、私のテストメールが Discourse の /admin/email/rejected リストに表示されているからです! :slight_smile:}

prop.ltcmp.netdomain.tld と同様にプレースホルダーであることは明らかなと思っていました。

Debian への移行と新しいメール受信者の導入により、他の変更が必要になる可能性があります。これらの更新によりインストールスクリプトが壊れている可能性もあるため、今後数日中に確認してみます。

興味深いですね。なぜこれが明らかにプレースホルダーだと見なされるのでしょうか?略語は自明であるべきでしょうか?もしそうなら、より自明にするために、例えば<REPLACE_THIS_WITH_LETSENCRYPT_DOT.KEY_FILE_PATH.key>のような形にしてみましょうか。