Підключення до сервера POP / SMTP через Telnet


3

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

-ERR SPA Required, use AUTH or APOP

Що я розумію під деяким пошуком, що SPA - це власне керівництво Microsoft. Чи зможу я автентифікуватись за допомогою telnet?


Якщо вам потрібно включити SPA для автентифікації за допомогою клієнта, то це те саме для telnet, ви не зможете авторизуватися, якщо сервер налаштований приймати лише SPA.
Павло

Відповіді:


6

Може бути. Вам може знадобитися використовувати 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

Рядок, який ці команди повертають, - це закодовані ім'я користувача та пароль 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.


Дякую за чудову відповідь. Мій сервер наразі дозволяє лише NTLM. Я попросив адміністратора додати більше варіантів аутентифікації. Я багато чого навчився з цієї посади. :)
Анкіт

@Ankit: NTLM складніше, тому що ви повинні прочитати виклики, кодовані base64, і створити відповідні відповіді, що не вдається зробити вручну. (див. тут: msdn.microsoft.com/en-us/library/cc246870%28v=prot.10%29.aspx, якщо ви хочете прочитати більше про це.) MuttПоштовий клієнт підтримує NTLM auth, якщо ви хочете поштовий клієнт які ви можете використовувати в терміналі.
Тім Кеннеді
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.