我正在编写一个 Perl 脚本来连接到需要通过端口 143 进行 TLS 的 IMAP 服务器。该服务器不支持通过 SSL 进行连接。到目前为止,我发现的 Perl IMAP 模块仅支持 SSL,不支持 TLS。
有没有提供 TLS 支持的 Perl IMAP 模块?到目前为止,我已经看过:
网络::IMAP 网络::IMAP::简单 网络::IMAP::客户端
Net::IMAP::Client 支持 SSL 但不支持 TLS。
有什么想法吗?
最佳答案
是的,但是 TLS != SSL。要使 TLS 工作,您需要创建一个普通套接字,处理 IMAP STARTTLS 命令,然后将其转换为 SSL 套接字。虽然 IO::Socket::SSL 可以像这样“升级”套接字,但 STARTTLS 协商是 IMAP 协议(protocol)的一部分,因此不是“重新发明轮子”——你让 IMAP 客户端模块的每个用户重新发明轮子必须“手动”处理在此过程中出现的协议(protocol)部分(包括任何其他点点滴滴,例如空闲事件)!
我想也许可以打开一个套接字,转储收到的所有内容,然后只向其中发送“STARTTLS\r\n”,然后调用 start_SSL 并希望一切顺利。当然,那里没有能力检查,除非您手动执行此操作,为此您必须查看 IMAP RFC。
Mail::IMAPClient 内置了 TLS 处理,尽管在我只想下载某些部分的情况下我在处理多部分消息时遇到了问题 - 如果您要抓取整个消息这没关系。不过,对我来说,搜索仍在继续!
关于perl - 是否有支持 TLS 的 Perl IMAP 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826266/