测试IMAP服务器
测试IMAP服务器需要使用一套不同的命令。粗体的行同样是你输入的命令。为了简洁起见,我只摘了服务器输出的一部分:
$ openssl s_client -connect mailserver.com:993
[...]
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
. login carla password
. OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE [...] LIST-STATUS QUOTA] Logged in
. list "" "*"
LIST (\HasChildren) "." "INBOX"
* LIST (\HasNoChildren) "." "INBOX.work"
* LIST (\HasNoChildren) "." "INBOX.personal"
* LIST (\HasNoChildren) "." "INBOX.Trash"
. examine INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft Junk NonJunk $Forwarded)
* OK [PERMANENTFLAGS ()] Read-only mailbox.
* 1 EXISTS
* 1 RECENT
* OK [UNSEEN 1] First unseen.
[...]
. OK [READ-ONLY] Select completed.
. fetch 1 rfc822.text
* 1 FETCH (RFC822.TEXT {9}
test message, do not read. Kthx.
)
. OK Fetch completed.
. logout结束会话。list "" "*"命令列出了你的所有邮箱,而examine INBOX意味着列出收件箱里面的邮件。fetch 1 rfc822.text只显示邮件文本,不显示标题。要注意开头的点;这是个命令标记,必须要有。标记可以是任何字符或字符组合,不得有空格,而且必须放在你输入的每个命令前面。IMAP 会用你选择的命令标记给其回复作上标记,不过不知什么原因,它把点换成了星号。如果你使用数字或字母,它就会使用那些数字或字母;你可以试用不同的标记,就很容易看到。IMAP允许多个连接,所以标记告诉你命令和响应属于哪一个连接。
RFC 1939详细描述了所有POP3命令和会话中的正确步骤,RFC 3501则详细描述了IMAP4。
测试远程连接速度
OpenSSL随带一个内置的基准测试套件,该套件含有连接测试速度:
$ openssl s_time -cipher DHE-RSA-AES256-SHA -connect mailserver.com:993
我拷贝了来自s_client会话的密文列表,服务器在其中告诉你它支持哪些密文。你还可以不用指定任何密文,就运行测试。OpenSSL会提出抱怨,但还是会运行测试。当你不指定密文时,运行起来速度通常比较慢,所以如果你的邮件客户端让你可以选择使用哪个密文,你可能会看到运行速度比较快。
你可以在任何服务器上使用这个命令,比如能够支持HTTPS的Web服务器:
$ openssl s_time -connect webserver.com:443
OpenSSL参考手册页不是很详细或很有帮助。要获得更多的信息,一个办法就是故意以错的方式运行命令,比如openssl s_time foo。OpenSSL在作出响应时会提供选项摘要。如果你更喜欢阅读出色的入门书,Joshua Davies所著的《使用密码和PKI实现SSL/TLS》(Implementing SSL / TLS Using Cryptography and PKI)是这方面的经典图书之一,而且该书内容很新。如果你不想花钱,可以下载OpenSSL源代码,研读与源代码捆绑的说明文档。
最后,为了供你参考备用,下面列出了Web服务器和邮件服务器的标准端口;当然,任何Linux系统上的/etc/services都含有完整的列表。
● smtp 25/tcp
● http 80/tcp
● pop3 110/tcp/udp
● imap4 143/tcp/udp
● https 443/tcp/udp
● ssmtp 465/tcp
● imaps 993/tcp/udp
● pop3s 995/tcp/udp