我正在尝试通过telnet(端口25和110)连接到SMTP / POP服务器。但是,我无法验证自己的身份。每当我尝试时,它说(pop)
-ERR SPA Required, use AUTH or APOP
通过一些搜索,我了解到SPA是Microsoft的财产。我可以使用telnet进行身份验证吗?
可能是。在服务器使普通身份验证方法可用之前,您可能需要使用openssl来提供安全性。
首先,您需要检查可用的AUTH机制。您可以通过将AUTH
不带任何参数的命令传递给弹出服务器来做到这一点:
$ telnet pop-server.example.com 110
Trying 10.10.10.10...
Connected to pop-server.example.com
Escape character is '^]'.
+OK The Microsoft Exchange POP3 service is ready.
AUTH
+OK
NTLM
GSSAPI
PLAIN
.
quit
+OK Microsoft Exchange Server 2010 POP3 server signing off.
好的。(无论如何,出于我们的目的)此服务器允许使用纯AUTH。现在,您需要构建您的身份验证字符串,该字符串是用户名和密码的结合,然后进行base64编码。
明确要求AUTH字符串的格式为<NUL>username<NUL>password
。您可以通过多种方式将这些信息放在一起。您可以使用perl或printf命令。
bash-$ perl -MMIME::Base64 -e 'print encode_base64("\000username\000password");'
AHVzZXJuYW1lAHBhc3N3b3Jk
或者,如果您没有安装MIME :: Base64 perl模块。
bash-$ printf '\000username\000password' | base64
AHVzZXJuYW1lAHBhc3N3b3Jk
这些命令返回的字符串是传递给AUTH命令的base64编码的用户名和密码。
现在,您到流行服务器的身份验证会话如下所示:
$ telnet pop-server.example.com 110
Trying 10.10.10.10...
Connected to pop-server.example.com
Escape character is '^]'.
+OK The Microsoft Exchange POP3 service is ready.
AUTH PLAIN
+
AHVzZXJuYW1lAHBhc3N3b3Jk
+OK Logged in.
现在,您可以做您需要做的事情。但是,服务器可能不允许您在未加密的会话中使用AUTH PLAIN。在这种情况下,您可能必须使用openssl而不是telnet来管理pop3会话。
openssl s_client -connect pop-server.example.com:995
现在,您的会话将受到SSL / TLS的保护,您可以继续使用上面概述的AUTH方法与pop3服务器进行交互。
bash-$ openssl s_client -connect pop-server.example.com:995
CONNECTED(00000003)
<snip a bunch of ssl cruft>
SSL-Session:
Protocol : TLSv1
Cipher : AES128-SHA
Session-ID: blahblahblah
Session-ID-ctx:
Master-Key: blahblahblah
Key-Arg : None
Start Time: 1320992572
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
+OK The Microsoft Exchange POP3 service is ready.
从这里,您可以以通常在直接telnet会话中进行的任何方式与服务器进行交互。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句