我在理解rfc4978时遇到了一些问题。
据我所知,服务器返回OK
包括命令名称后,所有东西都被压缩。然而,似乎我误解了几件事(因为[Gmail]/sfgs
没有重命名,显然该文件没有发送)。如何通过Openssl使用imap压缩与shell中的imap服务器通话?
$ cat deflatecommands /dev/stdin | socat - OPENSSL:imap.googlemail.com:993,compress=none
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT APPENDLIMIT=35882577 LIST-EXTENDED LIST-STATUS
a001 OK [email protected] authenticated (Success)
a002 OK Success
2016/04/28 21:47:03 socat[16204.25769803872] E SSL_write(): Broken pipe
其中deflatecommands包含:
a001 LOGIN myus.tyer mypassord
a002 COMPRESS DEFLATE
xÚK400VrõsôuUPŠvÏMÌ̉Õ/NK/[email protected]‰— Ô)
其解压缩,得到:
a001 LOGIN myus.tyer mypassord
a002 COMPRESS DEFLATE
a003 RENAME "[Gmail]/sfgs" "[Gmail]/xxxxxxxxxxx"
deflatecommands
当然的使用未压缩和压缩部分crfl
行结尾。
$ openssl zlib a003 > a003.zlib
$ cat a001 a002 a003.zlib > defaltecommands
由于我的连接速度,最后一件事情,没有任何事情发送之前'a002 OK Success'if打印在屏幕上。 – user2284570
我不确定这会起作用。所有三个命令都将在一个数据包中发送,但服务器在启用压缩时可能会刷新输入缓冲区。您可能需要在压缩和压缩命令之间暂停。另外,如果压缩部分中存在CRLF,那也是一个问题。您需要以二进制模式编辑文件,并确保没有明文CRLF。 – Max
@Max:''003.zlib'中没有未压缩的ᴄʀʟꜰ。再次,没有任何压缩的字节在GImap返回“OK成功”之前发送。 – user2284570