Анатомия почтового сообщения
Категория: Электронная почта | Автор: admin | 23-05-2010, 22:21 | Просмотров: 3446

Прежде чем перейти к вопросам конфигурирования программы sendmail, рассмотрим структуру электронного сообщения. Оно состоит из трех частей:

  • конверт;
  • заголовки;
  • тело.

Конверт определяет, куда должно быть доставлено сообщение или куда его требуется возвратить в случае, если доставка невозможна. Обычно эти адреса соответствуют указанным в заголовках "From" и "То", хотя они формируются отдельно средствами агента подачи почты. Конверт невидим для пользователя и является внутренним средством программы sendmail.

Заголовки — это набор пар свойство/значение, отформатированных в соответствии с документом RFC822. В них содержится различная информация о сообщении, в том числе дата и время его отправки, а также транспортные агенты, через которые оно прошло на своем пути. Заголовки — это неотъемлемая часть сообщения, но пользовательские агенты часто скрывают некоторые менее интересные заголовки при отображении сообщения.

Тело сообщения — это та информация, которую собственно и требуется переслать. Тело сообщения должно содержать ASCII-текст, однако часто он представляет собой двоичные данные в специальной почтовой кодировке.

В параграфах, посвященных вопросам конфигурирования, мы иногда будем говорить об отправителе и получателях конверта, а иногда — об отправителе и получателях, указанных в заголовках. Там, где из контекста не ясно, о чем идет речь, тип адреса будет конкретизирован.

 

Адресация почты

 

Механизм локальной адресации прост, потому что регистрационное имя пользователя является уникальным идентификатором. Если же у адресата нет учетной записи на локальном компьютере, то адресация и доставка усложняются.

Есть два вида почтовых адресов: маршрутно-зависимые (относительные) и маршрутно-независимые (абсолютные). При использовании первого способа адресации требуется, чтобы отправитель знал промежуточные компьютеры, через которые должно пройти сообщение на пути к получателю. В адресе второго вида просто указывается пункт назначения. UUCP-адреса являются маршрутно-зависимыми, а Internet-адреса обычно не зависят от маршрута.

Почтовый Internet-адрес имеет следующий формат:

пользователь@узел.домен

 

где символ @ отделяет имя пользователя от спецификации сетевого узла. Электронные сообщения доставляются в почтовый ящик указанного пользователя на компьютере узел.домен. В большинстве случаев домен — это обычный DNS-домен. Например, в адресе evi@boulder.coiorado.edu часть "evi" соответствует имени пользователя, "boulder" — это имя узла, а colorado.edu — имя домена.

 

Раньше применялись адреса и других типов. В частности, речь идет о некоторых вариантах маршрутно-зависимых адресов. Мы не будем описывать их детально, так как они устарели. Вместо этого приведем таблицу, в которой показаны примеры таких адресов и их современные эквиваленты.

Таблица 19.4. Примеры устаревших маршрутно-зависимых адресов

Тип адреса

Пример

Современная форма

UUCP

mcvax!uunet!ucbvax!hao!boulder!lair!evi

evi@lair

Маршрутно-зависимый

<@узел 1,@узел2,...@узелN:пользователь @конечный_узел>

пользователь@конечный_узел

Процентный

пользователь%узел1%узел2@узел3

пользователь@узел1 

 

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

 

Заголовки почтовых сообщений

 

Каждое электронное сообщение начинается несколькими строками, которые называются заголовками и содержат информацию о сообщении. Любой заголовок начинается с ключевых слов, таких как "То", "From" или "Subject", после которых следуют символ двоеточия и содержимое заголовка. Формат стандартных заголовков определен в документе RFC822. Однако допускаются и заголовки других типов. Любой заголовок, начинающийся символами "Х-", игнорируется почтовой системой, но пересылается вместе с сообщением. Следовательно, можно добавить в сообщение заголовок наподобие "X-Joke-of-the-Day" и не беспокоиться о том, способна ли почтовая система обработать его.

Одни заголовки добавляет пользовательский агент, а другие — транспортный. Некоторые заголовки отражают путь сообщения. Большинство пользовательских агентов скрывает эти неинтересные заголовки от пользователей, но, как правило, всегда имеется возможность заставить агента показать их. Чтение заголовков становится важным делом, когда вас бомбардируют спамом и нужно проследить, откуда он поступает. Ниже приведен блок заголовков простого сообщения.

 

From evi Wed Jan 19 19:01:11 2000

Received:  (from evi@localhost) by xor.com (8.9.3/8.9.3)  is TAA17820;

Wed,   19 Jan 2000 19:01:11 -0700(MST)

Date: Wed,  19 Jan 2000 19:01:11 -0700  (MST)

From: Evi Nemeth <Evi.Nemeth@xor.com>

Message-Id: <200001200201.TAA17820@xor.com>

To: trent@xor.com

Subject: xor.mc

Cc:

Status:  R

-------- тело сообщения ----------

 

 

Это сообщение не покидало локальной машины. Его отправитель — пользователь evi, а получатель — пользователь trent. Первая строка "From" добавлена программой mail.local, которая в данном случае выступила в качестве агента доставки. Заголовок "Status" добавлен программой чтения почты пользователя evi, а другие заголовки — программой sendmail (транспортным агентом). Каждый компьютер, участвующий в процессе передачи сообщения, добавляет заголовок "Received".

Заголовки электронного сообщения содержат массу информации о том, где было сообщение, как долго оно там оставалось и когда, наконец, было доставлено адресату. Ниже подробно описаны заголовки почтового сообщения, посланного через Internet. Мы расскажем о назначении различных заголовков, а также о том, какие программы их добавляют. Номера строк (слева) даны для справки и частью сообщения не являются. Некоторые заголовки разбиты на несколько строк, чтобы пример поместился на странице.

1: From eric@knecht.sendmail.org

 

Первую строку добавила программа /bin/mail или mail.local в процессе доставки, чтобы отделить это сообщение от других сообщений, находящихся в почтовом ящике пользователя-получателя. Программы чтения почты распознают границы сообщений путем поиска пустой строки, за которой следует слово "From" (здесь обязательно наличие конечного пробела). Эта строка не существует до тех пор, пока сообщение не будет доставлено, и ее не следует путать со строкой, начинающейся выражением "From:". Многие программы чтения почты не отображают строку "From", поэтому ее можно и не увидеть.

 

2: Return-Path: eric@knecht.sendmail.org

3: Received: from anchor.cs.Colorado.EDU (root@anchor.cs.colorado.edu [128.138.242.1]) by columbine.cs.colorado.edu  (8.9.3/8.9.2) with ESMTP id HAA21741 for <evi@rupertsberg.cs.Colorado.edu>; Fri,  1 Oct 1999 07:04:25 -0700   (MST)

4: Received: frommroe.colorado.edu (mroe.colcrado.edu [128.138.243.151]) by anchor.cs.colorado.edu  (8.9.3/8.9.2)  with ESMTP id   HAA26176 for <evi@anchor.cs.Colorado.edu>; Fri,  1 Oct 1999 07:04:24 -0700  (MST)

5: Received:  from knecht.sendmail.org  (knecht.sendmail.org

[209.31.233.160]) bymroe.cs.colorado.edu  (8.9.3/8.9.2)  with ESMTP id HAA09899 for <evi@anchor.cs. Colorado.edu>; Fri,  1 Oct 1999 07:04:23 -0700   (MST)

6: Received: from knecht.sendmail.org  (localhost  [127.0.0.1]) by knecht.sendmail.org  (8.9.3/8.9.3) with ESMTP id GAA18984; Fri,   1 Oct 1999 06:04:02 -800   (PST)

 

 

В строке 2 указан адрес для возврата сообщения. Причем он может отличаться от адреса, указанного ранее в строке "From". Сообщение об ошибке посылается по адресу, заданному с строке "Return-Path", которая содержит адрес конверта отправителя.

В строках 3—6 содержится информация о продвижении сообщения по различным системам на пути к почтовому ящику пользователя. Каждый компьютер, который обрабатывает электронное сообщение, добавляет к его заголовку строку "Received". Новые строки размещаются вверху, поэтому, читая строки "Received" последовательно, можно проследить путь сообщения в обратном порядке (от получателя к отправителю). Однако если сообщение является частью спама, то единственная строка "Received", которой можно доверять, — это строка, сгенерированная локальным компьютером.

Каждая строка "Received" содержит имя машины-отправителя, имя машины-получателя, данные о версии программы sendmail (или другого транспортного агента) на машине-получателе, уникальный идентификатор сообщения на машине-получателе, данные о пользователе-получателе, дату, время и разность между временем в данном часовом поясе и временем по Гринвичу. Эти сведения берутся из внутренних макроконстант программы sendmail. Рассмотрим приведенные выше строки, начиная с последней, и проследим путь сообщения от отправителя к получателю.

Из строки 6 видно, что сообщение поступило из интерфейса localhost (который был выбран пользовательским агентом Эрика Оллмана, программой exmh, для установления соединения) узла knecht на внешний интерфейс этого узла посредством псевдоустройства обратной связи. В строке 5 отражен тот факт, что компьютер knecht направил сообщение по адресу mroe.cs.colo-rado.edu, несмотря на то что заданный пользователем адрес — evi@an-chor.cs.colorado.edu. Быстрая проверка посредством программы nslookup или dig показывает, что узел anchor имеет запись MX, которая ссылается на компьютер mroe, что и вызывает перенаправление сообщения. Строка 5 демонстрирует различие между адресом конверта (evi@mroe.cs.colorado.edu) и адресом получателя, указанным в заголовке (evi@anchor.cs.colorado.edu).

 

На компьютере mroe работает программа sendmail версии 8.9.3, и эта программа присвоила данному сообщению идентификатор очереди НАА09899. Затем сообщение было послано на узел anchor.cs.colorado.edu (строка 4), после чего сразу же перенаправлено по адресу evi@rupertsberg.cs.colorado.edu (строка 3). Очередная смена адреса вызвана наличием псевдонима (подробнее об этом рассказывается в параграфе 19.4).

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

Строки 5 и 4 содержат текст "for <evi@anchor.cs.colorado.edu>". Он определяет, как выглядит адрес получателя, когда сообщение поступает на локальный узел. Эта информация полезна, если нужно исключить пользователя из списка рассылки, отправив сообщение об отказе с того компьютера, с которого была произведена подписка (возможно, много лет тому назад), либо узнав адрес этого компьютера и включив его в тело сообщения.

В финальном заголовке "Received" (строка 3) содержится текст "for <evi@rupertsberg.cs.colorado.edu>". Значение макроконстанты программы sendmail, хранящей адрес получателя, было изменено при помощи псевдонима на узле anchor. Но вместо узла rupertsberg.cs.colorado.edu сообщение было доставлено на компьютер columbine. Просмотр записей DNS показывает, что на компьютере rupertsberg есть записи MX, ссылающиеся на компьютер columbine. Они были определены в тот период, когда компьютер rupertsberg обновлялся. Вероятно, по завершении работы эти записи забыли отменить.

Компьютер columbine, на котором работает программа sendmail версии 8.9.3, доставил сообщение в почтовый ящик Эви Немет (идентификатор очереди — НАА21741).

7: Message-Id: <1999100011404.GAA18984@kr.echt.sendmail.org>

 

В строке 7 содержится идентификатор сообщения. Он отличается от идентификатора очереди, уникален во всемирной системе электронной почты и добавляется к сообщению, когда оно попадает в почтовую систему.

 

8: X-Mailer: exmh version 2.0.2 2/24/98

9: То: Evi Nemeth <evi@anchor.cs. Colorado .edu>

10: From: Eric Allman <eric@sendmail.com>

11: CC: eric@sendmail.com

12: Subject: Re: hi

13: Date:  Fri,  1 Oct 1999 06:04:02 -800

 

 

В строке 8 в качестве пользовательского агента Эрика Оллмана указана программа exmh. Она сама добавила эту строку в заголовок. Заголовки, которые начинаются символами "Х-", не являются стандартными. В то время, когда разрабатывались стандарты электронной почты, никто не мог представить, что когда-нибудь понадобится более чем один пользовательский агент, поэтому такой заголовок и не был включен в число стандартных.

Строки с 9 по 13 — стандартные. Заголовок "Subject", вообще-то, не нужен, но большинство пользовательских агентов включает его. Строка "То" содержит адрес основного получателя (или получателей). В строке "Date" указываются дата и время отправки сообщения. В данном случае время отправки почти совпадает с заданным в строках "Received", несмотря на то, что все значения брались на разных компьютерах.

Строки "Received" обычно добавляются транспортными агентами, а другие заголовки создаются пользовательскими агентами. Некоторые пользовательские агенты работают некорректно и не добавляют нужных заголовков. В этом случае на помощь приходит программа sendmail.

Первая строка "Received" обычно создается машиной-отправителем, когда сообщение поступает на выходной интерфейс. Иногда эта строка включает фразу "ident", которая содержит регистрационное имя отправителя. Это имя совпадает с указанным в строке "From" (если последнюю не подменили). В нашем примере на компьютере Эрика knecht не запущен демон, реализующий эту функцию (identd), поэтому фраза "ident" у нас отсутствует.

На рис. Б изображен путь сообщения по системе электронной почты. Показано, какие действия, где и какими программами выполнялись.

Анатомия почтового сообщения

Нетрудно заметить, что программа sendmail в данном процессе выполняет роль рабочей лошадки. Эта программа занималась сообщением с момента его выхода из программы exmh вплоть до прибытия на компьютер columbine для доставки адресату.


 (голосов: 2)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page