Это мой первый блог :)
Home
 

Принцип работы 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

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

microsoft.com — собственно имя домена, о котором мы спрашивали. •MX preference = 10 — число, говорящее SMTP-серверу какому из вариантов лучше отдавать предпочтение. mail
exchanger = mail1.microsoft.com — один из серверов, которому можно отдать почту для домена microsoft.com.

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

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

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

Материал взят с сайта http://sibout.chat.ru/premail.htm.

23.05.2012 This post was written by Categories: Компьютерные сети No comments yet


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Top