セットアップは次のとおりです。
[Proxy/Relay Server] <---------[(SMTP TLS test client) Test server]
^
|
(Internet) v
--------------+-----------------
|
[Router]
|
|
[ Home email appliance machine
|
(Home email server app (Node.js))
|
(Postfix) ]
したがって、この小さなサーバーは自宅の NAT の背後にあります。外部サーバーは、IMAP および SMTP のプロキシ/リレーとして使用されます。
- ホーム メール アプライアンス アプリケーションは、インターネット上のプロキシ/リレー サーバーに接続します。
- ホーム電子メール アプライアンス アプリケーションは、localhost の SMTP Postfix ポートに接続します。
- ホーム メール アプリケーションは、2 つの接続間に双方向のパイプを作成します。
- インターネット上のテスト サーバーから、TLS 対応の SMTP クライアントをプロキシ/リレー サーバーに接続します。
- プロキシ/リレー サーバーは、プロキシ接続と家庭用電子メール アプライアンスからの既存の接続との間でデータを送信します。
- SMTP クライアントは STARTTLS プロトコルを実行します。
- ホーム電子メール アプライアンス アプリケーションは、プロキシ/リレーとローカルホスト SMTP の間でパイプを介してデータを転送し、SMTP over TLS を実行します。
openssl s_client を使用して、プロキシ/リレー サーバーへの TL 接続をテストします。プロキシ/リレー サーバーは、NAT の背後にあるクライアントとの間でデータを送受信します。
プレーンテキストではうまく機能しますが、TLS で一貫して機能するかどうかはわかりません。ときどき、openssl s_client コマンドから SSL 証明書などを含む完全な出力が得られることがありますが、通常は CONNECTED とだけ表示され、そこに座っています。そのような場合に機能するかどうかはわかりません。
基本的に、このコードは、Postfix を使用するコンピューターの NAT (ルーター) の背後で実行されます (いくつかのセキュリティ機能がありますが、基本的にはこれだけです):
proxyOutgoing = net.connect(proxyport, proxyhost)
localSMTP = net.connect(587, 'localhost')
localSMTP.pipe(proxyOutgoing).pipe(localSMTP)
私が理解しようとしているのは、openssl s_client テストまたは一般的な TLS が時々「機能している」ように見えるだけの原因となるこの基本的な考え方について何かがあるということですか? どうにかしてパイプをフラッシュする必要がありますか、それとも何か奇妙なことをする必要がありますか.
1 つの理論は、tlsmgr がセッションをキャッシュしているというものです。これが、すでにセットアップされているため、STARTTLS が表示されない理由です。
コメントやアイデアをお持ちの方に感謝します。