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

Использование 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: BillGates@microsoft.com

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

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

250 2.1.0 BillGates@microsoft.com … Sender ok

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

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

RCPT TO: apb@mail.cnt.ru

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

250 2.1.5 apb@mail.cnt.ru … Recipient ok.

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

DATA

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

354 Please start mail input.

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

Hello,Vasya!

Good Bye!
.

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

250 Mail queued for delivery.

Для завершения SMTP — сессии используется команда QUIT Письмо будет доставлено получателю, и в качестве адреса отправителя, в почтовом клиенте, будет отображаться BillGates@microsoft.com

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

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

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *