3

Я пытаюсь подключиться к серверу SMTP/POP через telnet (порты 25 и 110). Однако я не могу аутентифицировать себя. Всякий раз, когда я пытаюсь, это говорит (поп)

-ERR SPA Required, use AUTH or APOP

Что я поняла при некотором поиске, что SPA является собственностью Microsoft. Смогу ли я пройти аутентификацию, используя telnet?

1 ответ1

6

Может быть. Возможно, вам придется использовать openssl для обеспечения безопасности, прежде чем сервер сделает доступным простой метод аутентификации.

Сначала нужно проверить, какие механизмы AUTH доступны. Вы можете сделать это, передав команду AUTH без аргументов серверу pop:

$ 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

или, если у вас не установлен модуль perl MIME::Base64.

bash-$ printf '\000username\000password' | base64
AHVzZXJuYW1lAHBhc3N3b3Jk

Строка, возвращаемая этими командами, - это имя пользователя и пароль в кодировке base64, которые вы передаете команде 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 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .