Telnet(ポート25および110)経由でSMTP/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 :: Base64Perlモジュールがインストールされていない場合。
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.
今、あなたはあなたがする必要があることをすることができます。 ただし、サーバーは、暗号化されていないセッションでAUTHPLAINを使用することを許可しない場合があります。その場合、pop3セッションを管理するために、telnetの代わりにopensslを使用する必要があるかもしれません。
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セッションで行う方法でサーバーと対話できます。