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

wzb*_*zon 44 terminal openssl imap

我想通过Mac OS X终端向服务器发送IMAP命令并获得响应.我可以使用以下行连接到服务器:

openssl s_client -connect imap.gmail.com:993
Run Code Online (Sandbox Code Playgroud)

我可以成功登录:

? LOGIN m.client2 passwordhere
Run Code Online (Sandbox Code Playgroud)

但是所有其他命令都不起作用,没有来自服务器的响应.我试过这个:

? LIST "" "*"
? SELECT INBOX
Run Code Online (Sandbox Code Playgroud)

wzb*_*zon 65

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

openssl s_client -connect imap.gmail.com:993 -crlf
Run Code Online (Sandbox Code Playgroud)

-crlf很关键

  • 显然,自从这篇文章发布以来,cmdline 语法已经收紧:新语法是:`openssl s_client -crlf localhost:993`。请注意,“-crlf”选项出现在主机名之前。 (2认同)

Gil*_*not 18

试试这个,这应该适合你(用你的第一行替换

openssl s_client -connect imap.gmail.com:993 -crlf
Run Code Online (Sandbox Code Playgroud)

命令(强制-crlf)&只键入蓝色部分):

在此输入图像描述


Ans*_*hul 5

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

a1 LOGIN m.client2 passwordhere 命令。

你有没有试过这个命令

a1能力

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


And*_*rds 5

需要考虑的其他几个选项:您可能正在连接到服务器产品STARTTLS(尤其是端口 143 上的 IMAP),在这种情况下,您可以告诉 openssl 继续进行协商,您需要指定您正在使用的协议(从pop3, imap, smtp, ftp); -crlf其他人已经提到过该选项,并且-showcerts如果我正在调试 SSL/TLS 配置,我也发现该选项很有用。例如,你最终可能会得到,

 openssl s_client -showcerts -connect target.server.name.here:143 -starttls imap
Run Code Online (Sandbox Code Playgroud)

如果您有相关手册页,则有更多选项,

man s_client
Run Code Online (Sandbox Code Playgroud)