Служба Exchange 2013 Mailbox Transport

Служба Exchange 2013 Mailbox Transport
www.microsoft.com

Служба Exchange 2013 Mailbox Transport отвечает за взаимодействие с почтовыми базами данных и фактически состоит из двух отдельных служб Windows – Microsoft Exchange Mailbox Transport Delivery и Microsoft Exchange Mailbox Transport Submission. Каждая из них отвечает за отдельную задачу, но обе взаимодействуют с Транспортной службой на серверах с ролью MBX. В этой статье я расскажу подробно о последней оставшейся службе транспорта Exchange 2013, фундаментально отличающейся от всех остальных.

Это третья статья из серии, посвященной принципам работы служб транспортного конвейера Exchange 2013, а вот полный список:

А также статьи по управлению логированием этих служб:

Не забывайте про официальную документацию.


Найти больше информации по настройке и администрированию Exchange 2013 на моем блоге вы сможете в основной статье тематики — Exchange 2013 — Установка, настройка, администрирование.


Exchange 2013 Mailbox Transport

В Exchange 2013 существуют несколько служб транспорта, назначение которых отличается фундаментально, хоть и задача у них одна единственная – участвовать в транспортировке почтовых данных. В предыдущих статьях я составлял список всех компонентов транспортного конвейера, напомню его и в этой:

  • Транспортная служба переднего плана на серверах клиентского доступа (Отображаемое имя — Microsoft Exchange FrontEnd Transport, сокращенное — MSExchangeFrontEndTransport);
  • Транспортная служба на серверах почтовых ящиков (Отображаемое имя — Microsoft Exchange Transport, сокращенное — MSExchangeTransport);
  • Транспортная служба почтовых ящиков на серверах почтовых ящиков (Реально включает в себя две службы — Microsoft Exchange Mailbox Transport Delivery и Microsoft Exchange Mailbox Transport Submission, сокращенные имена — MSExchangeDelivery и MSExchangeSubmission соответственно);
  • Транспортная служба на пограничных транспортных серверах (Отображаемое имя — Microsoft Exchange Transport, сокращенное — MSExchangeTransport).

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

Транспортный конвейер

После рассмотрения в предыдущих статьях службы FrontEnd Transport (Транспортная служба переднего плана – Служба Exchange 2013 FrontEnd Transport) на серверах клиентского доступа и службы Transport (Транспортная служба – Служба Exchange 2013 Transport) на серверах почтовых ящиков мы дошли до последней структурной единицы транспортного конвейера – службы Mailbox Transport (Транспортная служба почтовых ящиков). Также не будет лишним напомнить как вообще выглядит транспортный конвейер Exchange 2013:

Exchange 2013 Transport. Часть 1 - транспортный конвейер

В контексте данной статьи нас будет интересовать роль Сервер почтовых ящиков (MBX или MailBox Server) и конкретно одна служба этой роли – Транспортная служба почтовых ящиков. Убрав со схемы все ненужные элементы, получаем:

Exchange 2013 Mailbox Transport 01

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

Принцип работы

Хочу напомнить, что всего у Exchange 2013 есть три серверные роли — CAS, MBX и Edge (добавлена в Exchange Server 2013 SP1). Транспортная служба почтовых ящиков принадлежит к роли MBX.

Иллюстрации транспортного конвейера, присутствующие в моей статье, взяты с официальных источников 1. Стоит отметить, что на изображении и в русской документации потока обработки почты Exchange 2013 присутствуют некоторые различия в переводе. Например на рисунке выше служба MSExchangeSubmission имеет имя Транспортная служба отправки почты в почтовый ящик, в то время как в документации её ещё называют Транспортная служба отправки почтовых ящиков. Оба варианта имеют один и тот же смысл. Вторая служба – MSExchangeDelivery – также имеет два схожих варианта перевода – Транспортная служба доставки почты в почтовый ящик или Служба доставки транспорта почтовых ящиков. Очень сложно не запутаться, но вы постарайтесь.

Попробуем сформулировать основные принципы работы Mailbox Transport:

1. Только Транспортная служба почтовых ящиков взаимодействует с базами данных и делает это она по протоколу RPC. При этом речь идет только о локальных базах данных на конкретно взятом сервере с ролью MBX. С базами данных на других серверах эта служба не работает, а делает это через Транспортную службу на удаленном сервере, связываясь по протоколу SMTP. Вот что пишут по этому поводу в документации:

Только служба транспорта почтовых ящиков связывается с базой данных почтовых ящиков на локальном сервере почтовых ящиков.

Удаленные вызовы процедур (RPC) используются службой транспорта почтовых ящиков только для отправки и получения сообщений в локальной базе данных почтовых ящиков. … Другими словами, RPC никогда не используется для связи между серверами. Вместо этого служба транспорта почтовых ящиков и служба транспорта на разных серверах почтовых ящиков всегда связываются по протоколу SMTP.

Разумеется сказанное выше справедливо и для групп доступности баз данных (DAG) для серверов, на которых располагается активная реплика БД.

2. Углубляясь далее можно сказать, что RPC используется в обоих случаях – при доставке сообщений получателю и при их отправке. В первом случае Транспортная служба почтовых ящиков получает сообщение по протоколу SMTP от Транспортной службы на локальном или удаленном сервере и подключается по RPC к базе данных для доставки этого сообщения конечному получателю. Во втором случае также идет соединение с БД по RPC, но уже для извлечения отправляемого сообщения и его дальнейшей передаче Транспортной службе также по SMTP.

3. Поскольку Транспортная служба почтовых ящиков может обращаться к Транспортным службам на других серверах с ролью MBX, должен быть какой-то механизм выбора необходимого сервера для передачи сообщения. Этот механизм есть и он известен по предыдущей статье про Транспортную службу (Служба Exchange 2013 Transport) – это маршрутизация сообщений 2, которая использует таблицы маршрутизации для выбора оптимального пути и группы доставки как точки назначения.

Используя все преимущества маршрутизации на основе данных о топологии Active Directory, нужно не забыть про некоторые ограничения, частично озвученные выше – Транспортная служба почтовых ящиков взаимодействует только с Транспортными службами (на локальных или удаленных серверах), связывается по RPC только с локальными базами данных, но не с БД на других серверах, а также находится в одной и той же группе доставки (называемой локальная) с Транспортной службой, поскольку обе они принадлежат одной роли MBX.

4. Транспортная служба почтовых ящиков также использует агентов транспорта для реализации логики обработки сообщений, но, в отличие от Транспортной службы и Транспортной службы переднего плана, пользователям не предоставлено инструментов (SDK) для создания своих агентов.

Ну а теперь переходим к самому интересному.

Соединители приема и соединители отправки

Просматривая соединители приема, созданные по умолчанию на только что установленном сервере, вы обнаружите, что три соединителя принадлежат роли FrontendTransport, а два – HubTransport (название вероятно досталось по наследству от предыдущих версий Exchange). Это Транспортная служба переднего плана на серверах клиентского доступа и Транспортная служба на серверах почтовых ящиков. Места для Транспортной службы почтовых ящиков среди дефолтных соединителей, к сожалению, не нашлось (на самом деле оно и к лучшему, а то и так черт ногу сломит в этих коннекторах:) ).

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

Действительно, так оно и есть, служба имеет по одному системному соединителю приема и соединителю отправки:

  • Mailbox Proxy Send Connector (SMTP 25/2525 в Транспортную службу на других серверах почтовых ящиков);
  • Default Mailbox Delivery <Server Name> (SMTP 475 от Транспортной службы на других серверах почтовых ящиков).

Кстати, первый соединитель в русскоязычной версии Exchange 2013 будет иметь название Соединитель отправки прокси почтовых ящиков, а второй на русскоязычных серверах почему-то все также имеет английское название, но пишется совместно с именем сервера, например вот так: EXCH02\Default Mailbox Delivery EXCH02.

Соединители отправки, созданные вручную, к Транспортной службе почтовых ящиков никакого отношения не имеют.

Сведем полученные данные в таблицу:

Название Назначение Порт Направление
Mailbox Proxy Send Connector Отправка 25/2525 К Транспортной службе на локальном или удаленных серверах почтовых ящиков
Default Mailbox Delivery <Server Name> Прием 475 От Транспортной службы на локальном или удаленных серверах почтовых ящиков

Имея всю необходимую информацию, попробуем изобразить все на иллюстрации:

Exchange 2013 Mailbox Transport 02

С окончанием этой статьи вы знаете как функционируют все три ключевые службы транспортного конвейера Exchange 2013:

После этого вас не должна смутить ни одна “странная” запись в многочисленных логах транспортных служб конвейера.

Яндекс.Метрика