Simple Mail Transfer
Protocol |
Simple Mail Transfer Protocol был разработан для обмена почтовыми
сообщениями в сети Internet. SMTP не зависит от транспортной среды и
может использоваться для доставки почты в сетях с протоколами,
отличными от TCP/IP и Х.25. Достигается это за счет концепции IPCE
(InterProcess Communication Environment). IPCE позволяет
взаимодействовать процессам, поддерживающим SMTP в интерактивном
режиме, а не в режиме "STOP-GO".
Модель протокола.
Взаимодействие в рамках 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 и
может посмотреть реакцию удаленной машины на его действия.
|