ruby IMAP STARTTLS意味着自动断开连接?

ruby IMAP STARTTLS意味着自动断开连接?,ruby,imap,Ruby,Imap,我正在尝试编写一个简单的IMAP客户机,它连接到一个IMAP服务器,该服务器强制执行STARTTLS。 当我执行STARTTLS命令时,服务器连接被断开。另一方面,STARTTLS的文档有点单薄,无法确切了解问题所在 匿名命令: 1.9.2-p320-railsexpress :001 > require 'net/imap' => nil 1.9.2-p320-railsexpress :002 > imap = Net::IMAP.new('SOME_HOST', 14

我正在尝试编写一个简单的IMAP客户机,它连接到一个IMAP服务器,该服务器强制执行STARTTLS。 当我执行STARTTLS命令时,服务器连接被断开。另一方面,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中得到了相同的行为

这是正确的行为吗?如果是,如何将ruby与STARTTLS IMAP服务器一起正确使用


谢谢和问候

客户端和服务器都正常工作,直到客户端应该启动TLS协商为止。在这一点之后,IMAP层不知道会发生什么。您将在某处启用TLS调试日志记录,或嗅探网络数据包以取得进一步进展。

请花些时间为术语使用适当的大小写。imap是imap,starttls是starttls。它可以帮助人们了解你的要求。嗨!你解决问题了吗?我问是因为我有同样的问题。