rd_45.134-2000 (524304), страница 4
Текст из файла (страница 4)
| Команда | EXPN |
| Аргументы | string – предполагаемый идентификатор списка рассылки |
| Описание | Данная команда просит приемник подтвердить, что аргумент идентифицирует список рассылки. Если аргумент содержит список рассылки, приемник должен выдать многострочный ответ с перечнем полных имен клиентов, если они известны, и полных имен почтовых ящиков, занесенных в данных список рассылки. |
| Действия c буферами | - |
| Команда | HELP [] |
| Аргументы | string - имя команды |
| Описание | По данной команде приемник должен выдать ответ с полезной для передатчика информацией. |
| Действия c буферами | - |
| Команда | NOOP |
| Аргументы | - |
| Описание | Нет операции. Приемник должен выдать ответ OK. |
| Действия c буферами | - |
| Команда | QUIT |
| Аргументы | - |
| Описание | Приемник должен выдать ответ OK и закрыть соединение. |
| Действия c буферами | Сброс всех данных и буферов. |
| Команда | TURN |
| Аргументы | - |
| Описание | Приемник должен либо выдать ответ OK и взять на себя роль передатчика, либо выдать ответ отказа 502 и остаться в роли приемника. Если обмен ролями произошел, процесс, ставший приемником высылает ответ приветствия 220. |
| Действия c буферами | Сброс всех данных и буферов. |
3.1.2. Синтаксис команд определен в п.5.
3.1.3. Команды: HELO, MAIL, RCPT, DATA, RSET, NOOP, QUIT должны быть реализованы обязательно.
3.1.4. Обеспечение прозрачности передачи данных в команде DATA
При посылке передатчиком данных почты каждую последовательность "." (0x0D 0x0A 0x2E) передатчик должен заменять на ".."(0x0D 0x0A 0x2E 0x2E). Приемник должен выполнять обратное преобразование. Указатель конца почтовых данных этому преобразованию не подвергается.
3.2. Ответы
3.2.1. Код ответа
Ответ SMTP состоит из трехзначного кода ответа (передаваемого как три символа), за которым следует текст.
Значения номера ответа:
первая цифра
| 1 | Положительный предварительный ответ |
| 2 | Положительный окончательный ответ |
| 3 | Положительный промежуточный ответ |
| 4 | Временный отрицательный окончательный ответ |
| 5 | Постоянный отрицательный окончательный ответ |
вторая цифра
| 0 | Ошибки синтаксиса |
| 1 | Запрос информации |
| 2 | О состоянии соединения |
| 3 | не определен |
| 4 | не определен |
| 5 | О состоянии почтовой системы |
третья цифра позволяет сделать более точное разделение значений ответов по функциональным категориям, определенным второй цифрой.
Ответ сервера может состоять из одной или нескольких строк.
Однострочный ответ состоит из:
трехзначного номера ответа, передаваемого как три символа,
символа ,
текста,
символа .
Многострочный ответ состоит из:
трехзначного номера ответа, передаваемого как три символа,
символа "-"
текста первой строки
символа
трехзначного номера ответа, передаваемого как три символа,
символа "-"
текста второй строки
символа
.....
трехзначного номера ответа, передаваемого как три символа,
символа ,
текста последней строки,
символа .
Список кодов ответов приведен в табл. 2. Для всех ответов, кроме 110, текст ответа не обязательно должен соответствовать приведенному в табл. 2.
Таблица 2
Список кодов ответов
| Код | Текст |
| 211 | Системный статус или ответ системной помощи |
| 214 | Ответ помощи |
| 220 | Служба готова |
| 221 | Служба закрывает соединение |
| 250 | Запрошенное действие выполнено успешно |
| 251 | Клиент не локальный, направлено в |
| 354 | Начинаю получение почтовых данных. Конец при . |
| 421 | Служба не доступна, закрываю соединение |
| 450 | Запрошенное действие не принято. Почтовый ящик недоступен (например, занят) |
| 451 | Запрошенное действие прервано. Локальная ошибка выполнения. |
| 452 | Запрошенное действие не принято. Недостаточно памяти. |
| 500 | Синтаксическая ошибка, команда не распознана |
| 501 | Синтаксическая ошибка в параметре или аргументах |
| 502 | Команда не реализована |
| 503 | Неправильная последовательность команд. |
| 504 | Аргумент команды не реализован |
| 550 | Запрошенное действие не принято. Почтовый ящик не доступен (например, не найден) |
| 551 | Клиент не локальный. Пожалуйста, попробуйте |
| 552 | Запрошенное действие прервано. Превышен лимит памяти. |
| 553 | Запрошенное действие не принято. Неправильное имя почтового ящика. |
| 554 | Ошибка транзакции. |
3.3. Порядок команд и ответов
Первой командой в сессии должна быть команда HELO. Если аргумент команды HELO является неприемлемым, должен быть выдан ответ 501 и приемник SMTP должен остаться в прежнем состоянии.
Команды NOOP, HELP, EXPN, VRFY могут использоваться в любое время в течении сессии.
Команды MAIL, SEND, SOML, SAML начинают транзакцию. Если аргумент команды начала транзакции является неприемлемым, приемник должен выдать ответ 501 и остаться в прежнем состоянии. Во время транзакции должны использоваться команды в следующей последовательности: одна или несколько команд RСPT, одна команда DATA. Транзакция может быть прервана командой RSET. В течение сессии может быть 0, 1 или более транзакций. Если во время транзакции команды выдаются с нарушением указанного порядка, приемник должен выдать ответ 503 и остаться в прежнем состоянии.
Последней командой сессии должна быть команда QUIT. Команда QUIT может быть выдана в любое время в течение сессии.
На каждую команду должен выдаваться точно один ответ.
В п.6 и п.7 определяются допустимые последовательности команд и ответов.
3.4. Ограничения на размер элементов сообщений SMTP
Ограничения на размер элементов сообщений SMTP приведены в табл. 3
Таблица 3
Ограничения на размер элементов сообщений SMTP.
| Обозначение элемента | Элемент | Максимальный размер |
| User | имя клиента | 64 символов |
| Domain | имя домена | 64 символов |
| Path | обратный путь или прямой путь | 256 символов |
| Command line | Строка команды включая символы | 512 символов |
| reply line | Строка ответа включая код ответа и символы | 512 символов |
| text line | Строка данных почты, включая символы , но не считая символы точки, добавленные для обеспечения прозрачности | 1000 символов |
| Recipient buffer | Емкость буфера адресатов | 100 адресатов |
4. Описание синтаксиса команд и ответов
::= "HELO" 1*
::= "MAIL" 1* "FROM:"
::= "RCPT" 1* "TO:"
::= "DATA"
::= "RSET"
::= "SEND" 1* "FROM:"
::= "SOML" 1* "FROM:"
::= "SAML" 1* "FROM:"
::= "VRFY" 1*
::= "EXPN" 1*
::= "HELP" [1* ]
::= "NOOP"
::= "QUIT"
::= "TURN"
::=
::=
::= "<" [ ":" ] ">"
::= | ","
::= "@"
::= | "."
::= | "#" | "[" "]"
::= "@"
::= |
::=
::= |
::= |
::= | | "-"
::= | "."
::= |
::= """ """
::= "\" | "\" | |
::= | "\"
::= "." "." "."
::= |
::=
::= символ возврата каретки (код ASCII 13)
::= символ следующей строки (код ASCII 10)
::= символ пробела (код ASCII - 32)
::= одна, две или три десятичные цифры, представляющие
десятичное число в диапазоне от 0 до 255
::= любой из 52 алфавитных строчных и прописных
символа от A до Z и от a до z
::= любой из 128 символов ASCII кроме
or
::= любая из 10 цифр от 0 до 9
::= любой из 128 символов ASCII кроме ,
, кавычек ("), или (\)
::= любой из 128 символов ASCII
::= "" | "(" | ")" | "[" | "]" | "\" | "."
| "," | ";" | ":" | "@" """ | управляющие
символы (коды ASCII от 0 до 31 включительно, а так же
127)
Примечание 1: символ "\" указывает на то, что следующий за ним
специальный символ интерпретируется "буквально", а не в соответствии с обычной интерпретацией.















