Смекни!
smekni.com

Электронная почта как сервис глобальной сети. Протоколы передачи почты (стр. 5 из 12)

Третья цифра кода ответа SMTP

Каждая отдельная строка сообщения должна иметь собственную третью цифру в коде ответа. Рассмотрим, например, сообщения с кодами от 500 до 504. Каждое сообщение означает отдельную синтаксическую ошибку. Поскольку строки, описывающие различные виды ошибок, разные, то и коды ответа должны отличаться друг от друга. Каждое сообщение об ошибке имеет свой собственный порядковый номер в данной серии. Спецификация SMTP рекомендует, но не обязывает использовать строго заданные текстовые строки в ответах MTA-сервера.

Ответ MTA-сервера может состоять из нескольких строк специального формата. Каждая строка (кроме последней) многострочного ответа начинается с кода ответа, дефиса (-), текста и комбинации CRLF. Последняя строка многострочного ответа начинается с кода ответа, за которым следует пробел:

123-Первая строка сообщения из нескольких строк123-Код ответа, 123, не изменяется123-1 сообщение может начинаться с цифры123 Последняя строка начинается не с дефиса, а с пробела

За кодом каждой строки, кроме последней, следует знак дефиса (-). Это необходимо, чтобы клиент MTA смог отличить строку-продолжение ответа от последней строки. За кодом ответа в последней строке всегда следует пробел.

2.1.3. Ограничения по размерам.

В стандарте SMTP сказано, что реализации SMTP не должны ограничивать максимальную длину обрабатываемых объектов (возможно, для будущих ра ширений стандарта). Однако, в настоящий момент SMTP ограничивает допустимые размеры следующими величинами, приведенными в табл. 3.

Таблица 3

Ограничения на размеры объектов SMTP

Объект SMTP Ограничение
User Максимальная длина имени пользователя: 64 символа
Domain Максимальная длина имени домена: 64 символа
Path Максимальная длина обратного маршрута или маршрута доставки, включая знаки пунктуации и символы-oграничители: 256 знаков
Command line Максимальная длина командной строки, включая ключевое слово и символы CRLF: 512 знаков
Reply line Максимальная длина строки ответа, включая код ответа и символы CRLF: 512 знаков
Text line Максимальная длина текстовой строки, включая символы CRLF: 1000 знаков
Recipients Максимальное количество получателей сообщения (за одну транзакцию): 100

Если клиент МТА превысил ограничения на размер передаваемой информации, сервер МТА отвечает одним из следующих кодов:

500 Line too long.(слишком длинная строка) 501 Path too long.(слишком длинный путь) 552 Too many recipients.(слишком много получателей) 552 Too much mail data.(слишком много данных в сообщении)

2.1.4. Промежуточные агенты.

Термин “маршрут доставки” (forward-path) служит для того, чтобы отличать почтовый ящик (mailbox), имя которого абсолютно, от пути (он может быть различным), по которому следует почта. Предположим, что нужно доставить два почтовых сообщения на один и тот же сетевой компьютер. Оба сообщения имеют один и тот же адрес, однако, не обязательно будут следовать по одному и тому же маршруту. Точно так же, если на пришедшие сообщения выдаются ответы, они не обязательно будут следовать по указанному обратному маршруту (reverse-path). Как правило, конкретный маршрут для почты выбирается системным администратором. Чтобы направить почту по нужному пути, используются значения маршрута доставки и обратного маршрута, в которых указываются промежуточные агенты (relay agents). Промежуточный агент доставки - это МТА, так называемый почтовый хаб (mail hub), настроенный на передачу транзитной почты. Чтобы доставить сообщение, местный агент пользователя (UA) передает его местному МТА, который, в свою очередь, передает его промежуточному агенту МТА. В следующем примере Smith@usc.edu является почтовым ящиком, a HOST1, HOST2 и HOST3 - промежуточными агентами:

MAIL FROM:<@HOSTI, @HOST2, @HOST3:Smith@usc.edu>

Промежуточные агенты присутствуют практически во всех сетях, входящих в Internet.

Рис. 2 Почтовая система Интернет с участием промежуточных агентов.

Чтобы упростить процесс конфигурации почтовой системы, в локальной сети устанавливается один компьютер, служащий промежуточным агентом (relay host). Вся почта пользователей попадает сначала на него. Затем этот компьютер рассылает сообщения по Internet. Кроме всего прочего, такой компьютер может служить защитой фирмы от взломщиков-хакеров из Internet. Ограничивая общение локальной сети с внешним миром до уровня почты, организация сводит до минимума риск нежелательного вторжения в свои собственные системы. Кроме того, администрировать и защищать в этом случае приходится единственный компьютер. SMTP в состоянии послать сообщение непосредственно с компьютера пользователя на компьютер адресата в том случае, если между ними существует прямое почтовое соединение. Но обычно между двумя компьютерами находятся промежуточные агенты. Чтобы обеспечить доставку, в почтовом сообщении нужно указать имя компьютера-получателя и точное наименование почтового ящика.

Аргументом команды MAIL является обратный маршрут, включающий имя источника сообщения и имена всех промежуточных агентов. Аргумент команды RCPT - маршрут доставки, содержащий имя получателя сообщения. Обратный маршрут описывает путь, который прошло сообщение, тогда как маршрут доставки идентифицирует место назначения. Обратный маршрут используется SMTP, когда нужно передать сообщение о случившейся ошибке или о невозможности доставить сообщение, когда оно уже прошло через промежуточный агент. По мере продвижения сообщения по Internet записи о его маршрутах изменяются. В обязанности системных администраторов входит правильно настраивать местные МТА на передачу сообщений промежуточному агенту, и наоборот, промежуточные агенты на доставку сообщений местным MTA. Если у промежуточного МТА изменится имя, то в конфигурации местного МТА нужно изменить имя компьютера в системе DNS. Другие параметры конфигурации не изменяются.

Рассмотрим почтовую транзакцию между промежуточными агентами SMTP. До того как сообщение будет передано следующему указанному в маршруте (в поле ТО:) компьютеру, имя данного компьютера удаляется из маршрута доставки и добавляется в начало обратного маршрута. К тому моменту, когда сообщение достигнет пункта назначения, маршрут доставки будет содержать только имя почтового ящика.

2.2. Усовершенствования электронной почты.

Усилия по усовершенствованию электронной почты прилагаются в трех направлениях. Они затрагивают доставку (организация информации в служебных полях упаковки сообщения), обработку агентами пользователя (информация в заголовке сообщения) и тело сообщения. Наиболее интересные возможности предоставляет модификация тела почтового сообщения. Тело сообщения может переносить мультимедиа-объекты, то есть являться двоичным файлом с графической, звуковой или видеоинформацией.В этом разделе рассматриваются существующие методы кодирования таких данных в почтовых сообщениях Internet.

2.2.1. Расширения SMTP.

Расширенный SMTP (ESMTP, Extended SMTP) работает почти так же, как и обычный SMTP, однако, команда-приветствие у него другая: EHLO (Extended hello) вместо HELO. Чтобы выяснить, поддерживает ли МТА-сервер спецификацию ESMTP, МТА-клиент посылает команду EHLO. Если сервер поддерживает ESMTP, он отвечает кодом 250. Если нет, следует сообщение о синтаксической ошибке. В ответ на сообщение об ошибке, клиент может выдать обычную команду HELO и далее выполнять стандартные операции SMTP. Если сервер умеет обслуживать ESMTP, в ответ на приветствие, как правило, он выдает многострочный ответ. Каждая срока ответа содержит дополнительную команду ESMTP, с которой сервер знает, как работать. Пример реакции ESMTP-сервера в ответ на команду EHLO:

250-mail.server.com250-EXPN250-HELP250 TURN

Вторая, третья и четвертая строки ответа содержат названия дополнительных команд сервера. Этот сервер обеспечивает обработку перечисленных в табл. 1 дополнительных команд. Первыми шестью расширениями SMTP являются команды: ЕXPN, HELP, TURN, SEND, SOML и SAML. Существует также расширение SIZE, позволяющее SMTP-клиенту и серверу сообщать друг другу размеры передаваемого сообщения. Если в ответе на команду EHLO присутствует ключевое слово SIZE, значит, данное расширение обрабатывается. Если клиент МТА попытается передать сообщение, превышающее предел размеров передаваемого сообщения для сервера, почтовая транзакция не состоится (закончится с ошибкой). Максимальная длина сообщения ограничивается по нескольким причинам. Основная состоит в том, что размеры жестких дисков сервера всегда ограничены, и слишком длинное сообщение может не поместиться на них. С другой стороны, свободное пространство на дисках сервера может со временем увеличиться, и это сообщение будет принято при следующей попытке. Максимальный размер сообщения следует сразу за кодом ответа 250. Например:

250 SIZE 100000000

Это пример ответа SIZE для размера в 100 Мб. Клиент MTA анализирует ответ SIZE и в случае необходимости предпринимает соответствующие действия. Дополнительно клиент может указывать длину сообщения в команде MAIL. В следующей ESMTP-команде клиент объявляет, что длина сообщения равна 500 Кб:

MAIL FROM:<happy@jamsa.com> SIZE=500000

MTA-сервер ESMTP анализирует аргумент SIZE и решает, принимать ему сообщение такой длины или сообщить об ошибке. Все это происходит еще до начала передачи. Остальные несколько расширений SMTP, в общем, подчиняются тем же правилам, что и рассмотренная только что команда SIZE. То есть команда-расширение выдается в ответе сервера по запросу клиента EHLO. Расширения можно использовать в ваших программах в соответствии со спецификацией. В некоторых случаях расширение является просто дополнительной возможностью. В других случаях расширение - дополнительный аргумент к существующей команде (как в случае рассмотренной команды SIZE).