web-dev-qa-db-ja.com

Telnet経由でPOP / SMTPサーバーに接続する

Telnet(ポート25および110)経由でSMTP/POPサーバーに接続しようとしています。ただし、自分自身を認証することはできません。私がしようとするたびに、それは(ポップ)と言います

-ERR SPA Required, use AUTH or APOP

いくつかの検索で私が理解していることは、SPAはMicrosoftの特性であるということです。 telnetを使用して認証できますか?

3
Ankit

多分。サーバーがプレーン認証メソッドを使用可能にする前に、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セッションで行う方法でサーバーと対話できます。

6
Tim Kennedy