【问题标题】:How to talk to IMAP server in Shell via OpenSSL如何通过 OpenSSL 在 Shell 中与 IMAP 服务器通信
【发布时间】:2013-02-04 06:00:59
【问题描述】:

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

openssl s_client -connect imap.gmail.com:993

我可以成功登录:

? LOGIN m.client2 passwordhere

但是所有其他命令都不起作用,服务器没有响应。例如,我尝试过:

? LIST "" "*"
? SELECT INBOX

【问题讨论】:

  • Mac OS X 终端不是 Bash。终端和shell不一样!
  • 这个命令序列(在选择收件箱之后)很有用:4 SEARCH SENTSINCE "14-Oct-2018",然后选择一个数字并执行5 FETCH XXXX (FLAGS BODY[HEADER.FIELDS (DATE FROM SUBJECT)] BODY[TEXT]) 以查看完整的电子邮件。

标签: terminal openssl imap


【解决方案1】:

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

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

-crlf很关键

【讨论】:

  • 我在寻找服务器忽略我所有命令的原因时遇到了这个问题。它会在一段时间不活动后超时,但只要我继续输入,连接就会保持打开状态(但它从未响应)。
  • Gmail 似乎在过去几天推出了更新,现在需要此选项。 Cyrus IMAPd 仍然没有必要。 (多年来,在没有-crlf 的情况下,我一直定期以这种方式连接所有 Gmail 访问权限,但从几天前开始,一些连接会挂起,而今天它们都挂起。)
  • 显然,自此发布以来,cmdline 语法已收紧:新语法为:openssl s_client -crlf localhost:993。请注意,-crlf 选项出现在主机名之前。
【解决方案2】:

试试这个,这应该对你有用(用你的

替换第一行
openssl s_client -connect imap.gmail.com:993 -crlf

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

【讨论】:

    【解决方案3】:

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

    a1 LOGIN m.client2 passwordhere 命令。

    你试过这个命令吗

    a1 能力

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

    【讨论】:

      【解决方案4】:

      需要考虑的更多选项:您可能正在连接到提供 STARTTLS 的服务器(尤其是端口 143 上的 IMAP),在这种情况下,您可以告诉 openssl 继续协商,您需要指定您使用的协议'正在使用(从pop3imapsmtpftp中选择); -crlf 选项已被其他人提及,如果我正在调试 SSL/TLS 配置,我还发现 -showcerts 选项很有用。因此,例如,您最终可能会得到,

       openssl s_client -showcerts -connect target.server.name.here:143 -starttls imap
      

      如果你有相关手册页的更多选项,

      man s_client
      

      【讨论】:

        猜你喜欢
        • 2016-08-23
        • 2011-09-23
        • 2021-12-29
        • 2015-11-23
        • 1970-01-01
        • 2011-06-09
        • 2011-11-03
        • 1970-01-01
        • 2020-05-13
        相关资源
        最近更新 更多