Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетУказКурсРабСистемПрогрЗИЭИТ2005.doc
Скачиваний:
6
Добавлен:
13.09.2019
Размер:
698.37 Кб
Скачать

Приложение 3. Команды smtp

"Беседа" SMTP состоит из последовательности команд, которые клиент SMTP выдает серверу. Сервер отвечает цифровым кодом ответа с последующим текстовым сообщением. Цифровые коды ответа состоят из цифр, первая из которых указывает на успешное и неудачное завершение команды. В табл. А4 перечислены значения первой цифры кода.

Таблица А4. Значения первой цифры кодов ответа SMTP

Первая цифра

Значение

1

Положительный предварительный ответ. Команда была принята, но ожидает команды подтверждения от клиента

2

Положительный ответ о завершении команды. Команда выполнена успешно

3

Положительный промежуточный ответ. Команда была принята, но ожидает дополнительную информацию от клиента

4

Переходный отрицательный ответ о завершении команды. Команда была отброшена, однако клиент должен предпринять новую попытку

5

Постоянный отрицательный ответ о завершении команды. Команда отброшена

Вторая цифра кодов ответа указывает категорию ответа (табл. А5).

Таблица А.5. Значения второй цифры кодов ответа SMPT

Цифра

Значение

0

Синтаксис

1

Информация

2

Соединение

5

Система почты

Третья цифра предоставляет более точную градацию значений для каждой из категорий ответа.

Подсоединение к серверу SMTP. Для инициализации сеанса SMTP клиент устанавливает соединение с сервером SMTP с помощью порта 25 ТСР. После установки соединения клиент принимает код ответа, который показывает, может ли сервер SMTP выполнять соединение и открыть новый сеанс, а также является ли служба временно неготовой (табл. А6).

Коды ответа для подсоединения к серверу SMTP: 220, 421 (табл. А6).

Таблица А6. Коды отклика на команду SMTP

Код

Значение

211

Состояние системы или ответ подсказки

214

Сообщение подсказки

220

Служба готова

221

Служба закрывает соединение

250

Запрашиваемое действие завершено

251

Пользователь не является локальным, поэтому сообщение направляется к server-name

354

Начать ввод почты, завершающийся нажатием <CRLF>.

421

Служба отсутствует, соединение управления закрывается

450

Почтовый ящик не готов, поэтому запрашиваемое действие не выполнялось

451

Ошибка локальной обработки. Запрашиваемое действие прервано

452

Недостаточный объем памяти. Запрашиваемое действие не выполнялось

500

Синтаксическая ошибка. Команда не была признана

501

Синтаксическая ошибка в аргументах или параметрах команды

503

Неправильная последовательность команд

504

Параметр команды не реализован

550

Действие не было выполнено, поскольку почтовый ящик не готов (не обнаружен)

551

Пользователь не является локальным, клиент должен попытаться подсоединиться к серверу

552

Действие прервано, поскольку оно превысило объем распределенной памяти

553

Запрашиваемое действие не выполнено, поскольку имя файла не допускается

554

Транзакция потерпела неудачу

DATA. Сообщает серверу о том, что последующий за этой командой текст является текстом почтового сообщения для доставки указанному получателю. Текст почтового сообщения должен быть отформатирован в соответствии с форматом сообщения Internet (RFC 822), перед ним и после него должна стоять отдельная точка с последующим маркером конца строки в виде символов возврата каретки/новой строки, который распространен в большинстве приложений Internet. Эта команда должна первоначально принять код отклика 354. Затем клиент должен отправить сообщение, на которое сервер, вероятно, ответит кодом 250. Синтаксис команды DATA следующий:

DATA#13#10

Коды откликов: 250, 354, 421, 451, 452, 500, 501, 503, 552, 554 (табл. А6).

EXPN - Расширить. Выполняет такую же функцию, как и команда VRFY, однако используется для проверки почтовых списков. Если EXPN получает достоверное имя почтового списка, сервер возвращает пользователю имена и адреса получателей, которые перечислены в почтовом списке. Синтаксис команды EXPN следующий:

EXPN почтовый_список#13#10

Коды откликов: 250, 421, 500, 501, 502, 504, 550 (табл. А6).

HELO. Инициализирует "беседу" SMTP. Имя системы клиента сопровождает команду для того, чтобы идентифицировать клиента. Сервер обычно отвечает кодом 250 с последующим именем сервера. HELO должна быть первой командой, которую клиент SMTP выдает после установления соединения с сервером SMTP. Синтаксис команды HELO следующий:

HELO имя_клиента#13#10

Коды откликов: 250, 421, 500, 501, 504 (табл. А6).

HELP. Пользователь вводит команду HELP во время интерактивного сеанса SMTP, запускаемого командной строкой. Команда возвращает информацию подсказки по всем имеющимся командам или по конкретной команде. Синтаксис команды HELP следующий:

HELP [ командная отрока ]#13#10

Коды откликов: 211, 214, 421, 500, 501, 502, 504 (табл. А6).

MAIL. Инициализирует почтовое сообщение и сообщает серверу о том, кто отправляет сообщение. Адрес, отправляемый с этой командой, всегда является адресом источника сообщения, хотя адрес может также перечислять несколько промежуточных host-компьютеров. Синтаксис команды MAIL следующий:

MAIL FROM: имя@имя_host#13#10

Коды откликов: 250, 421, 451, 452, 500, 501, 503, 552 (табл. А6).

NOOP - Нет операции. Извлекает ответ ОК из сервера. Эта команда не влияет на любые действия или команды, введенные ранее или позднее. Можно использовать NOOP как команду для поддержки активного состояния соединения команд. Синтаксис этой команды следующий:

NООР#13#10

Коды откликов: 250, 421, 500 (табл. А6).

QUIT- Выход. Сообщает серверу, что у клиента больше нет транзакций для выдачи и что соединение должно быть закрыто. Сервер отвечает ОК и затем закрывает соединение. Синтаксис команды следующий:

QUIT#13#10

Коды откликов: 221, 500 (табл. А6).

RCPT - Получить. Информирует сервер о том, кто является предполагаемым получателем сообщения. Если сообщение должно отправляться нескольким получателям, может быть несколько почтовых ящиков назначения, разделенных запятыми. Синтаксис команды RCPT следующий:

RCPT ТО: имя_пoлyчaтeля@имя_пoлyчaтeля_host[ , имя_получателя@имя_получателя_host . . . ]#13#10

Коды откликов: 250, 251, 421, 451, 452, 500, 501, 503, 552, 551, 552, 553 (табл. А6).

RSET - Сбросить. Прерывает текущую почтовую транзакцию, отбрасывая любые данные об отправителе, получателе или сообщении. RSET удаляет и сбрасывает все буферы и таблицы состояния. Синтаксис этой команды следующий:

RSET#13#10

Коды откликов: 250, 421, 500, 501, 504 (табл. А6).

SAML - Отправить по почте. Напоминает команду SOML, за исключением того, что SAML всегда доставляет сообщение в почтовый ящик получателя, даже если команде удастся отправить сообщение на терминал получателя. Синтаксис команды SAML (подобно SEND или SOML) следующий:

SAML FROM: имя@имя_host:#13#10

Коды откликов: 250, 354, 421, 451, 452, 500, 501, 502, 552 (табл. А6).

SEND - Отправить. Используется вместо команды MAIL. Отправляет почтовое сообщение не в почтовый ящик пользователя, а на экран терминала текущего сеанса пользователя. Вы используете команду SEND, если необходимо отправить важное сообщение системному администратору, Если бы администратор был зарегистрирован в сервере почты, вы могли бы отправить сообщение непосредственно на экран его компьютера. Если пользователь не зарегистрирован на сервере почты или не принимает терминальные сообщения, сервер возвращает код ответа 450 на команду RCPT, которая должна следовать за командой SEND. Команда SEND использует тот же синтаксис, что и команда MAIL:

SEND FROM: : имя@имя_host:#13#10

Коды откликов: 250, 421, 451, 452, 500, 501, 502, 552 (табл. А6).

SOML - Отправить по почте. Подобна команде SEND, за одним исключением: если экран терминала получателя не может отобразить почтовое сообщение, почтовый ящик получатели автоматически принимает это сообщение. Как и команда SEND, команда SOML использует тот же синтаксис, что и команда MAIL:

SOLM FROM: имя@имя_host:#13#10

Коды откликов: 250, 421, 451, 452, 500, 501, 502, 552 (табл. А6).

TURN. Предписывает серверу взять на себя роль отправителя, а клиент принимает на себя роль получателя. Можно использовать эту команду для получения любых почтовых сообщений, которые вы намерены отправить из сервера клиенту, не ожидая, пока сервер инициализирует сеанс SMTP с клиентом. Синтаксис команды TURN следующий:

TURN#13#10

Коды откликов: 250, 500, 502, 503 (табл. А6).

VRFY - Проверять. Предписывает серверу проверить указанного получателя в системе сервера. Вы используете эту команду перед инициализацией нового почтового сообщения с помощью команд MAIL, SEND, SOML или SAML. Синтаксис команды VRFY следующий:

VRFY имя_лользователя_или_адрес#13#10

Коды откликов: 250, 251, 421, 500, 501, 502, 504, 550, 551, 553 (табл. А6)

Примечание: Ни набор команд SMTP, ни модель связи SMTP не содержат команды LOGIN. Поэтому любой клиент SMTP может подсоединяться к серверу SMTP и отправлять почтовые сообщения. Это является причиной уязвимости системы почты Internet, поскольку любой пользователь имеет возможность отправить почту с фиктивным адресом возврата (или чьим-либо другим адресом). В свое время такая уязвимость вызвала слухи о том, что якобы Netscape Navigator имеет неисправности в защите. Фактически это недостаток защиты в конструкции и реализации модели SMTP.

Расширения SMTP

Почта Internet использовала на протяжении многих лет SMTP в качестве первичного протокола передачи. Как и можно было предположить, при столь продолжительном использовании возможности базового протокола увеличились за счет различных расширений. Хоти ни одно из этих расширений не было распространено по всем реализациям SMTP, одно расширение было стандартизировано (RFC 1651), что позволяет пользователю SMTP узнать о расширениях любого сервера SMTP.

Новая команда EHLO используется вместо команды HELO. Если сервер не поддерживает любых расширений SMTP, он отвечает кодом отклика 500, который обозначает, что сервер не узнает команду. В противном случае сервер отвечает кодом отклика 250 и, если какие-либо расширения поддерживаются, - несколькими строками, в которых перечисляются поддерживаемые расширения, и при этом каждая строка начинается с кода отклика 250.

Для имеющихся расширений SMTP изучите документы RFC.