Протокол SMTP
2.2. Протокол SMTP
Simple Mail Transfer Protocol был
разработан для обмена почтовыми
сообщениями в сети Internet. SMTP не
зависит от транспортной среды и
может использоваться для доставки
почты в сетях с протоколами,
отличными от TCP/IP и Х.25. Достигается
это за счет концепции IPCE (InterProcess
Communication Environment). IPCE позволяет
взаимодействовать процессам,
поддерживающим SMTP в интерактивном
режиме, а не в режиме "STOP-GO".
Модель протокола.
Взаимодействие в рамках SMTP
строится по принципу двусторонней
связи, которая устанавливается
между отправителем и получателем
почтового сообщения. При этом
отправитель инициирует соединение
и посылает запросы на обслуживание,
а получатель на эти запросы
отвечает. Фактически, отправитель
выступает в роли клиента, а
получатель - сервера.
Рис. 2.2. Схема
взаимодействия по протоколу SMTP
Канал связи устанавливается
непосредственно между
отправителем и получателем
сообщения. При таком
взаимодействии почта достигает
абонента в течение нескольких
секунд после отправки.
Дисциплины работы и команды
протокола. Обмен сообщениями и
инструкциями в SMTP ведется в
ASCII-кодах. В протоколе определено
несколько видов взаимодействия
между отправителем почтового
сообщения и его получателем,
которые здесь называются
дисциплинами.
Наиболее распространенной
дисциплиной является отправка
почтового сообщения, которая
начинается по команде MAIL,
идентифицирующей отправителя:
MAIL FROM: paul@quest.polyn.kiae.su
Следующей командой определяется
адрес получателя:
RCPT TO: paul@apollo.polyn.kiae.su
После того, как определен
отправитель и получатель почтового
сообщения, можно отправлять
последнее:
DATA
Команда DATA вводится без
параметров и идентифицирует начало
ввода почтового сообщения.
Сообщение вводится до тех пор, пока
не будет введена строка с точкой в
первой позиции. Согласно стандарту
почтового сообщения RFC822
отправитель передает заголовок и
тело сообщения, которые разделены
пустой строкой. Сам протокол SMTP не
накладывает каких-либо ограничений
на информацию, которая заключена
между командой DATA и "." в первой
позиции последней строки. Приведем
пример обмена сообщениями при
дисциплине отправки почты:
S: MAIL FROM: <paul@quest.polyn.kiae.su>
R: 250 Ok
S: RCPT TO: <dobr@kiae.su>
R: 250 Ok
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Это текст почтового сообщения
S: .
R: 250
Другой дисциплиной, определенной
в протоколе SMTP является
перенаправление почтового
сообщения (forwarding). Если получатель
не найден, но известно его
местоположение, то сервер может
выдать сообщение:
R: 251 User not local;
will forward to <user@domain.domain>
Если сервер может сделать только
предположение о дальнейшей
рассылке, то ответ будет несколько
иным:
R: 551 User not local;
please try <user@host.domain>
Верификация и расширение адресов
составляют дисциплину верификации.
В ней используются команды VRFY и EXPN.
По команде VRFY сервер подтверждает
наличие или отсутствие указанного
пользователя:
S: VRFY paul
R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>
Используя команду EXPN можно
получить список местных
пользователей:
S: EXPN Example-People
R: 250-Paul Khramtsov<paul@quest.polyn.kiae.su>
R: 250-Vladimir Drach-Gorkunov<vovka@quest.polyn.kiae.su>
В список дисциплин, разрешенных
протоколом SMTP входит кроме
отправки почты еще и прямая
рассылка сообщений. В этом случае
сообщение будет отправляться не в
почтовый ящик, а непосредственно на
терминал пользователя, если
пользователь в данный момент
находится за своим терминалом.
Прямая рассылка осуществляется по
команде SEND, которая имеет такой же
синтаксис, как и команда MAIL. Кроме
SEND прямую рассылку осуществляют SOML
(Send or Mail) и SAML (Send and Mail). Назначение
этих команд легко понять из их
названия.
Для инициализации канала обмена
почтой и его закрытия используются
команды HELO и QUIT соответственно.
Первой командой сеанса должна быть
команда HELO.
Протокол допускает рассылку
почтовых сообщений в режиме
оповещения. Для этой цели
отправитель в адресе получателя
может указать несколько
пользователей или групповой адрес.
Обычно, программное обеспечение SMTP
выбирает эту информацию из
заголовка почтового сообщения и на
ее основе формирует параметры
команд протокола.
Если сообщение по какой-либо
причине не может быть разослано, то
получатель формирует сообщение о
неразосланном сообщении:
S: MAIL FROM:<>
R: 250 Ok
S: RCPT TO: <@host.domain:JOE@host.domain>
R: 250 Ok
S: DATA
R: 354 send the mail data, end with .
S: Date 23 Oct 95 11:23:30
S: From: SMTP@remote.domain
S: To: <JOE@host.domain>
S:
S: Undelivered message. Your message lost. 550 No such user.
S: .
При использовании доменных имен
следует использовать канонические
имена, т.к. некоторые системы не
могут определить синоним по базе
данных named.
Кроме выше перечисленных
дисциплин протокол позволяет
отправителю и получателю меняться
ролями друг с другом. Происходит
это по команде TURN.
Для отладки или проверки
соединения по SMTP можно
использовать telnet. Для этого вслед
за адресом машины следует ввести
номер порта:
/users/local>telnet
apollo.polyn.kiae.su 25
25 порт используется в Internet для
обмена сообщениями по протоколу SMTP.
В интерактивном режиме
пользователь сам изображает
клиента SMTP и может посмотреть
реакцию удаленной машины на его
действия.
Назад | Содержание | Вперед
|