Выбрать главу

Рис. 16.6. Пересылка почтового сообщения по пути следования

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

Возникает еще одна проблема — маршрутизация почты через систему почтового обмена. Предположим, что пользователи хоста sales.clarinet.com имеют почтовые идентификаторы в виде имя_пользователя@sales.clannet.com. Что нужно сделать с адресами, подобными jonesj@sales.clarinet.com? Проблему решит несколько дополнительных элементов в базе данных 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 <feit-sidnie@MATH.YALE.EDU>

Message-Id: <199508271201.AA02330@PASCAL.MATH.YALE.EDU>

To: feit@tigger.jvnc.net

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), применяется и в данном случае; при этом выполняется сходное декодирование сообщения ответа. Следовательно, все сообщения от удаленного сервера электронной почты начинаются с номера ответа. Отметим, что почтовые идентификаторы выведены в угловых скобках (например, <sfeit@pascal.math.yale.edu>). Имена хостов не чувствительны к регистру и могут выводиться как в верхнем, так и в нижнем регистре. Однако в именах пользователей различаются регистры символов, хотя это и зависит от принятых соглашений для конкретной почтовой системы.

220 tigger.jvnc.net 5.65с/IDA-1.4.4     Идентификатор получателя и время

 его объявления.

Sendmail is ready at Sun. 27 Aug 1995

08:02:55 -0400

HELO MATH-GW.CS.YALE.EDU                Идентификатор отправителя.

250 Hello MATH-GW.CS.YALE.EDU, pleased

to meet you

MAIL FROM: <sfeit@pascal.math.yale.edu> Источник полученного почтового

сообщения.

250 <sfeit@pascal.math.yale.edu>.. Sender ok

RCPT TO; <feit@tigger.jvnc.net>         Получатель идентифицирован.

 Может присутствовать несколько операторов RCPT ТО.

250 <feit@tigger.jvnc.net>.. Receiver ok

DATA                                    Начало сообщения.

354 Enter mail, end with "." on a line

by itself

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 <feit-sidnie@math.yale.edu>

Message-Id: <199508271201.AA02330@PASCAL.MATH.YALE.EDU>

To: feit@tigger.jvnc.net

Subject: It's OK to talk to yourself!

Date: 08/26/95 1:29:59 PM

За заголовком следует пустая строка.

Hi there.                               Это тело сообщения.

See you soon.

.                                       Сообщение заканчивается .<CR><LF>

250 Ok

Quit                                    До выхода из программы можно

 отправить другие сообщения.

220 tigger.jvnc.net closing connection

Connection closed by foreign host.