
- •7.1 Формат почтовых сообщений, мiме
- •7.2 Модель работы smtp
- •Пользователь
- •7.3 Ретрансляция сообщений
- •7.4 Расширения smtp-сервиса для передачи 8-битных данных
- •7.5 Взаимодействие smtp с транспортным протоколом tcp
- •7.6 Принципы работы
- •7.7 Протокол iмар4
- •7.8 Атрибуты сообщений системы (map)
- •Основные команды
7.3 Ретрансляция сообщений
В огромной сети Internetочень редко удается отправить сообщение адресату напрямую. Как правило, используются SMTP-серверы,которые выполняют роль промежуточных пунктов пересылки сообщений. SMTP-серверыпринимают всю поступившую на них почту (если администратором SMTP-серверане установлены ограничения) и затем, самостоятельно, переправляют ее адресату. Этот процесс и называется ретрансляцией сообщений.
SMTP-серверывыбирают путь сообщения по своему усмотрению в зависимости от параметров настройки, скорости доступа и т. д. ПротоколSMTPпозволяет отправителю сообщения самостоятельно указывать путь передачи сообщения, устанавливая в качестве параметров команды отправки промежуточные SMTP-серверы.
Параметр <fol•waгd-path>командыRCPTможет 'содержать не только имя почтового ящика получателя, но и путь к этому почтовому ящику черезSMTP-серверы,например:
S: RCPT TO:<@ONE,@TWO:Jones@THREE>
где "ONE", "TWO", "THREE"-"^MeHaxocTOB'("ONE" и "TWO"-имена промежуточных хостов, "Jones@THREE" —имя почтового ящика адресата на хосте "THREE"). Механизм ретрансляции сообщений состоит в следующем:
Сообщение передается SMTP-серверу,стоящему первым на пути передачи (хост "ONE"). После принятия этим сервером сообщения, он перемещает свой идентификатор из пути передачи и ставит его в строку обратного пути <reverse-path> (определенный в командеMAIL).
Затем сервер, получивший данное сообщение становится отправителем SMTPи передает сообщение по адресу хоста, стоящего первым в пути передачи (это будет теперь хостTWO") Теперь это сообщение с измененными параметрами <forward-path> и <reyerse-path> отправляется на следующий по маршруту хост.
Далее все повторяется, пока сообщение не дойдет до адресата (т. е. параметр <forward-path> станет равным пустой строке).
Примечание
Заметим, что идентификаторы отправителя <reverse-path>и получателя<forward-path>участвуют и изменяются только в SMTP-командахи никакие отражаются на параметрах сообщения "То:', "From:" и "Сс:"
Если SMTP-серверполучил сообщение, но позднее (например, при его отправке) обнаружил, что путь передачи указан неверно (или произошли какие-либо сбои сети и т.д.) и данное сообщение не может быть отправлено, он обязан построить "сообщение уведомления", об ошибке и отправить его отправителю сообщения (указанному в параметре <reverse-path>).Для предотвращения петли передачи (цикла пересылок уведомляющих сообщений), сообщение уведомления об ошибочном сообщении передается SMTP-серверомбез имени (идентификатора) отправителя, т. е. без параметра<reverse-path>.Вместо него передается пустая строка:
MAIL FROM: < >
Информация об отправителе этого сообщения помещается в поле "From:" конверта сообщения.
Рассмотрим теперь несколько примеров работы SMTP.
Сценарии
Простейший пример SMTP-транзакции —передача сообщения трем адресатам.
R: 220 BEN-UNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BBN-UNIX.ARPA
S: MAIL FROM:<Smith@asC-ISIF.ARPA>
R: 250 OK
S: RCPT TO:<Jones@BBN-ONIX.ARPA>
R: 250 OK
S: RCPT TO:<Green@BBN-UNIX.ARPA>
R: 550 No such user here
S: RCPT TO:<Brown@BBN-ONIX.ARPA>
R: 250 OK S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Hey! ...
S: ... Bye!
S: .
R: 250 OK
S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel
Адресату <Green@BBN-UNIX.ARPA> почта не была доставлена. Пример прерванной SMTP-транзакциивыглядит так:
R: 220 MIT- Multics.ARPA Simple Mail Transfer Service Ready
S: HELO ISI-VAXA.ARPA
R: 250 MIT-Multics.ARPA
S: MAIL FROM:<Smith@ISI-VAXA.ARPA>
R: 250 OK
S: RCPT TO:<Jones@MIT-Multics.ARPA>
R: 250 OK
S; RCPT TO;<Green@MIT-Multics.ARPA>
R: 550 No such user here
S: RSET R: 250 OK
S: QUIT
R: 221 MIT-Multics.ARPA Service closing transmission channel
В этом случае почта адресатам не передана.
Пример ретрансляции сообщения от <JQP@MIT-AI.ARPA> на <Jones@BBN-VAX.ARPA> через <USC-ISIE.ARPA> выглядит так:
Шаг 1:обработка сообщения на хосте <USC-ISIE.ARPA>.
R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
S: HELO MIT-AI.ARPA
R: 250 USC-ISIE.ARPA
S: MAIL FROM: <JQP@MIT-AI.ARPA>
R: 250 OK
S: RCPT TO:<@USC-ISIE.ARPA:Jones@BBN-VAX.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Date: 2 Nov 97 22:33:44
S: From: John Q. Public <JQP@MIT-AI.ARPA>
S: Subject: Hello
S: To: Jones@BBN-Vax.ARPA
S:
S: Hello! I am John.
S: .
R: 250 OK
S: QUIT
R: 221 USC-ISIE.ARPA Service closing transmission channel
Шаг 2:доставка адресату <Jones@BBN-VAX.ARPA>.
R: 220 BBN-VAX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIE.ARPA
R: 250 BBN-VAX.ARPA
S: MAIL FROM:<@USC-ISIE.ARPA:JQPeMIT-AI.ARPA>
R: 250 OK
S: RCPT TO: <Jones@BBN-VAX.ARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Received: from MIT-AI.ARPA by DSC-ISIE.ARPA ;
2 Nov 97 22:40:10 UT
S: Date: 2 Nov 97 22:33:44
S: From: John Q. Public <JQP@MIT-AI.ARPA>
S: Subject: Hello
S: To: Jones@BBN-Vax.ARPA
S:
S: Hello! I am John.
S: .
R: 250 OK
S: QUIT
R: 221 USC-ISIE.ARPA Service closing transmission channel