Маршрутизация электронной почты в Интернет.

Существует множество стандартов обмена электронной почтой. В данный момент основным стандартом в Интернет является RFC822, дополненный некоторыми другими стандартами (например, стандартами про обмен нетекстовой информации). Также большое распространение получили предшествующие Интернету UUCP сети, до сих пор пользующиеся популярностью.

Один из наиболее важных применений Интернета с момента его создания является электронная почта. Она начиналась как простой сервис, копирующий файл с одной на другую машину и добавляющий его к почтовому ящику получателя. В данный момент e-mail - это сложная система, которая базируется на множестве стандартов, протоколов и программ.

Для создания высокоэфективных почтовых клиентов и серверов, очень важно понимать то, как работает маршрутизация почты в Интеренет. Знание основ маршрутизации также может помочь в решении простых пользовательских проблем доставки почты.

Программа при помощи которой пользователь пишет и читает почту называется почтовым пользовательским агентом (mail user agent - MUA). MUA сам непосредственно не занимается доставкой почты, для этого он передает управление почтовому транспортному агенту (mail transport agent - MTA). MTA занимается вопросами маршрутизации почты. Однин из первых MTA был sendmail Университета Berkeley – до сих пор являющийся наиболее распространённым в Интернете, во многом благодаря очень гибким настройкам. Первоначальный автор Eric Allman, забросивший sendmail в своё время, теперь активно работает над ним снова. Большинство новшеств было реализовано сначала именно в sendmail’е. Маршрутизация - процесс нахождения оптимального пути от отправителя к получателю писма. После того как MTA находит необходимый маршрут для письма, он передаёт управление почтовому агенту доставки (mail delivery agent – MDA) - программе которая занимается непосредственно доставкой писем определенным транспортом (локальная доствка, по UUCP или SMTP протоколу). MDA могут быть совмещены с MTA sendmail’е, например, встроенный SMTP MDA). В случае невозможности доставки почты, MTA возвращают письмо обратно отправителю, с указанием проблемы.

Адресация

Существует огромное множество стандартов представления электронного адреса. Это может быть просто имя пользователя в системе, а может быть и адресом X.400 – множеством данных о получателе, на основании которого MTA ищет получателя в базе данных X.500.

На локальной машине адрес обычно состоит только из имени пользователя на этой машине.

Пример:

vg – пользователь vg

root – пользователь root

Перед появлением Интернет огромное распространения имела сеть машин соединеённых при помощи UUCP протокола. Эта сеть и сейчас очень распространена на машинах с подключением через коммутируемые телефонные линии. В этой сети письмо зачастую не может быть доставлено непосредственно получателю – оно проходит через множество промежуточных машин. Цепочка машин, через которые проходит письмо, указывается непосредственно в адресе получателя. При такой адресации отправитель должен был хорошо знать топологию сети на момент отправки письма.

В UUCP мире адрес состоит из цепочки компьютеров, через которые должно пройти письмо (естественно соседние компьютеры в цепочке должны иметь реулярные UUCP соединения), разделённых восклицательным знаком и именем пользователя после последнего воскличательного знака.

Пример:

cec!vg – пользователь vg на компьтере cec

ernie!bert!moria!root – пользователь root, на компьютере moria, письмок которому должно последовательно пройте через цепочку компьютеров ernie, bert, moria.

После распространения сетей на основе протокола TCP/IP и создания Интернет, распространение получила доменная адресация (стандарт RFC822). При этом в адресе обычно нет указаний о маршрутизации письма. В общем случае адрес пользователя составляется из доменного имени компьютера и имени пользователя на этом компьютере разделённых знаком @ (причём имя пользователя идёт первым).

Пример:

root@localhost – пользователь root на локальной машине

posmaster@vstu.vinnica.uaпользователь postmaster на компьтере vstu.vinnica.ua

president@whitehouse.gov пользователь president на компьтере whitehouse.gov

В доменной форме адреса тоже есть способ указать маршрут письма. Если адрес получателя указать в форме @hostA,@hostB:user@hostC, то письмо сначала будет отправлено на машину hostA, оттуда на машину hostB, а оттуда уже пользователю user на машине hostC. Также адрес можно указать в форме user%hostB@hostA, тогда письмо сначала будет отправлено на машину hostA, а оттуда пользователю user на машине hostB.

В данный момент в UUCP адресах можно использовать дорменные имена.

Пример:

cec!lucky.net!postmaster – письмо пройдёт через машину cec, которая отправит его пользователю postmaster на машине с доменным именем lucky.net.

Маршрутизация

В простейшем случае и отправитель, и получатель письма – пользователи одной машины. В этом случае MTA не занимается маршрутизацией, а просто передает письмо MDA для локальной доствки. MDA проверяет наличие пользователя на данной машине, и добавляет письмо к почтовому ящику получателя.

В мире TCP/IP почта в основном доставляется напрямую от отправителя к получателю, используя протокол SMTP (описанный в RFC821). Почтовый транспортный агент машины отправителя соединяется с SMTP демоном на машине получателя.

Маршрутизация в UUCP сетях

В UUCP сетях маршрут обычно уже присутствует в адресе получателя. Поэтому основной проблемой является построение правилного адреса. Для того чтобы построить правильную цепочку машин, до получателя, необходимо хорошо знать топологию сети. Частично в этом помогает созданный в Rutgers University The UUCP Mapping Project. По этому проэкту все официальные имена UUCP машин регистрируются, с информацией о их соседних машинах. Затем публикуются Usenet Maps в которых для каждой официально зарегистрированой UUCP машины указваются её соседние UUCP машины. Затем, при помощи этих карт можно построить правильный путь к машине получателю.

Пример записи в Usenet Maps:

moria

bert(DAILY/2),

swim(WEEKLY)

Здесь показано, что машина moria, два раза в день имеет связь с машиной bert, и раз в неделю - связь с машиной swim.

 

Маршрутизация в TCP/IP сетях

В TCP/IP сетях для определения машины, куда будет доставлена почта используется доменная система имён (DNS). По умолчанию для доставки почты MTA ищет IP адрес получателя и отправляет письмо при момощи SMTP протокола (стандарт RFC821) SMTP демону на машине получателя.

Однако многие узлы обычно хотят, чтобы почта к ним доставлялась не напрямую, а через специальную сервер, который принимает всю почту для этой машины и доставляет её локально. Для этого используется запись MX (обозначает Mail eXchanger) в базе данных DNS для данного узла, в которой указывается машина, через которую почта будет доставляться к данной.

Запись MX также содержит поле приоритета. В поле приоритета содержится целое положительное число. При наличии нескольких записей MX для одного узла, транспортный агент пытается доставить почту используя MX с минимальным полем приоритета. Если это не удаётся, MTA пробует машину с большем полем приоритета и т.д. Если письмо не удалось доставить ни на одну машину указанную в MX’ах, то MTA повторит доствку через некоторое время (при этом часто отсылается отправителю отсылается предупреждение о проблемах с доставкой почты). Если за определенное время письмо не удалось доставить (обычно это 5 суток), MTA прекращает попытки доставить письмо и отсылает отправителю письмо с описанием проблеммы.

Пример:

Запись DNS:

solo.foobar.com IN MX 5 solo.foobar.com

solo.foobar.com IN MX 10 mailhub.foobar.com

- MTA сначала попытается доставить почту на машину solo.foobar.com, а если solo.foobar.com не доступна, то на машину mailhub.foobar.com.

Если локальный узел сам является MX’ом для узла получателя, то MTA не пытается отправить почту на узлы у которых поле приоритета больше или равно полю приоритета для локального узла, этим предотвращаются почтовые петли.

Запись MX можно ставить на целые домены, в этом случае вся почта для данного домена будет идти через, сервер указаный в записи MX.

Пример:

Запись DNS

foobar.com IN MX 5 mailhub.foobar.com

для всех машин в домене foobar.com почта должна быть отправлена на машину mailhub.foobar.com, которая уже доставит эту почту локально.

Для маршрутизации в TCP/IP можно также использовать адрес в специальной форме.

Стык UUCP и TCP/IP

Запись MX может также использоваться для маршрутизации почты для узлов не подключенных к Интернет непосредственно (например UUCP сети). При этом в MX записи указывается машина, которая знает как доставить письмо к получателю.

В данный момент практически не осталось больших UUCP сетей – большинство UUCP машин среди своих соседей имеют машину, непосредственно подключенную к Интернету.

Пример:

машина rts.vinnica.ua не имеет непосредственного подключения к Интернет, а вся почта к ней должна направляться через машину eagle.nest.vinnica.ua. В DNS для машины rts.vinnica.ua стоит:

rts.vinnica.ua. IN MX 10 eagle.nest.vinnica.ua

а в конфигурации MTA машины eagle.nest.vinnica.ua указано что всю почту на машину rts.vinnica.ua необходимо отправлять через UUCP.

 


[назад][содержание][вперед]

Hosted by uCoz