Проверяем работу SMTP AUTH LOGIN через telnet

Подавляющее большинство почтовых серверов не позволяют неаутентифицированным пользователям отправлять через себя письма. Open-relay сервер, т.е. сервер, позволяющий свободную пересылку почты, в интернет-сообществе считается дурным тоном, и вообще такие сервера по прошествии какого-то времени становятся источниками спама, и IP-адреса таких серверов быстро попадают в блек-листы всевозможных средств защиты от спама. В этот раз мы поговорим о том, как провести аутентификацию типа AUTH LOGIN из консоли telnet. На основании описанного способа можно запросто написать программу, которая выполняет все эти действия автоматически.

AUTH LOGIN – способ SMTP-аутентификации, в котором логин и пароль передаются в виде текста, закодированного по алгоритму Base64. Обратите внимание, что передавать свои логин и пароль таким образом далеко не безопасно! Итак, нам нужно для начала закодировать по алгоритму Base64 свой логин на почтовом сервере и пароль от него. Для этого воспользуемся языком Perl, а конкретнее – его модулем MIME::Base64.

$ perl -MMIME::Base64 -e 'print encode_base64("user\@server.ru");'
dXNlckBzZXJ2ZXIucnU=
$ perl -MMIME::Base64 -e 'print encode_base64("PASSWORD");'
UEFTU1dPUkQ=

Получившиеся две строки копируем куда-нибудь в буфер обмена. Теперь мы готовы к аутентификации, поэтому запускаем SMTP-сессию через telnet (жирным шрифтом помечены наши команды):

$ telnet server.ru 25
Trying 95.169.186.213...
Connected to server.ru.
Escape character is '^]'.
220 server.ru ESMTP 2011
EHLO oioki.ru
250-server.ru
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Сервер показывает список своих возможностей, мы же выберем метод AUTH LOGIN и введем закодированные логин и пароль. Обратите внимание, что логин и пароль он спрашивает также в Base64-закодированном виде:

AUTH LOGIN
334 VXNlcm5hbWU6
dXNlckBzZXJ2ZXIucnU=
334 UGFzc3dvcmQ6
UEFTU1dPUkQ=

Ответ сервера зависит от правильности введенных логина и пароля. В случае ошибки, вы увидите что-то вроде:
535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
Если же все нормально:
235 2.7.0 Authentication successful

Собственно, теперь можно отправить письмо нужному получателю, от своего имени:

MAIL FROM: user@server.ru
250 2.1.0 Ok
RCPT TO: user@server2.ru
250 2.1.5 Ok
DATA
354 End data with .
Subject: Hello world!
This is the test message...
.
250 2.0.0 Ok: queued on  as a8b0c5d3-aCbac1dx
QUIT
221 2.0.0 Closing connection.
Connection closed by foreign host.

Похожие статьи

4 thoughts on “Проверяем работу SMTP AUTH LOGIN через telnet”

  1. Здравствуйте.
    Попробовал подключиться с помощью Telnet, но подключения не происходит – висит и сбрасывает.
    подключался “Telnet smtp.mail.ru 465” (порт 465 ,т.к. на сайте mail.ru указан он; хотя пробовал и 25).
    Так почему же не подключаюсь?

  2. На порту 465 работает SMTPS, т.е. SMTP, обёрнутый в SSL (аналогично HTTPS и HTTP).
    Попробуйте подключиться вот так, из Linux:
    openssl s_client -connect smtp.mail.ru:465

Leave a Reply

Your email address will not be published. Required fields are marked *