SMTP

**Общая характеристика.**
====//Simple Mail Transfer Protocol// был разработан для обмена почтовыми сообщениями в сети Internet. SMTP не зависит от транспортной среды и может использоваться для доставки почты в сетях с протоколами, отличными от TCP/IPи Х.25. Достигается это за счет концепции [|//IPCE (InterProcess Communication Environment).//]IPCE позволяет взаимодействовать процессам, поддерживающим SMTP в интерактивном режиме, а не в [|режиме "STOP-GO".] Средой для SMTP может служить отдельная локальная сеть, система сетей или весь Интернет.==== ====Он описывает систему команд и соглашений для посылки сообщений к другим компьютерным пользователям, основанную на адресах электронной почты. SMTP обеспечивает обмен почтовыми сообщениями между пользователями одной и той же или различных компьютерных сетей. Система поддерживает:==== 
 * ====посылку одиночных сообщений одному или более получателям;====
 * ====посылку сообщений, включающих в себя текст, голосовые сообщения, видео или графические материалы;====
 * ====посылку сообщений для пользователей сетей, не входящих в Интернет.====

Модель протокола.
====Взаимодействие в рамках SMTP строится по принципу двусторонней связи, которая устанавливается между отправителем и получателем почтового сообщения. При этом отправитель инициирует соединение и посылает запросы на обслуживание, а получатель - отвечает на эти запросы. Фактически отправитель выступает в роли клиента, а получатель - сервера.====

[[image:http://www.icmm.ru/~masich/win/lexion/mail/mailfig5.gif]]
====[|Канал связи]устанавливается непосредственно между отправителем и получателем сообщения. При таком взаимодействии почта достигает абонента в течение нескольких секунд после отправки.==== ====Простой протокол передачи почты обеспечивает двухсторонний обмен сообщениями между локальным клиентом и удаленным сервером МТА. МТА-клиент шлет команды МТА-серверу, а он, в свою очередь, отвечает клиенту. Другими словами, протокол SMTP требует получать ответы (они описаны в этой главе) от приемника команд SMTP. Обмен командами и ответами на них называется почтовой транзакцией (mail transaction). Данные, как мы уже говорили, передаются в формате NVT [|ASCII]. Кроме того, команды тоже передаются в формате [|NVT ASCII.] Команды передаются в форме ключевых слов, а не специальных символов, и указывают на необходимость совершить ту или иную операцию. В табл.1 приведен список ключевых слов (команд), определенный в спецификации SMTP - RFC 821.====

Таблица 1. //Команды простого протокола передачи почты (SMTP)//


 * ====Команда==== || ====Обязательна==== || ====Описание==== ||
 * ======== || ====X==== || ====Идентифицирует модуль-передатчик для модуля-приемника (hello).==== ||
 * ======== || ====X==== || ====Начинает почтовую транзакцию, которая завершается передачей данных в один или несколько почтовых ящиков (mail).==== ||
 * ======== || ====X==== || ====Идентифицирует получателя почтового сообщения (recipient).==== ||
 * ======== ||  || ====Строки, следующие за этой командой, рассматриваются получателем как данные почтового сообщения. В случае SMTP, почтовое сообщение заканчивается комбинацией символов: CRLF-точка-CRLF.==== ||
 * ======== ||  || ====Прерывает текущую почтовую транзакцию (reset).==== ||
 * ======== ||  || ====Требует от получателя не предпринимать никаких действий, а только выдать ответ ОК. Используется главным образом для тестирования.(No operation).==== ||
 * ======== ||  || ====Требует выдать ответ ОК и закрыть текущее соединение.==== ||
 * ======== ||  || ====Требует от приемника подтвердить, что ее аргумент является действительным именем пользователя. (См. примечание.).==== ||
 * ======== ||  || ====Начинает почтовую транзакцию, доставляющую данные на один или несколько терминалов (а не в почтовый ящик).==== ||
 * ======== ||  || ====Начинает транзакцию MAIL или SEND, доставляющую данные на один или несколько терминалов или в почтовые ящики.==== ||
 * ======== ||  || ====Начинает транзакцию MAIL и SEND, доставляющие данные на один или несколько терминалов и в почтовые ящики.==== ||
 * ======== ||  || ====Команда SMTP-приемнику подтвердить, действительно ли аргумент является адресом почтовой рассылки и если да, вернуть адрес получателя сообщения (expand).==== ||
 * ======== ||  || ====Команда SMTP-приемнику вернуть сообщение-справку о его командах.==== ||
 * ======== ||  || ====Команда SMTP-приемнику либо сказать ОК и поменяться ролями, то есть стать STMP- передатчиком, либо послать сообщение-отказ и остаться в роли SMTP-приемника.==== ||

====В соответствии со спецификацией команды, помеченные крестиком (X) в табл.1, обязаны присутствовать в любой реализации SMTP. Остальные команды SMTP могут быть реализованы дополнительно. Каждая SMTP-команда должна заканчиваться либо пробелом (если у нее есть аргумент), либо комбинацией CRLF. В описании команд употреблялось слово <данные", а не <сообщение>. Этим подчеркивалось, что, кроме текста, SMTP позволяет передавать и двоичную информацию, например графические или звуковые файлы. Другими словами, SMTP способен передавать данные любого содержания, а не только текстовые сообщения. Это значит, что, рассматривая вопросы, касающиеся SMTP, не забывайте, что термин "сообщениее" обозначает не только текстовые данные.====