SMTPエラー: STARTTLSコマンドを先に発行する必要があります

同様の問題が発生しています。昨日、新しいDiscourseインスタンスでメール送信のデバッグに約3時間費やしましたが、成功しませんでした。ポート587でSTARTTLS経由でFastmail経由でメールを送信しようとしています。同じ認証情報で他のサービスは動作しています。

これらの設定で「Must issue a STARTTLS command first」というエラー応答は得られません。

    DISCOURSE_SMTP_ADDRESS: 'smtp.fastmail.com'
    DISCOURSE_SMTP_PORT: 587
    DISCOURSE_SMTP_USER_NAME: 'myuser@fastmail.fm'
    DISCOURSE_SMTP_PASSWORD: 'mypass'
    DISCOURSE_SMTP_ENABLE_START_TLS: true

その後、./launcher rebuild appを実行し、./discourse-doctorを実行してメールを送信すると、応答で500 5.5.1 Invalid commandというエラーが発生します。

今日、tcpdumpで通信のトレースを開始したところ、Discourseは実際にはSTARTTLSを使用していないようです。Grafanaのリカバリメールを送信したときに発生したことは次のとおりです。

    < 220 smtp.fastmail.com ESMTP ready
    > EHLO 9b5ba1569f77
    < 250-smtp.fastmail.com
    < 250-PIPELINING
    < 250-SIZE 71000000
    < 250-ENHANCEDSTATUSCODES
    < 250-8BITMIME
    < 250 STARTTLS
    > STARTTLS
    < ...[encrypted]

しかし、Discourseでは次のようになります。

    < 220 smtp.fastmail.com ESMTP ready
    > EHLO localhost
    < 250-smtp.fastmail.com
    < 250-PIPELINING
    < 250-SIZE 71000000
    < 250-ENHANCEDSTATUSCODES
    < 250-8BITMIME
    < 250 STARTTLS
    > AUTH PLAIN [redacted]
    < 500 5.5.1 Invalid command

したがって、Discourseは設定でSTARTTLSが有効になっているにもかかわらず、認証情報を平文でインターネットに送信しているようです。これはバグでしょうか?

また、./discourse-doctorを実行すると、「YML SETTINGS」のサマリーの上部に次の項目が表示されることにも気づきました。

    ==================== YML SETTINGS ====================
    DISCOURSE_HOSTNAME=forum.[redacted]
    SMTP_ADDRESS=smtp.fastmail.com
    DEVELOPER_EMAILS=sysadmin@[redacted]
    SMTP_PASSWORD=[redacted]
    SMTP_PORT=587
    SMTP_USER_NAME=[redacted]@fastmail.fm
    LETSENCRYPT_ACCOUNT_EMAIL=

しかし、app.ymlで設定されているにもかかわらず、DISCOURSE_SMTP_ENABLE_START_TLSへの言及はありません。この問題が関連しているかどうかは不明です。

「いいね!」 2