Принцип работы E-mail


Задумывались ли Вы когда-нибудь, отправляя письмо (электронное, естественно :), как оно оказывается у адресата? Совершенно верно, гражданин с третьего ряда, доходит по Интернету. А как? Рассмотрим на конкретном примере.

Предположим, что Вы с адреса vasya@provider.ru хотите отправить на адрес billg@microsoft.com свои восторженные отзывы об операционной системе Windows98®. Сначала, естественно, пишете письмо в почтовом клиенте, после чего нажимаете кнопку "отправить". Что происходит дальше? Если всё правильно настроено, то письмо уходит. Куда? На сервер исходящей почты, скорее всего - находящийся у вашего провайдера. Сокращённо - SMTP-сервер, где SMTP - это Simple Mail Transfer Protocol, протокол ("язык"), по которому общаются почтовый клиент и сервер.

Итак, письмо уже лежит на сервере Вашего провайдера (хотя на самом деле не "уже", а "ещё", потому что это ещё очень далеко от того места, где ему предстоит быть через несколько минут). Ваш почтовый клиент от сервера уже отсоединился, так что сервер остался наедине с Вашим письмом и с прочей информацией, переданной ему во время SMTP-сессии. К счастью, этого более чем достаточно, чтобы передать письмо дальше. Главное - он знает адрес получателя, указанный в письме. Тут стоит сделать небольшое отступление (кому уже скучно - может это пропустить). Дело в том, что, как ни странно, адрес из поля "To:" (или "Кому:") вовсе не обязан совпадать с тем адресом, куда письмо идёт. За примером далеко ходить не надо - если Вы подписаны на рассылки Subscribe.ru, то Вам наверняка приходили письма с адресом назначения, например, "news.citycat". Секрет в том, что на самом деле адрес, куда пойдёт письмо, указывается почтовым клиентом SMTP-серверу в начале SMTP-сессии. А уже потом передаётся письмо вместе с полем "Кому:". Но в письмах, отправленных большинством почтовых клиентов, эти два адреса совпадают. Что же означает адрес billg@microsoft.com? Обычно адреса электронной почты состоят из двух частей, разделённых знаком "@" - его обычно называют "собака". Всё, что идёт до "@" - имя адресата в домене, а всё, что после - домен электронной почты (именно домен, а не сервер - сервера с таким именем в Интернете может даже не существовать). Но пока что для сервера важно только имя домена. Именно оно говорит ему, куда передавать письмо дальше. Но, как я уже сказал, он не может просто соединиться с компьютером с тем именем и отдать ему письмо, потому что имя домена - это просто сочетание букв, за которым может никого не стоять. Поэтому серверу приходится сначала узнать, кому он должен отдать письмо, чтобы оно пришло кому-либо в заданном домене. В этом ему поможет DNS (Domain Name System) - весьма сложная распределённая по всему миру база данных, содержащая всевозможную информацию о доменах, и о почтовых в том числе (поподробнее о её работе можно прочитать, например, у Cooler'а в сисадминских байках). Если всё хорошенько упростить, то SMTP-сервер просто отправляет запрос и получает ответ примерно такого вида:

microsoft.com MX preference = 10, mail exchanger = mail1.microsoft.com
microsoft.com MX preference = 10, mail exchanger = mail2.microsoft.com
microsoft.com MX preference = 10, mail exchanger = mail3.microsoft.com
microsoft.com MX preference = 10, mail exchanger = mail4.microsoft.com
microsoft.com MX preference = 10, mail exchanger = mail5.microsoft.com

Каждая строчка содержит следующую информацию (на примере первой):

То есть вышеприведённый ответ говорит SMTP-серверу, что почту для домена microsoft.com можно отдать любому из перечисленных серверов, неважно какому.

После получения ответа SMTP-сервер соединяется с одним из выданных ему адресов и отдаёт почту, пользуясь тем же самым протоколом SMTP или его расширением ESMTP. Если не получилось (например, что-то случилось с тем сервером) - пробует отдать почту другому серверу из перечисленных. Если ни с одним из серверов ничего не получилось (например, повреждён трансатлантический кабель) - подождёт некоторое время и снова попробует. Если долго ничего не будет получаться - отправит Вам уведомление о невозможности доставки.

Но предположим, что всё получилось и письмо уже лежит на одном из этих серверов. Что этот сервер с ним сделает дальше, мне достоверно не известно, но позволю себе некоторые предположения. Например, он может уже посмотреть на имя адресата, идущее до знака "@" - "billg" в данном случае - и в зависимости от него передать это письмо ещё куда-то. Пусть, к примеру, на pop.offices301-370.microsoft.com (причём из соображений безопасности этого сервера из Интернета уже может быть и не видно). А этот сервер передаёт... Нет, не передаёт. Должно жи письмо в конце концов куда-то придти :) Так что письмо остаётся лежать тут. До тех пор, пока одна из секретарш адресата не нажмёт в почтовом клиенте кнопку приёма почты. Тогда её почтовый клиент соединится с этим сервером и по одному из протоколов приёма почты (к примеру, по POP3 - Post Office Protocol version 3) заберёт накопившиеся сообщения к ней на компьютер. На этом, скорее всего, путь письма и закончится - она глянет на письмо и привычным движением нажмёт давно истёршуюся кнопку 'Del'.

ИСТОЧНИК: Michael Vladimirov
it.sinor.ru

Вернуться


animail.gif