2014-09-09 5 views
1

STARTTLS를 적용하는 IMAP 서버에 연결하는 간단한 IMAP 클라이언트를 작성하려고합니다. STARTTLS 명령을 실행하면 서버 연결이 끊어집니다. 반면에 STARTTLS에 대한 문서는 문제를 정확히 파악하기에 약간 가늘다.ruby ​​IMAP STARTTLS는 자동으로 연결이 끊어 졌음을 의미합니까?

익명의 명령은 :

1.9.2-p320-railsexpress :001 > require 'net/imap' 
=> nil 
1.9.2-p320-railsexpress :002 > imap = Net::IMAP.new('SOME_HOST', 143, false) 
=> #<Net::IMAP:0x0000000ba43138 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x0000000ba430e8>, @host="SOME_HOST", @port=143, @tag_prefix="RUBY", @tagno=0, @parser=#<Net::IMAP::ResponseParser:0x0000000ba42be8 @str="* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS LOGINDISABLED] Dovecot ready.\r\n", @pos=110, @lex_state=:EXPR_BEG, @token=nil, @flag_symbols={}>, @sock=#<TCPSocket:fd 9>, @usessl=false, @responses={}, @tagged_responses={}, @response_handlers=[], @tagged_response_arrival=#<MonitorMixin::ConditionVariable:0x0000000ba42ad0 @monitor=#<Net::IMAP:0x0000000ba43138 ...>, @cond=#<ConditionVariable:0x0000000ba42aa8 @waiters=[], @waiters_mutex=#<Mutex:0x0000000ba42a58>>>, @continuation_request_arrival=#<MonitorMixin::ConditionVariable:0x0000000ba42a30 @monitor=#<Net::IMAP:0x0000000ba43138 ...>, @cond=#<ConditionVariable:0x0000000ba42a08 @waiters=[], @waiters_mutex=#<Mutex:0x0000000ba429b8>>>, @idle_done_cond=nil, @logout_command_tag=nil, @debug_output_bol=true, @exception=nil, @greeting=#<struct Net::IMAP::UntaggedResponse name="OK", data=#<struct Net::IMAP::ResponseText code=#<struct Net::IMAP::ResponseCode name="CAPABILITY", data="IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS LOGINDISABLED">, text=" Dovecot ready.">, raw_data="* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS LOGINDISABLED] Dovecot ready.\r\n">, @client_thread=#<Thread:0x007f416ed31420 run>, @receiver_thread=#<Thread:0x0000000ba41b58 run>> 
1.9.2-p320-railsexpress :004 > imap.starttls 
=> #<struct Net::IMAP::TaggedResponse tag="RUBY0001", name="OK", data=#<struct Net::IMAP::ResponseText code=nil, text="Begin TLS negotiation now.">, raw_data="RUBY0001 OK Begin TLS negotiation now.\r\n"> 
1.9.2-p320-railsexpress :006 > imap.disconnected? 
=> true 

나는 2.0.0-P353-railsexpress에서 같은 동작을 얻을.

올바른 동작입니까, 그렇다면 올바르게 STARTTLS IMAP 서버에서 루비를 사용하는 방법은 무엇입니까?

감사합니다.

+0

용어에 대문자를 올바르게 사용하십시오. "imap"은 "IMAP"이고 "starttls"는 "STARTTLS"입니다. 그것은 사람들이 당신이 물어 본 것을 알아내는 데 도움이됩니다. –

+0

희망대로 조정 – scones

+0

안녕하세요! 문제를 해결 했니? 나는 같은 문제가 있기 때문에 물어 본다. –

답변

0

클라이언트와 서버 모두 클라이언트가 TLS 협상을 시작할 때까지 제대로 작동합니다. 그 시점 이후에 IMAP 계층은 어떤 일이 발생하는지 알지 못합니다. 어딘가에서 TLS 디버그 로깅을 사용하도록 설정하거나 네트워크 패킷을 스니핑하여 추가 진행을 진행할 것입니다.

관련 문제