2

这是设置:

[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 的代理/中继。

  1. 家用电子邮件设备应用程序连接到 Internet 上的代理/中继服务器。
  2. 家庭电子邮件设备应用程序连接到 localhost 上的 SMTP Postfix 端口。
  3. 家庭电子邮件应用程序在两个连接之间创建双向管道。
  4. 从 Internet 上的测试服务器,将支持 TLS 的 SMTP 客户端连接到代理/中继服务器。
  5. 代理/中继服务器在代理连接和来自家用电子邮件设备的预先存在的连接之间传输数据。
  6. SMTP 客户端执行 STARTTLS 协议。
  7. 家用电子邮件设备应用程序通过管道在代理/中继和本地主机 SMTP 之间传输数据,以通过 TLS 执行 SMTP。

我们使用 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 通常只是偶尔出现“工作”?我是否需要以某种方式冲洗管道或一些奇怪的东西.. 它一直说 Connected(000003) 但通常就是这样,没有证书信息。

一种理论是 tlsmgr 正在缓存会话,这就是为什么我没有看到 STARTTLS 的东西,因为它已经设置好了。

感谢任何有意见或想法的人。

4

1 回答 1

0

答案基本上是第 2 步需要在第 4 步之后进行,否则不会收到来自本地 SMTP/IMAP 服务器的初始响应,并且 STARTTLS 协议测试客户端无法工作,因为它们正在等待连接时的标准问候语。起初,本地邮件服务器早期连接的原始顺序似乎是有效的,因为明文 SMTP 命令稍后通过,但通常客户端希望在连接时接收某些消息。

于 2015-01-16T17:55:09.080 回答