четверг, 14 марта 2013 г.

Современная архитектура (SMTP)

Общепринятым в мире протоколом обмена электронной почтой является SMTP (англ. Simple mail transfer protocol — простой протокол передачи почты). В общепринятой реализации он использует DNS для определения правил пересылки почты (хотя в частных системах, вроде Microsoft Exchange, SMTP может действовать исходя из информации из других источников).

В различных доменах настроены свои, независимые друг от друга, почтовые системы. У каждого почтового домена может быть несколько пользователей. (Однако, фактически, может быть так, что одна организация или персона владеет многими доменами, которые обслуживаются (физически) одной почтовой системой). Почта передаётся между узлами с использованием программ пересылки почты (англ. Mail transfer agent, MTA; такими, как, например, sendmail, exim4, postfix, Microsoft Exchange Server, Lotus Domino и т. д.). Поведение систем при связи друг с другом строго стандартизировано, для этого используется протокол SMTP (и соблюдение этого стандарта, наравне с всеобщей поддержкой DNS всеми участниками, является основой для возможности связи «всех со всеми» без предварительных договорённостей). Взаимодействие почтовой системы и пользователей, в общем случае, никак не регламентируется и может быть произвольным, хотя существуют как открытые, так и закрытые (завязанные на ПО конкретных производителей) протоколы взаимодействия между пользователями и почтовой системой. Программа, работающая в почтовой системе и обслуживающая пользователей, называется MDA (англ. mail delivery agent, агент доставки почты). В некоторых почтовых системах MDA и MTA могут быть объединены в одну программу, в других системах могут быть разнесены в виде разных программ или вообще выполняться на различных серверах. Программа, с помощью которой пользователь осуществляет доступ, называется MUA (англ. mail user agent). В случае использования веб-интерфейса для работы с почтой, ее роль выполняет приложение веб-интерфейса, запускаемое на сервере.

Внутри заданной почтовой системы (обычно находящейся в рамках одной организации) может быть множество почтовых серверов, выполняющих как пересылку почты внутри организации, так и другие, связанные с электронной почтой задачи: фильтрацию спама, проверку вложений антивирусом, обеспечение автоответа, архивация входящей/исходящей почты, обеспечение доступа пользователям различными методами (от POP3 до ActiveSync). Взаимодействие между серверами в рамках одной почтовой системы может быть как подчинено общим правилам (использование DNS и правил маршрутизации почты с помощью протокола SMTP), так и следовать собственным правилам компании (используемого программного обеспечения).

Релеи

DNS позволяет указать в качестве принимающего сервера (MX-запись) любой узел интернета, не обязательно являющийся частью доменной зоны домена получателя. Это может использоваться для настройки релеинга (пересылки) почты через третьи серверы. Сторонний сервер (например, более надёжный, чем серверы пользователя) принимает почту для домена пользователя и пересылает его на почтовые серверы пользователя как только появляется возможность. Исторически контроля за тем, «кому пересылать» почту, не было (или этому не придавали должного значения) и серверы без подобного контроля передавали почту на любые домены. Такие серверы называются открытыми релеями (в настоящее время новые открытые релеи появляются в основном из-за ошибок в конфигурировании).

Для своих пользователей серверы почтовой системы являются релеями (пользователи отправляют почту не на серверы почтовой системы адресата, а на «свой» почтовый сервер, который передаёт письма далее). Во многих сетях провайдеров возможность отправлять письма по протоколу SMTP за пределы сети закрыта (из-за использования этой возможности троянами, вирусами). В этом случае провайдер предоставляет свой SMTP-сервер, через который и направляется вся почта за пределы сети. Открытым релеем при этом считается такой релей, который не проверяет, является ли пользователь «своим» (проверка может осуществляться как на основании сетевого адреса компьютера пользователя, так и на основании идентификации пользователя паролем/сертификатом).

Маршрутизация почты

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

При маршрутизации используется только доменная часть адреса получателя (то есть часть, находящаяся после символа @). Для домена получателя ищутся все MX-записи. Они сортируются в порядке убывания приоритета. Если адрес почтового сервера совпадает с одним из узлов, указанных в MX-записях, то все записи с приоритетом меньшим приоритета узла в MX-записи (а также MX-запись самого узла) отбрасываются, а доставка осуществляется на первый отвечающий узел (узлы пробуются в порядке убывания приоритета). Если MX-запись для домена не найдена, то некоторые серверы могут пытаться доставлять почту по A-записи. Если же записи о домене нет, то формируется отлуп (сообщение о невозможности доставки). Это сообщение формируется с пустым полем отправителя, в поле «Кому» указывается отправитель исходного письма. Пустое поле отправителя позволяет защитить почтовые сервера от бесконечного хождения сообщений об ошибке между серверами — если сервер обнаруживает, что не может доставить письмо с пустым обратным адресом, то он уничтожает его.

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

Комментариев нет:

Отправить комментарий