Развитие стандартов кодирования сообщений электронной почты

Автор работы: Пользователь скрыл имя, 13 Февраля 2012 в 14:37, реферат

Описание работы

Электронная почта - это основное средство коммуникаций Internet.
Она во многом похожа на обычную почту. С ее помощью письмо - текст, снабженный стандартным заголовком (конвертом) - доставляется по указанному адресу, который определяет местонахождение сервера и имя адресата, который имеет почтовый ящик на этом сервере, с тем, чтобы адресат мог его достать и прочесть в удобное время.
Электронная почта оказалась во многом удобнее обычной, "бумажной". Кроме того,

Файлы: 1 файл

Министерство образования и науки Рб Рф.docx

— 64.13 Кб (Скачать файл)

  Протоколы приёма и передачи почты.

  Почтовые  программы для персональных компьютеров  используют разные протоколы для  приема и отправки почты. При отправке почты программа взаимодействует  с сервером исходящей почты, или SMTP-сервером, по протоколу SMTP. При приеме почты программа взаимодействует с севером входящей почты, или POP3-сервером по протоколу POP3.  

Простой протокол передачи почты (SMTP).

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

  Канал связи  устанавливается непосредственно  между отправителем и получателем  сообщения. При таком взаимодействии почта достигает абонента в течение  нескольких секунд после отправки.

    Команды SMTP и их последовательность. 

  Простой протокол передачи почты обеспечивает двухсторонний обмен сообщениями  между локальным клиентом и удаленным  сервером МТА. МТА-клиент шлет команды  МТА-серверу, а он, в свою очередь, отвечает клиенту. Другими словами, протокол SMTP требует получать ответы от приемника команд SMTP. Обмен командами  и ответами на них называется почтовой транзакцией (mail transaction). Данные передаются в формате NVT ASCII. Кроме того, команды тоже передаются в формате NVT ASCII. Команды передаются в форме ключевых слов, а не специальных символов, и указывают на необходимость совершить ту или иную операцию.

  Список  ключевых слов (команд), определенный в спецификации SMTP.

  Команды простого протокола  передачи почты (SMTP)

  Команда   Обязательна   Описание
HELO Х Идентифицирует  модуль-передатчик для модуля-приемника (hello).
MAIL X Начинает почтовую транзакцию, которая завершается  передачей данных в один или несколько  почтовых ящиков (mail).
RCPT Х Идентифицирует  получателя почтового сообщения (recipient).
DATA   Строки, следующие  за этой командой, рассматриваются  получателем как данные почтового  сообщения. В случае SMTP, почтовое сообщение  заканчивается комбинацией символов: CRLF-точка-CRLF.
RSET   Прерывает текущую  почтовую транзакцию (reset).
NOOP   Требует от получателя не предпринимать никаких действий, а только выдать ответ ОК. Используется главным образом для тестирования. (No operation.)
QUIT   Требует выдать ответ ОК и закрыть текущее  соединение.
VRFY   Требует от приемника  подтвердить, что ее аргумент является действительным именем пользователя.
SEND   Начинает почтовую транзакцию, доставляющую данные на один или несколько терминалов (а не в почтовый ящик).
SOML   Начинает транзакцию MAIL или SEND, доставляющую данные на один или несколько терминалов или  в почтовые ящики.
SAML   Начинает транзакцию MAIL и SEND, доставляющие данные на один или  несколько терминалов и в почтовые ящики.
EXPN   Команда SMTP-прнемнику  подтвердить, действительно ли аргумент является адресом почтовой рассылки и если да, вернуть адрес получателя сообщения (expand).
HELP   Команда SMTP-приемнику  вернуть сообщение-справку о его  командах.
TURN   Команда SMTP-приемнику  либо сказать OK и поменяться ролями, то есть стать STMP-передатчиком, либо послать  сообщение-отказ и остаться в  роли SMTP-приемника.

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

  MTP обеспечивает  двухстороннюю связь между агентами  передачи почты (МТА), клиентом  и сервером. Клиенты шлют команды  серверу, а серверы отвечают  клиентам. Однако SMTP оговаривает последовательность SMTP-команд.

   Для  целей дальнейшего повествования  каждой строке присвоен номер  и обозначено, кому они принадлежат  - передатчику или приемнику. Текст  справа от слов “RECEIVER” или  “SENDER” содержит действительно  передаваемые данные. Трехзначные  цифровые комбинации в начале  передаваемых строк обозначают  коды ответа. Ответ SMTP похож на  сообщения-подтверждения о доставке, поскольку появляется лишь в  том случае, когда приемник получил  данные.

  1. RECEIVER:   220 mit.edu Simple Mail Transfer Service Ready

  2. SENDER:     HELO usc.edu

  3. RECEIVER:   250 mit.edu

  4. SENDER:     MAIL FROM:<Smith@usc.edu>

  5. RECEIVER:   250 OK

  6. SENDER:     RCPT TO:<Jones@init.edu>

  7. RECEIVER:   250 OK

  8. SENDER:     RCPT TO:<Green@mit.edu>

  9. RECEIVER:   550 No such user here

  10. SENDER::   RCPT TO <Brown@mit.edu>

  11. RECEIVER:  250OK

  12. SENDER:    DATA

  13. RECEIVER:  354 Start mail input; end with <CRLF>.<CRLF>

  14. SENDER:     Blah blah blah...

  15. SENDER:    ...etc. etc. etc.

  16. SENDER:    .

  17. RECEIVER:   250 OK

  18. SENDER:     QUIT

  19. RECEIVER:   221 mit.edu Service closing transmission channel

  Как видно  из строки 1, когда SMTP-клиент устанавливает TCP-соединение с портом протокола 25, SMTP-сервер отвечает кодом 220. Это означает, что соединение успешно установлено:

  1. RECEIVER:   220 mit.edu Simple Mail Transfer Service Ready

  После того, как MTA компьютеров mit.edu и usc.edu установили соединение и обменялись приветствием, первой командой должна быть команда HELO. Как указано в строке 2, SMTP-клиент передает HELO, называя имя своего компьютера в качестве аргумента. Команда HELO употребляется с аргументом, как показано ниже:

  2. SENDER:     HELO usc.edu

  В ответ  на HELO приемник выдает код 250, сообщая  передатчику о том, что команда  принята и обработана:

  3. RECEIVER:   250 mit.edu

  После установления TCP-соединения и идентификации (при  помощи HELO) SMTP-клиент приступает к почтовой транзакции. Для начала он выполняет  одну из следующих команд: MAIL, SEND, SOML или SAML. В нашем примере использована команда MAIL:

  4. SENDER:     MAIL FROM:Smith@usc.edu

  Четыре  команды, MAIL, SEND, SOML и SAML, имеют одинаковый синтаксис:

  MAIL <пробел> FROM:<reverse-path> <carriage-return> line-feed>

  Аргумент  “обратный путь” (reverse path) указывает  серверу, кому в случае ошибки отослать соответствующее сообщение. В аргументе  содержится адрес источника сообщения (в нашем случае, Smith@usc.edu). После того как сервер выдал код ответа 250 (строка 5), согласившись обработать сообщение от Smith@usc.edu, необходимо указать получателя сообщения. Это делается при помощи команды RCPT. Команда RCPT имеет аргумент - имя получателя. На одну команду приходится только одно имя, поэтому, если получателей несколько, команда RCPT выдается несколько раз. В нашем примере команды RCPT выполняются в строках 6,8 и 10. Синтаксис RCPT похож на синтаксис команды MAIL:

  RCPT <про6ел> TO:<forward-path> <CRLF>

  Однако, в  отличие от MAIL, аргумент RCPT начинается со слова “TO:”. Содержимое аргумента - путь передачи сообщения (forward path), а  не обратный путь. В пути передачи сообщения  указано имя почтового ящика  получателя. Выдав команду RCPT, МТА-клиент ожидает получить ответ с кодом 250. Однако, в ответ на восьмую  строку

  8. SENDER:      RCPT TO:<Green@mit.edu>

  сервер отвечает кодом 550:

  9. RECEIVER:   550 No such user here

  Код ответа 550 означает, что МТА не в состоянии  выполнить запрос клиента, поскольку  не знает, как доставить почту  указанному пользователю. То есть скорее всего у мистера по фамилии Green нет почтового ящика (Green@mit.edu) на этом компьютере. В протоколе SMTP сказано, что сервер обязан информировать  клиента об отсутствии почтового  ящика получателя сообщения.

  После того как посланы все команды RCPT, клиент начинает передачу при помощи команды DATA. В строке 12 показано, как МТА-клиент (передатчик) высылает команду DATA, в  строке 13 - как сервер отвечает кодом 354. Этот код означает, что передача данных разрешена и должна заканчиваться  комбинацией CRLF-точка-CRLF (новой строкой, содержащей только точку).

  12. SENDER:    DATA

  13. RECEIVER:  354 Start mail input; end with <CRLF>.<CRLF>

  После того как получен код 354, клиент может  начать передачу данных. МТА-сервер, в  свою очередь, помещает принятые данные в очереди входящих сообщений. Сервер не высылает никаких ответов до тех  пор, пока не получит комбинацию CRLF-точка-CRLF от клиента, означающую конец передачи данных. Как показано в строках 16 и 17, в ответ на полученную комбинацию CRLF-точка-CRLF, сервер выдает код 250, что означает успешное окончание операции:

  16. SENDER:    .

  17. RECEIVER:   250 OK

  Для того, чтобы закончить почтовую транзакцию, клиент, по правилам SMTP, обязан послать  команду QUIT. Сервер, в свою очередь, отвечает кодом 221, который подтверждает клиенту, что соединение будет закрыто, после чего соединение действительно  закрывается:

  18. SENDER:     QUIT

  19. RECEIVER:   221 mit.edu Service closing transmission channel

  В любой  момент во время транзакции клиент может использовать команды NOОР, HELP, EXPN и VRFY. В ответ на каждую команду  сервер высылает клиенту определенную информацию. В зависимости от ответа клиент может предпринять определенные действия. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  Коды ответов SMTP.                 

   В спецификации SMTP требуется, чтобы сервер отвечал  на каждую команду SMТР-клиента.  МТА-сервер отвечает трехзначной  комбинацией цифр, называемой кодом  ответа. Вместе с кодом ответа, как правило, передается одна  или несколько строк текстовой  информации.

  Каждая  цифра в коде ответа имеет определенный смысл. Первая цифра означает, было ли выполнение команды успешно (2), неуспешно (5) или еще не закончилось (3). Простой  клиент может анализировать только первую цифру в ответе сервера, и  на основании ее продолжать свои действия. Вторая и третья цифры кода ответа разъясняют значение первой.  
 

  Коды  ответа SMTP и их значение

  Код   Значение
211 Ответ о состоянии  системы или помощь
214 Сообщение-подсказка (помощь)
220 <имя_домена> служба готова к работе
221 <имя_домена> служба закрывает канал связи
250 Запрошенное действие почтовой транзакции успешно завершилось
251 Данный адресат  не является местным; сообщение будет  передано по маршруту <forward-path>
354 Начинай передачу сообщения. Сообщение заканчивается  комбинацией CRLF-точка-CRLF
421 <имя_домена> служба недоступна; соединение закрывается
450 Запрошенная команда  почтовой транзакции не выполнена, так  как почтовый ящик недоступен
451 Запрошенная команда  не выполнена; произошла локальная  ошибка при обработке сообщения
452 Запрошенная команда  не выполнена; системе не хватило  ресурсов
500 Синтаксическая  ошибка в тексте команды; команда  не опознана
501 Синтаксическая  ошибка в аргументах или параметрах команды
502 Данная команда  не реализована
503 Неверная последовательность команд
504 У данной команды  не может быть аргументов
550 Запрошенная команда  не выполнена, так как почтовый ящик и недоступен
551 Данный адресат  не является местным; попробуйте передать сообщение по маршруту <forward-path>
552 Запрошенная команда  почтовой транзакции прервана; дисковое пространство, доступное системе, переполнилось
553 Запрошенная команда  не выполнена; указано недопустимое имя почтового ящика
554 Транзакция  не выполнена
 
 
 
 
 
 
 
 

  Значения  первой цифры в  коде ответа SMTP

  Цифра 1 означает, что сервер МТА принял команду, от клиента требуется дополнительное подтверждение. Клиент обязан послать  дополнительную информацию о том, продолжать или прервать выполнение запрошенной  команды. Из табл. 2 видно, что SMTP не имеет  в составе таких команд, то есть коды ответа, начинающиеся с единицы, отсутствуют. В настоящее время  команд SMTP, которые бы потребовали  дополнительного подтверждения, нет. Разработчики ориентировались на то, что такие команды появятся, и  зарезервировали для них коды, начинающиеся с цифры 1.

  Коды ответа, начинающиеся с цифры 2, означают, что  сервер МТА успешно завершил выполнение команды и ожидает появления  новой. Код ответа, начинающийся на 3, означает, что команда начала выполняться, но серверу необходима дополнительная информация для ее завершения. Пример такого кода - 354. В ответ на него клиент МТА должен приступить к передаче почтового сообщения. Код, начинающийся с цифры 4, означает, что сервер не принял команду, и она не выполнена. Во всех ответах серии 400 предполагается, что ошибка временная и клиент может попытаться ее исправить. Коды ответа серии 500 также сообщают, что  команда не выполнена. Кроме того, клиент не должен пытаться повторить  ту же команду еще раз (по крайней  мере в составе той же последовательности).

  Значения  второй цифры кода ответа SMTP

  Вторая  цифра кода ответа обозначает категорию  ошибки. Цифра 0 обозначает синтаксическую ошибку. Команда может быть слишком  длинной, иметь неправильный аргумент или отсутствовать в списке команд сервера.

  У сообщений  с кодами 211 и 214 из табл. 2 вторая цифра  кода равна единице и оба они  информационного характера. У команд с кодами 220, 221 и 421 вторая цифра —  двойка, и все они имеют дело с передачей данных или с коммуникационным каналом. Коды ответов, у которых  вторая цифра равна пяти (250, 450 и 550) связаны непосредственно с почтовой системой. В настоящее время в SMTP не определены значения кодов, вторая цифра которых равна трем или  четырем.

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

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

Информация о работе Развитие стандартов кодирования сообщений электронной почты