Использование telnet для отправки e-mail.

Для передачи сообщений электронной почты служит протокол прикладного уровня SMTP (Simple Mail Transfer Protocol - Простой протокол передачи почты). Одной из особенностей данного протокола, как и многих других телнетоподобных (telnet-like) протоколов является то, что обмен данными между клиентом и сервером выполняется в текстовом режиме, т.е. передаются только отображаемые символы таблицы кодов ASCII. Даже если передаются почтовые вложения в виде исполняемых файлов, рисунков, звуков, их содержимое перекодируется почтовым программным обеспечением в поток отображаемых символов ASCII.

Следовательно, простое письмо без вложений на английском языке очень легко можно отправить используя стандартную утилиту telnet.exe. Эта утилита имеется в составе программного обеспечения любой ОС семейства Windows и обычно предназначена для работы в командной строке удаленного компьютера. Выполняется подключение к удаленному компьютеру с telnet-сервером по протоколу TCP на порт 23 и вводимые с клавиатуры команды передаются серверу и выполняются в его программной среде, а стандартный вывод удаленной системы осуществляется в окне telnet - клиента.

В командной строке запуска telnet можно указать IP-адрес или имя удаленного узла и номер порта к которому будет выполняться подключение. Если номер порта не задан, то используется порт 23 (telnet).

telnet 192.168.1.1 23 - подключение к узлу 192.168.1.1 на порт 23 (к серверу TELNET)
telnet post.cnt.ru 25 - подключение на порт 25 ( к серверу SMTP)

Последний вариант команды телнет позволяет подключиться к почтовому серверу без использования клиентского программного обеспечения и даже выполнить отправку простого электронного письма.

Если подключение к серверу по TCP/25 выполнится успешно, то он ответит приглашением, чем-то вроде:.

220 This ESMTP is CNT server for card users.

Сообщения от сервера SMTP состоят из числового трехзначного номера сообщения (220 - сервер готов к работе) и информационного текста.

Для организации сессии обмена данными по протоколу SMTP клиент должен представиться серверу с использованием команды HELO и указания своего имени или IP-адреса. Команды протокола SMTP состоят из 4-х символов и могут иметь необязательные параметры. Вводим с клавиатуры

HELO myhost.ru

В качестве параметра HELO можно задать localhost или все что угодно, поскольку сервер не выполняет проверку его достоверности, что является одним из недостатков данного протокола.

Вместо команды HELO можно ввести EHLO, и тогда сервер дополнительно к сообщению о начале сессии ответит списком поддерживаемых им SMTP-команд:

250-post.cnt.ru Hello myhost.ru, pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE 10000000
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP

Идентификатор ответа 250 означает "выполнено" (или "OK").

Перечень поддерживаемых команд зависит от программного обеспечения сервера и его настроек. Минимально необходимый для отправки письма набор команд состоит из 3-х:

MAIL - задает адрес отправителя
RCPT - задает адрес получателя
DATA - текст сообщения

Формат указания адреса отправителя:

MAIL FROM: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Достоверность адреса отправителя сервером не проверяется, что позволяет легко подделывать электронные послания. Пусть будет письмо от Билла Гейтса.

Если команда введена без синтаксических ошибок, то она будет принята, и сервер ответит сообщением с номером 250 (OK):

250 2.1.0 Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. ... Sender ok

означающим, что адрес отправителя принят..

Теперь вводим адрес получателя:

RCPT TO: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Если ввод выполнен без ошибок, сервер подтвердит продолжение сессии сообщением с номером 250:


250 2.1.5 Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. ... Recipient ok.

Теперь можно ввести текст письма. Начало ввода текста задается директивой DATA, а окончание - строкой с одной единственной точкой.

DATA

Сервер предложит ввести текст письма, выдав в ответ на DATA сообщение с номером 354:


354 Please start mail input.

Теперь можно вводить любой текст на английском языке:

Hello,Vasya!
...
Good Bye!
.

После ввода точки письмо будет принято к доставке получателю, о чем сервер сообщит кодом 250:

250 Mail queued for delivery.


Для завершения SMTP - сессии используется команда QUIT Письмо будет доставлено получателю, и в качестве адреса отправителя, в почтовом клиенте, будет отображаться Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

В связи с проблемой спама и несовершенством протокола SMTP, подавляющее большинство почтовых серверов настраивается таким образом, что обойтись 3-мя вышеупомянутыми командами наверняка не получится. Скорее всего, как минимум, потребуется проверка подлинности пользователя с использование команды AUTH. Чаще всего используется проверка по имени пользователя и паролю (AUTH LOGIN), предполагающая их ввод в кодировке BASE64.

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

Быстрый виртуальный хостинг на SSD дисках
бесплатный хостинг на SSD

 

Классный SMS сервис:
от 4 коп. за сообщение
или
отправь СМС бесплатно!
Дополнительная СКИДКА 10%
на первый месяц

С ePochta SMS можно отправлять смс в любую страну мира. После регистрации в смс сервисе вы получите 10 смс для тестирования.

Получите до 7500 писем/мес. бесплатно после регистрации в сервисе почтовых рассылок ePochta Mail Service.