Читаем без скачивания TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) - Сидни Фейт
Шрифт:
Интервал:
Закладка:
■ Снижаются затраты на пересылку, поскольку сообщения могут пакетироваться для одновременной доставки в любое время суток.
■ При доставке может происходить преобразование формата.
В следующем разделе мы подробнее рассмотрим механизмы семейства протоколов TCP/IP, поддерживающие расширенные возможности доставки электронной почты.
16.5 Идентификация получателя и обмен сообщениями
В Интернете получатель почтового сообщения идентифицируется по имени с использованием следующего общего формата:
локальная_часть@имя_домена
Этот формат очень гибок. Многие годы в Интернете предпочитали формат с использованием имен:
идентификатор_пользователя@имя_хоста
Например:
[email protected]
В настоящее время применяется более удобный формат:
имя-фамилия@имя_почтового_домена
Например:
[email protected]
В этом случае Mary-Smith — это не идентификатор пользователя, а jcn.com — не имя хоста. Применяются локальные имена, назначенные в системе почтового обмена. Как же тогда доставлять почту адресату? Механизм почтовой доставки зависит от системы имен доменов. Его работа будет сводиться к следующему:
■ Один или несколько компьютеров назначаются в качестве систем почтовой доставки для данной организации.
■ Для системы почтовой доставки выбирается логическое имя, обычно имя домена организации, которое и включается в базу данных DNS.
■ Программа агента пересылки сообщения (MTA) будет просматривать в адресе сообщения часть, связанную с именем почтового домена, и на ее основе извлекать из DNS реальные имена и адреса системы почтового обмена получателя. Затем туда будет направлено сообщение.
Ниже представлен пример выполняемых действий. Запускается программа nslookup и запрашивается идентификатор системы почтовой доставки (Mail Exchanger) компании Cisco. Как можно заметить, реально выведены сведения о двух системах — hubbub.cisco.com и beasley.cicso.com. Для большей доступности своих почтовых служб многие компании запускают несколько систем почтового обмена.
Отметим выведенные значения предпочтения (preference), равные 5 и 10. Более предпочтительным для отправки почты будет сервер с меньшим номером (hubbub). Именно с ним нужно попытаться соединиться. Если же это будет невозможно, попробуем соединиться с beasley. Реально сами значения предпочтения не имеют никакого смысла, важно только соотношение между ними.
> nslookup
Default Server: DEPT-GW.cs.YALE.EDU
Address: 128.36.0.36
> set type = mx
> cisco.com
Cisco.com preference = 5, mail exchanger = hubbub.cisco.com
Cisco.com preference = 10, mail exchanger = beasley.cisco.com
Hubbub.cisco.com inet address = 198.92.30.32
Beasley.cisco.com inet address = 171.69.2.135
Dennis.cisco.com inet address = 171.69.2.132
Nsl.barrnet.net inet address = 131.119.245.5
Noc.near.net inet address = 198.112.8.2
Noc.near.net inet address = 192.52.71.21
Следующий запрос показывает, как некоторые организации реализуют дополнительный слой безопасности. Отметим наличие сразу трех систем почтового обмена, две из которых фактически принадлежат провайдеру UUNET:
> clarinet.com
Server: DEPT-GW.cs.YALE.EDU
Address: 128.36.0.36
Clarinet.com preference = 10, mail exchanger = looking.clarinet.com
Clarinet.com preference = 100, mail exchanger = relay1.uu.net
Clarinet.com preference = 100, mail exchanger = relay2.uu.net
Looking.clarinet.com inet address = 192.54.253.1
Relay1.uu.net inet address = 192.48.96.5
Relay2.uu.net inet address = 192.48.96.7
>
Компания Clarinet могла бы организовать свою сеть так, чтобы поступающая почта сначала направлялась на одну из систем UUNET, а затем передавалась на looking.clarinet.com.
На рис. 16.6 показано, как это можно сделать. Фильтрующий маршрутизатор нужно установить на блокирование всех соединений, за исключением связи с системой почтовой доставки провайдера UUNET. Внешняя система попробует соединиться с наиболее предпочтительным сайтом looking.clarinet.com. Однако маршрутизатор предотвратит такое соединение. Поэтому в следующей попытке почта будет направлена на один из менее предпочтительных сайтов relay1 или relay2. Теперь система UUNET сможет переслать почту системе почтового обмена компании Clarinet.
Рис. 16.6. Пересылка почтового сообщения по пути следования
Когда почта попадет на систему почтового обмена компании, будет проанализирована локальная часть логического адреса. По указанному псевдониму из специального файла будут извлечены реальные идентификатор пользователя и имя хоста, либо иной идентификатор для доставки почты в сети назначения. Таким образом, система почтовой доставки может действовать как шлюз для несовместимых с Интернетом почтовых служб.
Возникает еще одна проблема — маршрутизация почты через систему почтового обмена. Предположим, что пользователи хоста sales.clarinet.com имеют почтовые идентификаторы в виде имя_пользователя@sales.clannet.com. Что нужно сделать с адресами, подобными [email protected]? Проблему решит несколько дополнительных элементов в базе данных DNS компании Clarinet:
*.clarinet.com. IN MX 10 looking.clarinet.com.
*.clarinet.com. IN MX 100 relay1.uu.net
*.clarinet.com. IN MX 100 relay2.uu.net
Подстановочный символ звездочки (*) в этих элементах позволит направить на систему почтового обмена компании сообщения, адресованные в старом стиле (идентификатор_пользователя@имя_хоста).
Организации заменяют свои старые идентификаторы имя_пользователя@имя_хоста логическими именами, которые не показывают идентификаторы пользователей посторонним. В дополнение к улучшению безопасности сети логические имена разрешают пользователям получать новый идентификатор или перемешаться между различными компьютерами без изменения почтовых идентификаторов.
16.6 Протокол SMTP
Простой протокол пересылки почты (Simple Mail Transfer Protocol — SMTP) определяет способ непосредственного перемещения почтового сообщения между хостами. В протоколе SMTP для системы описываются две роли: отправителя и получателя. Отправитель действует как клиент и устанавливает соединение TCP с получателем, который работает как сервер. Для получателя используется общеизвестный порт 25. Даже если отправителем является программа почтовой службы (Message Transfer Agent — MTA), она функционирует как клиент и использует временный порт из пула доступных портов.
В течение сеанса SMTP отправитель и получатель обмениваются последовательностью команд и ответов. Сначала получатель объявляет имя своего хоста. Затем отправитель:
■ Объявляет имя своего хоста
■ Идентифицирует источник сообщения
■ Определяет одного или нескольких получателей
■ Пересылает данные почтового сообщения
■ Передает строку, содержащую ".<CR><LF>", что указывает на завершение пересылки сообщения.
Отметим, что сообщение может быть доставлено нескольким получателям хоста в одной транзакции, поскольку в нем допустимо указывать нескольких получателей. В конце транзакции отправитель может:
■ Начать следующую транзакцию
■ Завершить работу и закрыть соединение
В стандарте определена команда TURN (возврат), позволяющая отправителю и получателю поменяться ролями. Однако эта команда редко (если вообще когда-либо) реализуется на практике.
16.6.1 Диалог при обмене почтой
В приведенном ниже диалоге отправитель пересылает сообщение получателю. Отправляющий сообщение хост работает и как шлюз системы почтового обмена для компьютеров подразделения компании. В доставляемом почтовом сообщении присутствуют следующие элементы:
Received: from PASCAL.MATH.YALE.EDU (MATH-GW.CS.YALE.EDU) by tigger.jvnc.net
with SMTP id AA08294
(5.65с/IDA-1.4.4 for feit); Sun, 27 Aug 1995 08:02:55 -0400
Received: by PASCAL.MATH.YALE.EDU; Sun, 27 Aug 1995 08:01:44 -0400
Date: Sun, 27 Aug 1995 08:01:44 -0400
From: Sidnie Feit <[email protected]>
Message-Id: <[email protected]>
To: [email protected]
Subject: It's OK to talk to yourself!
Date: 08/26/95 1:29:59 PM
Hi there.
See you soon.
Элемент Received (получено) в верхней части сообщения был добавлен принимающим MTA в tigger. Остальная часть сообщения была передана на tigger от системы pascal.
Для пересылки сообщения отправитель открывает соединение с портом 25 получателя. Тогда получатель начинает диалог и объявляет имя своего домена.
Модель команда/ответ, которую мы видели в протоколе File Transfer Protocol (FTP), применяется и в данном случае; при этом выполняется сходное декодирование сообщения ответа. Следовательно, все сообщения от удаленного сервера электронной почты начинаются с номера ответа. Отметим, что почтовые идентификаторы выведены в угловых скобках (например, <[email protected]>). Имена хостов не чувствительны к регистру и могут выводиться как в верхнем, так и в нижнем регистре. Однако в именах пользователей различаются регистры символов, хотя это и зависит от принятых соглашений для конкретной почтовой системы.