Terminal 如何通过OpenSSL与Shell中的IMAP服务器通信

Terminal 如何通过OpenSSL与Shell中的IMAP服务器通信,terminal,openssl,imap,Terminal,Openssl,Imap,我想通过MacOSX终端向服务器发送IMAP命令并获得响应。我可以使用以下线路连接到服务器: openssl s_client -connect imap.gmail.com:993 我可以成功登录: ? LOGIN m.client2 passwordhere 但所有其他命令都不起作用,服务器没有响应。例如,我试过: ? LIST "" "*" ? SELECT INBOX 试试这个,这个应该适合你(用你的 openssl s_client -connect imap.gmail.com

我想通过MacOSX终端向服务器发送IMAP命令并获得响应。我可以使用以下线路连接到服务器:

openssl s_client -connect imap.gmail.com:993
我可以成功登录:

? LOGIN m.client2 passwordhere
但所有其他命令都不起作用,服务器没有响应。例如,我试过:

? LIST "" "*"
? SELECT INBOX

试试这个,这个应该适合你(用你的

openssl s_client -connect imap.gmail.com:993 -crlf
命令(强制-crlf)&仅键入蓝色部分:


在朋友的帮助下发现错误:

openssl s_client -connect imap.gmail.com:993 -crlf

-crlf至关重要

首先,您的gmail帐户是否激活了imap??? 如果您能够成功登录,这意味着ssl工作正常。 你得到的返回码是什么

a1 LOGIN m.client2 passwordhere命令

你试过命令了吗

a1能力

尝试其他替代命令,因为并非所有IMAP服务器都实现所有IMAP命令。
我在为gmail RedifMail yahoo等不同供应商创建数据迁移工具时遇到了这个问题…

还有一些选项需要考虑:您可能正在连接提供STARTTLS的服务器(尤其是端口143上的IMAP),在这种情况下,您可以告诉openssl继续协商这个问题,您需要指定正在使用的协议(从
pop3
imap
smtp
ftp
)中选择);其他人已经提到了
-crlf
选项,我还发现
-showcerts
选项在调试SSL/TLS配置时非常有用。比如你可能会

 openssl s_client -showcerts -connect target.server.name.here:143 -starttls imap
如果您有相关手册页的更多选项

man s_client

MacOSX终端不是akaBash。端子和外壳不一样!此命令序列(在选择收件箱后)非常有用:
4搜索Sent自“2018年10月14日”
,然后选择一个数字并执行
5获取XXXX(标志BODY[HEADER.FIELDS(主题日期)]BODY[TEXT])
,以查看完整的电子邮件。我遇到此问题是为了寻找服务器忽略我所有命令的原因。在一段时间的不活动后,它会超时,但只要我继续键入,连接就会保持打开状态(但它从未响应)。Gmail似乎在过去几天推出了一个更新,现在需要这个选项。这对Cyrus IMAPd来说还是没有必要的。(多年来,我在没有
-crlf
的情况下定期以这种方式连接所有Gmail访问,但从几天前开始,一些连接会挂起,今天它们都挂起了。)显然,自发布此帖子以来,cmdline语法已经收紧:新语法是:
openssl s_客户端-crlf localhost:993
。请注意,
-crlf
选项出现在主机名之前。