2015-01-15 7 views
2

여기에 설정입니다 :이중 파이프는 SMTP에 대한 NAT 뒤에 TLS를 중계하는 것 같다하지만 때로는

[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. 가정용 전자 제품 응용 프로그램은 인터넷의 프록시/릴레이 서버에 연결됩니다.
  2. 가정용 전자 제품 응용 프로그램은 localhost의 SMTP Postfix 포트에 연결합니다.
  3. 자택 이메일 응용 프로그램은 두 연결 사이에 양방향 파이프를 만듭니다.
  4. 인터넷의 테스트 서버에서 TLS 가능 SMTP 클라이언트를 프록시/릴레이 서버에 연결하십시오.
  5. 프록시/릴레이 서버는 프록시 연결과 홈 이메일 어플라이언스에서 기존 연결 사이의 데이터를 전송합니다.
  6. SMTP 클라이언트가 STARTTLS 프로토콜을 수행합니다.
  7. 가정용 전자 기기 응용 프로그램은 TLS를 통한 SMTP를 수행하기 위해 파이프를 통해 프록시/릴레이와 로컬 호스트 SMTP간에 데이터를 전송합니다.

우리는 openssl s_client를 사용하여 NAT 뒤의 클라이언트로 데이터를 앞뒤로 전송하는 프록시/릴레이 서버에 대한 TL 연결을 테스트합니다.

일반 텍스트에 잘 작동하지만 TLS에서 일관되게 작동하는지 잘 모르겠습니다. SSL 인증서 등을 사용하여 출력물을 얻는 경우가 종종 있지만 openssl s_client 명령을 사용하지만 일반적으로 CONNECTED라고 표시되고 거기에 앉아 있습니다. 그러한 경우에 작동하는지 확신하지 못합니다.

기본적으로 후위와 컴퓨터에 NAT (라우터) 뒤에 실행의이 코드는 (일부 보안 물건이있다 그러나 이것은 기본적이다) :

나는 밖으로 내려고 노력하고 무엇
proxyOutgoing = net.connect(proxyport, proxyhost) 
localSMTP = net.connect(587, 'localhost') 
localSMTP.pipe(proxyOutgoing).pipe(localSMTP) 

가있다 openssl s_client 테스트 또는 TLS가 일반적으로 '작동'하는 것으로 나타나는 경우가 종종 발생합니다. 어떻게 든 파이프 또는 이상한 것을 내뿜을 필요가 있나요? 그것은 Connected (000003)라고 말하고 있지만 대개 그냥 인증서 정보가 없습니다.

하나의 이론은 tlsmgr이 세션을 캐싱하고 있다는 것이므로 이미 설정 한 이후 STARTTLS 항목을 보지 못했습니다.

의견이나 아이디어를 가진 사람에게 감사드립니다.

+0

이 코드가 무엇이고 어떤 부분에 연결되어 있는지 이해하는 데 어려움을 겪고 있습니다. 아마도 다이어그램일까요? –

+0

감사합니다. 나는 그것을 훨씬 분명하게 만들었습니다. –

답변

0

대답은 기본적으로 2 단계가 4 단계 이후에 필요하다는 것입니다. 그렇지 않으면 로컬 SMTP/IMAP 서버의 초기 응답이 수신되지 않고 표준 인사말을 기다리고 있기 때문에 STARTTLS 프로토콜 테스트 클라이언트가 작동하지 않습니다. 잇다. 처음에는 일반 메일 서버가 초기에 연결되어있는 것처럼 보였으므로 일반 텍스트 SMTP 명령은 나중에 사용되었으므로 일반적으로 클라이언트는 연결시 특정 메시지를받을 것으로 예상합니다.