Реферат: Электронная почта как сервис глобальной сети. Протоколы передачи почты
Команда SMTP-приемнику либо сказать OK и поменяться ролями, то есть стать STMP-передатчиком, либо послать сообщение-отказ и остаться в роли SMTP-приемника.
Команды, помеченные крестиком, обязаны присутствовать в любой реализации SMTP. Остальные команды могут быть реализованы дополнительно. Каждая SMTP-команда должна заканчиваться либо пробелом (если у нее есть аргумент), либо комбинацией CRLF. SMTP способен передавать данные любого содержания (например, текст, графические, звуковые файлы).
MTP обеспечивает двухстороннюю связь между агентами передачи почты (МТА), клиентом и сервером. Клиенты шлют команды серверу, а серверы отвечают клиентам. Однако SMTP оговаривает последовательность SMTP-команд. Лучший способ понять это — взглянуть на образец почтовой транзакции. Следующий пример демонстрирует типичную почтовую транзакцию. В примере фигурирует мистер Smith (на компьютере usc.edu ), посылающий сообщения мистерам Jones, Green и Brown (на компьютере mit.edu ). Агент передачи почты хоста mit.edu принимает почту для мистеров Jones и Brown, однако не знает, где расположен почтовый ящик мистера Green.
Для целей дальнейшего повествования каждой строке присвоен номер и обозначено, кому они принадлежат - передатчику или приемнику. Текст справа от слов “RECEIVER” или “SENDER” содержит действительно передаваемые данные. Трехзначные цифровые комбинации в начале передаваемых строк обозначают коды ответа. Ответ SMTP похож на сообщения-подтверждения о доставке, поскольку появляется лишь в том случае, когда приемник получил данные.
1. RECEIVER: 220 mit.edu Simple Mail Transfer Service Ready2. SENDER: HELO usc.edu3. RECEIVER: 250 mit.edu4. SENDER: MAIL FROM:<[email protected]>5. RECEIVER: 250 OK6. SENDER: RCPT TO:<[email protected]>7. RECEIVER: 250 OK8. SENDER: RCPT TO:<[email protected]>9. RECEIVER: 550 No such user here10. SENDER:: RCPT TO <[email protected]>11. RECEIVER: 250OK12. SENDER: DATA13. RECEIVER: 354 Start mail input; end with <CRLF>.<CRLF>14. SENDER: Blah blah blah...15. SENDER: ...etc. etc. etc.16. SENDER: .17. RECEIVER: 250 OK18. SENDER: QUIT19. 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:[email protected]Четыре команды, MAIL, SEND, SOML и SAML, имеют одинаковый синтаксис:
MAIL <??????> FROM:<reverse-path> <carriage-return> line-feed>Аргумент “обратный путь” (reverse path) указывает серверу, кому в случае ошибки отослать соответствующее сообщение. В аргументе содержится адрес источника сообщения (в нашем случае, [email protected] ). После того как сервер выдал код ответа 250 (строка 5), согласившись обработать сообщение от [email protected], необходимо указать получателя сообщения. Это делается при помощи команды 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:<[email protected]>сервер отвечает кодом 550:
9. RECEIVER: 550 No such user hereКод ответа 550 означает, что МТА не в состоянии выполнить запрос клиента, поскольку не знает, как доставить почту указанному пользователю. То есть скорее всего у мистера по фамилии Green нет почтового ящика ([email protected]) на этом компьютере. В протоколе SMTP сказано, что сервер обязан информировать клиента об отсутствии почтового ящика получателя сообщения.
После того как посланы все команды RCPT, клиент начинает передачу при помощи команды DATA. В строке 12 показано, как МТА-клиент (передатчик) высылает команду DATA, в строке 13 - как сервер отвечает кодом 354. Этот код означает, что передача данных разрешена и должна заканчиваться комбинацией CRLF-точка-CRLF (новой строкой, содержащей только точку).
12. SENDER: DATA13. 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: QUIT19. RECEIVER: 221 mit.edu Service closing transmission channelВ любой момент во время транзакции клиент может использовать команды NOОР, HELP, EXPN и VRFY. В ответ на каждую команду сервер высылает клиенту определенную информацию. В зависимости от ответа клиент может предпринять определенные действия.
2.1.2. Коды ответов SMTP.
В спецификации SMTP требуется, чтобы сервер отвечал на каждую команду SMТР-клиента. МТА-сервер отвечает трехзначной комбинацией цифр, называемой кодом ответа. Вместе с кодом ответа, как правило, передается одна или несколько ?