SMTP - это TCP/IP-протокол доставки электронных сообщений. Он переносит почту по сети Интернет и по локальным сетям. Определение SMTP дается в документе RFC 821, A Simple Mail Transfer Protocol. Протокол функционирует на базе надежной службы логических соединений протокола управления передачей (Transmission Control Protocol, TCP) и работает через порт с широко известным номером 25. В таблице перечислены некоторые из простых команд SMTP, вполне пригодных для восприятия человеком.
Команда | Синтаксис | Назначение |
Hello | HELO <узел-отправитель> EHLO <узел-отправитель> |
Источник SMTP-отправки |
From | MAIL FROM:<исходный адрес> | Адрес отправителя |
Recipient | RCPT TOКконечный адрес> | Адрес получателя |
Data | DATA | Начать сообщение |
Reset | RSET | Прервать сообщение |
Verify | VRFY <строка> | Проверить имя пользователя |
Expand | EXPN <строка> | Раскрыть список рассылки |
Help | HELP [строка] | Запросить справку |
Quit | QUIT | Завершить сеанс SMTP |
SMTP - протокол настолько простой, что работу по этому протоколу пользователь может в буквальном смысле осуществлять самостоятельно. Подключившись посредством telnet к порту 25 удаленного узла, наберите почтовое сообщение в командной строке при помощи команд SMTP. Этот способ иногда используется для тестирования SMTP-сервера удаленной системы, а мы с его помощью проиллюстрируем процесс передачи почты между системами.
В приводимом ниже примере пользователь Daniel с узла rodent.wrotethebook.com вручную набрал и отправил письмо пользователю Tyler узла crab.wrotethebook.com.
$ telnet crab 25 Trying 172.16.12.1... Connected to crab.wrotethehook.com. Escape character is '"]'. 220 crab.wrotethebook.com ESMTP Sendmail 8.9.3+Sun/8.9.3; Thu, 19 Apr 2001 16:28:01-0400 (EOT) HELO rodent.wrotethebook.com 250 crab.wrotethebook.com Hello rodent [172.16.12.2], pleased to meet you MAIL FROM:<danieierodent.wrotethebook.com> 250 <Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>... Sender ok RCPT TO:<tylerecrab.wrotethebook.com> 250 <Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>... Recipient ok DATA 354 Enter mail, end with on a line by itself Hi TylerI 250 0AA00316 Message accepted for delivery QUIT 221 crab.wrotethebook.com closing connection Connection closed by foreign host.
Ввод пользователя выделен жирным шрифтом. Остальные строки представляют вывод системы. Как видите, все очень просто. Открывается ТСР-соединение. Система-отправитель представляется. Указывает адреса From и То. Передача сообщения начинается командой DATA и заканчивается строкой, содержащей только точку (.). Сеанс завершается по команде QUIT. Очень просто, с использованием лишь нескольких команд.
В RFC 821 определены и другие команды (SEND, SOML, SAML, TURN), которые являются необязательными и не получили широкого распространения в реализациях SMTP. Даже некоторые из реализованных команд не находят широкого применения. Команды HELP, VRFY и EXPN предназначены скорее для диалоговой работы, нежели для обычного взаимодействия двух систем по протоколу SMTP. Следующий фрагмент сеанса SMTP демонстрирует работу этих дополнительных команд.
HELP 214-This is Sendmail version 8.9.3+Sun 214-Topics: 214- HELO EHLO HAIL RCPT DATA 214- RSET NOOP OUIT HELP VRFY 214- EXPN VERB ETRN DSN 214-For more info use "HELP <topic>". 214-For local information contact postmaster at this site. 214 End of HELP info HELP RSET 214-RSET 214- Resets the system. 214 End of HELP info VRFY <jane> 250 <Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.> VRFY <mac> 250 Kathy McCafferty «mac» EXPN <admin> 250-<Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.> 250 David Craig «david» 250-<Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.>
Команда HELP выводит справку по командам, реализованным в системе. Команда HELP RSET запрашивает информацию по команде RSET. Откровенно говоря, эта справочная система не очень-то полезна!
Команды VRFY и EXPN более полезны, но часто блокируются из соображений безопасности, поскольку предоставляют доступ к информации пользовательских учетных записей, которая может использоваться для атаки на систему. Команда EXPN 111admin> запрашивает перечень адресов электронной почты из списка рассылки admin, и система услужливо возвращает такой список. Команда VRFY запрашивает информацию не о списке рассылки, но о конкретном пользователе. В случае команды VRFY 111mac>, mac оказывается локальной учетной записью пользователя, и для этой записи отображается определенная информация. В случае VRFY 111jane>, jane - это псевдоним из файла /etc/aliases. Возвращаемое значение - электронный адрес jane, указанный в этом файле. Три команды последнего примера интересны, но редко используются. Свою работу SMTP выполняет при помощи других команд.
SMTP обеспечивает прямую сквозную доставку почты. Прочие почтовые системы, такие как UUCP и X. 400, используют протоколы передачи с промежуточным хранением, за одно действие передавая почту на шаг ближе к пункту назначения - следующей системе. Каждая из систем в конце транзитного участка сохраняет сообщение полностью, а затем передает его следующей системе. Сообщение путешествует таким образом, пока не попадет в пункт назначения. Рисунок 3.3 иллюстрирует почтовые системы с промежуточным хранением данных и с прямой доставкой. Путь UUCP позволяет четко проследить маршрут почтовых сообщений, а почтовый адрес SMTP подразумевает прямую доставку.
Прямая доставка позволяет SMTP доставлять почту, не полагаясь на промежуточные узлы. Если доставка невозможна, локальная система узнает об этом немедленно. Она может уведомить пользователя, что сообщение отправлено, либо поместить сообщение в очередь для последующей отправки - все так же без помощи удаленных систем. Минус прямой доставки в том, что она требует от обеих систем полной готовности к работе с почтовыми сообщениями. Некоторые системы не пособны работать с почтой напрямую, в особенности многие персональные и мобильные компьютеры уровня ноутбуков.
111
Такие системы часто выключаются в конце рабочего дня и могут большую часть времени не иметь подключения к сети. Отправка почты с удаленного узла дает сбой и завершается сообщением о том, что невозможно установить соединение, если локальная система выключена или не находится в сети. С целью разрешения подобных затруднений вместо прямой доставки используются возможности системы DNS для маршрутизации сообщения на почтовый сервер. Затем, когда система-клиент вновь устанавливает соединение с сетью, почта попадает к ней уже с почтового сервера. Один из протоколов, применяемых в сетях TCP/IP с этой целью, носит название протокола почтовой службы (Post Office Protocol, POP).