グループ用SMTP: ssl不正なバージョン番号エラー

こんにちは。

グループにSMTPを実装しようとしていますが、以下のエラーメッセージが表示され続けます。

image

しかし、インスタンスが使用しているのと同じSMTPサーバーを使用しており、app.ymlファイルで指定されているのと同じ認証情報を使用しても、同じエラーメッセージが表示されます…デフォルトの認証情報ではメールが完全に送信されているのに、なぜ動作が異なるのか理解できません。

SMTPサーバーのログには、Discourseサーバーからの接続が表示され、その後、以下のメッセージが表示されます。

smtp bad-input result=“500 5.5.1 Invalid command: Pipelining not supported”
smtp disconnected reason=“io-error: Connection reset by peer”

「いいね!」 1

Discourse は STARTTLS ではなく TLS を使用して SMTP サーバーに接続しようとしていると疑っています。

関連する設定をスクリーンショットで共有していただけますか?

ホスト名やユーザー名は伏せていただいて構いませんが、ポート情報やその他の設定はそのまま表示してください。

「いいね!」 1

設定は非常に古典的です。通常のポート587を使用し、starttlsはtrue(デフォルト値)です。

一般的な設定:

グループSMTPの場合:

tcpdumpを実行して何が起こっているか確認したところ、3つの異なる動作に気づきました。最初の2つのケースでは、このスレッドに記載されているとおりです

  1. 通常の使用
    ユーザーがトピックを作成したり、返信したりすると、他のユーザーは期待どおりにメール通知を受け取ります。
    また、管理インターフェイスからテストメールを送信しても問題なく、正しく送信され、受信されます。
    tcpdumpを使用すると、STARTTLS経由での接続など、正しいシーケンスが表示されます。

  2. Discourse-doctorとrake
    discourse-doctorまたはrake emails:testを使用すると、メールは送信されず、503 5.5.1 Invalid command: Command not supportedというエラーが発生します。

  3. グループSMTP
    グループSMTPをテストすると、TCPハンドシェイクの直後にDiscourseから「DATAフラグメント」パケットが表示され、SMTPサーバーは220 xxxxxxx ESMTP OpenSMTPDで応答し、その後500 5.5.1 Invalid command: Pipelining not supportedというメッセージが表示されます。

「いいね!」 1

587 は STARTTLS をサポートしますが、TLS はサポートしません(接続時)。

STARTTLS を許可するように、ここでオプションを変更する必要があります。

「SMTP に SSL を使用する」のチェックを外すと機能しますか?

残念ながら、動作しません。
「SMTPにSSLを使用」のチェックを外すと、次のエラーメッセージが表示されます。

image

認証情報は正しいとわかっているので、これは奇妙です。

tcpdumpで確認すると、以前の投稿でリンクした投稿で説明した「Discourse-doctorとrake」の場合と同じように動作します。
Discourseとsmtpサーバー間のやり取りは次のようになります。

< 220 [redacted] ESMTP ready
> EHLO [redacted]
< 250-[redacted]
< 250-PIPELINING
< 250-SIZE 36700160
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command : commande not supported

DiscourseがSTARTTLSを開始しようとしていないかのようです。以前の投稿でリンクした投稿で説明されていることとまったく同じです。

Discourse SMTP を ImprovMX のメールアドレスで動作するように設定しようとしたところ、私も同じ問題が発生しています。

何かご意見はありますか @supermathie