Версия 6.2 |
||||||||||||||||||||||||||||||||||
|
|
Каждый адрес электронной почты или адрес Сигналов состоит из двух строк: локальной части и имени домена. Обычно, адрес выглядит как xxxx@yyyyy, где yyyyy - это имя домена (уникальное имя почтовой системы получателя), а xxxx - это его локальная часть, то есть, имя пользователя в той системе.
Когда Маршрутизатор разбирает адрес, он извлекает имя системы, на которую должно быть доставлено сообщение. Оно становиться доменной частью адреса. Остальная часть адреса считается локальной частью - то есть, локальная часть определяет конкретного получателя, которому должны быть доставлены сообщения или сигналы, после доставки их в систему, заданную по имени домена. В примере, приведенном выше, zzzz является доменной частью имени, а xxxx@yyyyy - локальной частью.
Дополнительную информацию о форматах адреса электронной почты вы можете найти в RFC822 и сопутствующих документах.
Если в локальной части содержится сложный адрес (то есть в локальной части содержится имя (имена) домена и локальная часть), то локальная часть представляется с использованием символа '%': local%domain1%domain2; в классической форме в CommuniGate Pro этому соответствует полный адрес local%domain1%domain2@domain.
Когда имя домена извлекается из адреса, Маршрутизатор сравнивает его с именем домена Сервера (смотрите в настройках Общее). Если они совпадают, то значению имени домена присваивается пустая строка. Когда имя домена приравнивается к пустой строке, Маршрутизатор перезапускает обработку локальной части, снова пытаясь разделить её на доменную и локальную часть.
Например, если Имя Главного Домена вашего Сервера company.com, то адреса будут преобразованы следующим образом:
Адрес | локальная часть | доменная часть |
---|---|---|
support@company.com | support | company.com |
--- преобразовывается в ---> | support | |
<@company.com:sales@example.com> | sales@example.com | company.com |
--- преобразовывается в ---> | sales@example.com | |
--- преобразовывается в ---> | sales | example.com |
В дополнение к Главному Домену Сервера, ваш Сервер может обслуживать много независимых Доменов.
Для обработки Сообщений и Сигналов, направляемых на Домены вашего Сервера, вы должны убедиться, что Сообщения, отправленные в какой-либо домен, направляются на ваш Сервер, имеющий соответствующую запись в глобальной системе DNS.
Пример 1: ваш сервер (example.com) обслуживает Домен example.com и Домен partners-example.com. Убедитесь, что MX-записи DNS созданы для обоих Доменов, и что эти записи указывают на ваш Сервер example.com.
Пример 2: ваш сервер (example.com) работает как "Удалённый POP" почтовый релей для некоторых клиентов системы. Каждый домен имеет своё собственное имя домена (client1.com, client2.com и client3.com), и вы настроили ваш Маршрутизатор таким образом, что бы что вся электронная почта, направляемая на домен client1.com, перенаправлялась на общедоменного Пользователя client1, и т.д.
Для этого вы должны убедиться, что вся электронная почта, отправляемая в домен client1.com, направляется на ваш сервер (example.com). В DNS должна быть создана MX-запись client1.com, указывающая на ваш Сервер (example.com).
Когда разбирается адрес и извлекается его доменная часть, Маршрутизатор проверяет записи маршрутизации в Таблице Маршрутизации.
Для того, что бы настроить Таблицу Маршрутизации, используйте Веб Интерфейс Администратора. Откройте страницу Маршрутизатор в разделе Установки:
Каждая строка в Таблице Маршрутизации является записью маршрутизации. Запись маршрутизации содержит необязательные префиксы, левую часть, знак равно (=) и правую часть. Символ точка с запятой (;) используется для указания комментария после правой части записи маршрутизации. В Таблицу может быть добавлена строка с комментарием, начинающаяся с символа точка с запятой.
Маршрутизатор берет разобранный адрес (то есть доменную и локальные части адреса) и сканирует все записи в Таблице сверху вниз. Если найдена подходящая запись, то она применяется (как описано ниже), и модифицированный адрес снова обрабатывается в Маршрутизаторе.
Записи Маршрутизации могут иметь префиксы режима Ретрансляции (релей-префиксы): Relay: (может сокращаться до R:), NoRelay: (может сокращаться до N:) или RelayAll:. Дополнительную информацию смотрите в разделе Защита .
Если ни один из этих префиксов не указан, то по умолчанию используется префикс NoRelay:.
Левая часть записи Маршрутизации содержит Образец: строку с необязательным шаблоном подстановки.
Поддерживаются следующие шаблоны подстановки:Символ обратной косой черты (\) используется как управляющий символ: \\ обрабатывается как одна косая черта, \* обрабатывается как символ звёздочка и так далее.
В Образце разрешено использовать только один символ шаблона подстановки.
Правая часть записи Маршрутизации содержит Маршрут: строку с необязательным шаблоном подстановки *.
Если Образец Записи содержит соответствует обрабатываемому адресу, адрес изменяется согласно Маршруту Записи. Подстрока, соответствующая шаблону подстановки Образца, подставляется в шаблон подстановки Маршрута.
Символ обратной косой черты (\) используется как управляющий символ: \\ обрабатывается как одна косая черта, \* обрабатывается как символ звёздочка и так далее.
В Маршруте разрешено использовать только один символ шаблона подстановки.
Если левая часть записи Маршрутизации содержит имя домена, то запись определяет маршрут для всего этого домена.
Если при обработке какого-либо адреса имя домена соответствует имени домена, указанному в такой записи, то доменная часть заменяется правой частью записи маршрутизации.
Путь маршрутизации может указывать ретрансляторы (релеи).
Если электронная почта и Сигналы должны маршрутизироваться одинаковым или похожим образом для нескольких доменов, то вы можете использовать символ звёздочка (*) как шаблон подстановки.
Такой тип маршрутизации очень часто используется для обработки всех субдоменов в некотором домене.
Кроме записей маршрутизации уровня домена, маршрутизация для домена может задаваться также через записи уровня пользователя (смотрите ниже).
Записи для Общедоменных Пользователей так же являются записями маршрутизации уровня домена.
Если левая часть записи маршрутизации содержит адрес в угловых скобках(< и >), то это запись уровня Пользователя - правило маршрутизации для конкретного адреса.
Когда разбирается адрес и Маршрутизатор сканирует записи в Таблице, он сравнивает доменную часть адреса с доменной частью всех записей маршрутизации уровня Пользователя.
Если доменная часть совпадает, Маршрутизатор сравнивает локальную часть адреса с локальной частью адреса в записи уровня пользователя. Если обе, доменная и локальная части, совпадают, то правая часть записи маршрутизации уровня пользователя используется для формирования нового адреса. Маршрутизатор перезапускается, разбирает и обрабатывает этот новый адрес.
Обратите внимание: Из-за того, что Имя Главного Домена Сервера в разбираемом адресе сразу же заменяется пустой строкой, записи уровня пользователя, которые должны применяться к адресам в Главном Домене, вообще не должны содержать никакой доменной части.
В примере ниже mycompany.com является Именем Главного Домена Сервера.
Правая часть записи уровня пользователя может быть любым адресом.
Вы можете использовать шаблон подстановки (*) в локальной части записи уровня пользователя. Этот же символ может быть использован и любой части адреса в правой части для задания строки подстановки.
В большинстве случаев вы не должны использовать записи Маршрутизатора уровня пользователя: если возникает необходимость использования альтернативных имён для какого-нибудь Пользователя, используйте вместо этого Псевдонимы Пользователя. Если вам необходимо перенаправить электронную почту и Сигналы, отправленные на какое-либо имя в локальном Домене Сервера на какой-нибудь другой адрес, используйте Переадресаторы.
Вы можете создать псевдоним для конкретного пользователя чужой системы. Например, если вся электронная почта, отправленная в какой-нибудь домен, должна быть перенаправлена на определённый почтовый хост или на объединённого пользователя, но определённые адреса в этом домене должны быть направлены на адреса на вашей или другой системе.
Шаблон подстановки (*) может использоваться только в локальной части полного имени пользователя (то есть до символа @).
Вы можете использовать возможности шаблона подстановки для обслуживания нескольких доменов в одном Домене CommuniGate Pro, создав уникальное "адресное пространство" для каждого имени домена.
Этот метод может использоваться когда вы не хотите создавать полнофункциональные Домены CommuniGate Pro для доменов, содержащих в лучшем случае нескольких Пользователей.
В записях уровня пользователя в доменной части может использоваться шаблон подстановки (*). Эти записи применяются к адресам, которые имеются в любом локальном Домене (то есть в Домене, созданном на Сервере или в Кластере Сервера CommuniGate Pro). Правая часть адреса такой записи указывает адрес в этом же локальном Домене.
Если в правой части адреса имеется доменная часть, то адрес перенаправляется в этот домен.
Локальная часть левой стороны адреса может содержать шаблон подстановки (как обычная запись уровня пользователя). Строка, совпадающая с шаблоном подстановки может использоваться в правой части адреса.
Если маршрут адреса указывает на домен null, то адрес обрабатывается так же, как если бы он указывал локальной частью на null в локальном домене (смотрите выше).
Если маршрут адреса указывает на домен error, то адрес обрабатывается так же, как если бы он указывал локальной частью на error в локальном домене (смотрите выше).
Если маршрут адреса указывает на домен blacklisted, то адрес обрабатывается так же, как если бы он указывал локальной частью на blacklisted в локальном домене (смотрите выше).
Если доменная часть имени заканчивается символами .here или ._here, этот суффикс удаляется, и оставшаяся часть имени используется как имя локального Домена CommuniGate Pro. Этот суффикс позволяет вам избежать зацикливания маршрутизации в определённых ситуациях.После того, как применены все записи из Таблицы Маршрутизации, Маршрутизатор проверяет, не оканчивается ли имя домена суффиксом ._via. Суффикс удаляется, имя домена считается хостом - конечным адресатом, а локальная часть адреса используется как адрес, который будет передан на этот хост.
sales.company.com = sales.company.com._via ; явно перенаправлять на удалённый хост *.company.com = company.com ; все остальные субдомены перенаправлять
Обратите внимание: адреса в домене sales.company.com будут передаваться с удалённой доменной частью, то есть адрес <user@sales.company.com> будет передаваться на хост sales.company.com как <user>.
Это может привести к проблемам, если сервер sales.company.com не принимает адреса без указания домена. Смотрите следующий пример для возможного решения этой проблемы.
client1.com = client1.com@host.com._via client2.com = client2.com@host.com._via client3.com = client3.com@host.com._viaили более гибко:
client1.com = client1.com@relay
client2.com = client2.com@relay
client3.com = client3.com@relay
relay = host.com._via
Обратите внимание: Здесь вы можете указывать только host.com вместо host.com._via (подразумевается, что нет других записей в Маршрутизаторе для host.com), но в этом случае почта для user@client1.com будет отправляться на host.com как user%client1.com@host.com. Указывая суффикс ._via вы не только говорите Маршрутизатору направить адрес в модуль ретрансляции (релеинга), но также заставляете этот модуль отправлять только локальную часть адреса на удалённый сервер.
Обработка Адресов без суффикса ._via | ||
---|---|---|
user @ client1.host | Маршрутизатор преобразовывает в | user%client1.host @ relay |
user%client1.host @ relay | Маршрутизатор преобразовывает в | user%client1.host @ host.com |
user%client1.host @ host.com | Маршрутизатор останавливается | нет правил для host.com |
user%client1.host @ host.com | Маршрутизатор принимает | для хоста SIP/SMTP host.com как user%client1.host@host.com |
Обработка Адресов с суффиксом ._via | ||
user @ client1.host | Маршрутизатор преобразовывает в | user%client1.host @ relay |
user%client1.host @ relay | Маршрутизатор преобразовывает в | user%client1.host @ host.com._via |
user%client1.host @ host.com._via | Маршрутизатор принимает | для host.com как user@client1.host |
Если доменная часть адреса содержит суффикс ._via, модуль проверяет последнюю часть доменного имени после удаления суффикса. Если это часть является числом, символ точка (.) отделяющий эту часть заменяется на символ двоеточия (:):
host.domain.dom.26.via --> host.domain.dom:26 Если имя домена содержит символ двоеточие, то модули SIP, XMPP и SMTP:Маршрутизатор также проверяет доменную часть адреса, оканчивающуюся суффиксом ._relay. Суффикс удаляется и получившееся доменное имя используется как конечное имя хоста (после изменения необязательного разделителя номера порта на символ двоеточие).
Это имя домена (после удаления необязательного номера порта и его разделителя) добавляется к локальному имени, используя символ @ как разделитель.
*.sales.company.com = *.sales.company.com._relay ; явно релеить наружу *.company.com = company.com ; все остальные субдомены перенаправлять
Маршрутизатор также проверяет доменную часть адреса, оканчивающуюся суффиксом ._dir.
Суффикс обрабатывается аналогично суффиксу _via. Дополнительно сервер пытается прочитать запись из Справочника, используя dn, построенный из оригинального адреса и домена назначения в виде mail=user@domain, cn=host.com.
Если запись может быть прочитана (для этого может быть необходимо создать Удалённый Том для поддерева cn=host.com), результат обработки адреса принимается, иначе генерируется ошибка маршрутизации адреса.
Если попытка прочитать запись заканчивается ошибкой, связанной с невозможностью подсоединения к удалённому серверу, генереируемая ошибка маршрутизации имеет временный характер, так что внешние отправители по протоколу SMTP попытаются доставить по этому адресу позже.
Множество Сигналов (и, в особенности, телефонные звонки) должны обрабатываться "стандартными" или специальными Приложениями Реального Времени. Для направления Сигналов в Приложение вам необходимо указать имя Приложения и, отделённое символом решётка (#), имя Пользователя, от имени которого будет запущено приложение:
Вы можете указать параметры приложения, добавив их после имени приложения вложенными в фигурные скобки { и } и разделив их запятой (,).
Шаблоны подстановки в правой части записи Маршрутизатора подменяются до начала обработки, так что вы можете использовать значение шаблонов подстановки в качестве параметров приложения.
Если доменной частью адреса является telnum, локальная часть адреса обрабатывается как телефонный номер в стандарте E.164.
Маршрутизатор предпринимает следующие шаги до применения Таблицы Маршрутизации и других методов Маршрутизации:Если телефонный номер не перенаправляется никаким из вышеуказанных методов, Маршрутизатор обрабатывает его как обычный адрес.
Для того, что бы добавить ENUM Домен, введите его имя в пустое поле и нажмите кнопку Модифицировать.
Для того, что бы удалить ENUM Домен, удалите его имя из поля и нажмите кнопку Модифицировать.
Домены используются в определённом порядке.
Смотрите раздел ТфОП для дополнительной информации о работе с Телефонной Сетью Общего Пользования и маршрутизации телефонных номеров.
После того, как применены все записи из Таблицы Маршрутизации, Маршрутизатор проверяет, не оканчивается ли в действительности имя домена IP адресом. Если IP адрес имени домена не заключён в квадратные скобки, Маршрутизатор добавляет их: user@10.34.45.67 преобразовывается в user@[10.34.45.67]. Это позволяет вам указывать записи в Таблице Маршрутизации для адресов IP, полагая, что этот адрес всегда заключён в квадратные скобки.
Для адреса IP, заключённого в квадратные скобки, Маршрутизатор проверяет, не назначен ли этот адрес IP одному из Доменов на Сервере. Если такой Домен найден, то адрес IP заменяется именем этого Домена. Если адрес IP является адресом IP Главного Домена Сервера, то вместо доменной части имени используется пустая строка, и Маршрутизатор делает следующую итерацию после разбора локальной части имени адреса.
Если IP адрес на назначен локальному Домену, Маршрутизатор обрабатывает имя домена [10.34.45.67] как имя 10.34.45.67.default_port._via:
Маршрутизатор отправляет адрес в SIP или SMTP модуль, отрезая доменную часть и используя её как имя хоста для ретрансляции (релеинга).
Если никакая запись из Таблицы Маршрутизации не может применена к адресу, и адрес не является специальным адресом или адресом IP локального домена, Маршрутизатор вызывает каждый коммуникационный модуль, запрашивая выполнение операции маршрутизации.
Каждый модуль смотрит на переданный адрес и может:Если модуль изменяет адрес, Маршрутизатор производит новую итерацию, повторяя все шаги для этого нового модифицированного адреса.
Если Маршрутизатор вызывается из компонента Установщик Сообщений в очередь, и модуль принимает адрес, сообщение ставиться в очередь в этот модуль на доставку.
Если Маршрутизатор вызывается из компонента Сигналы, и модуль принимает адрес, Сигнальный Запрос отправляется в этот модуль на обработку.
Каждый модуль вызывается дважды. Первый раз Маршрутизатор вызывает каждый модуль для обработки "явных" адресов. В этом вызове модули обрабатывают только те адреса, которые определённо направляются в этот модуль: модуль SMTP обрабатывает адреса с доменной частью, оканчивающейся на ._smtp, модуль LIST обрабатывает адреса существующих списков рассылки и так далее.
Если все модули проигнорировали адрес, Маршрутизатор вызывает каждый модуль снова, с запросом на "финальную" попытку. На этой стадии, модуль Местной Доставки обрабатывает все адреса, направляемые в локальные домены, SIP модуль принимает все адреса типа сигналы, SMTP модуль обрабатывает все адреса с именами доменов, в которых содержится хотя бы одна точка и так далее.
Этот двухпроходный метод позволяет нескольким модулям корректно обрабатывать адреса, не полагаясь на определённый порядок вызова модулей. Если бы каждый модуль обрабатывал адрес в один проход, то адреса listname@domainname (которые выглядят как адреса локальных пользователей) отвергались бы модулем Местной Доставки, если бы он вызывался до LIST модуля, адреса user@accountName.local принимались бы SMTP модулем вместо модуля Местной Доставки и так далее.
Дополнительную информацию смотрите в описаниях модулей.
После того, как применены все записи из Таблицы Маршрутизации, Маршрутизатор проверяет, не оканчивается ли имя домена строкой external. В этом случае доменная часть отрезается, а локальная часть передаётся в программу Внешней Аутентификации.
Внешняя программа может использовать любой метод для обработки переданного адреса, и должна возвращать модифицированный адрес или код ошибки.
Если возвращается модифицированный адрес, Маршрутизатор осуществляет следующую итерацию с этим новым модифицированным адресом.
Если Сигнал отправляется на 0115556666@local.domain.dom, где local.domain.dom это локальный Домен, адрес будет перенаправлен на tele-5556666@external и Внешний Помощник получит запрос на маршрутизацию адреса tele-5556666.
Маршрутизатор поддерживает базирующуюся на DNS маршрутизацию телефонных номеров. Это метод обычно применяется для номеров E.164 - телефонных номеров, начинающихся с символа плюс, за которым следует код страны, год города и местный номер.
Если доменное имя содержит суффикс ._enum, то Маршрутизатор:Маршрутизатор перезапускается, обрабатывая найденную отображающую строку как новый адрес назначения.
Если поиск в DNS возвращает ошибку "unknown host name", суффикс домена ._enum заменяется суффиксом ._noenum, и Маршрутизатор перезапускается для обработки этого модифицированного адреса.
URI вида tel:phoneNumber при разборе преобразуется в sip:phoneNumber@tel. Фиктивный домен tel обычно перенаправляется сразу в telnum для обобщённой обработки телефонных номеров.
При преобразовании URI из внутреннего представления, URI вида sip:phoneNumber@tel преобразуются в tel:phoneNumber.
Когда сервер CommuniGate Pro устанавливается впервые, следующие записи помещаются в Таблицу Маршрутизации:
При необходимости, все записи, добавляемые по умолчанию, могут быть изменены или удалены.
Пользователи работающие на сайтах, которые имеют много различных Серверов (server1.myorg.org, server2.myorg.org, server3.myorg.org) часто используют адреса с неквалифицированными доменными именами (user@server1, user@server2, user@server3). Когда вы имеете несколько серверов на вашем домене "верхнего уровня" myorg.org, вы можете "исправлять" такие адреса, указав в Таблице записи:
server1 = server1.myorg.orgЕсли в вашем домене "верхнего уровня" myorg.org много серверов , то становится практически невозможно указать в Таблице Маршрутизатора записи для них всех. В этом случае вы можете использовать опцию Добавлять myorg.org к Неквалифицированным Доменным Именам. Если эта опция включена, и для адрес не может быть найден маршрут, используя Таблицу Маршрутизатора и Модули, и доменная часть адреса не содержит символа точка, то указанная строка (myorg.org) будет добавлена к доменному имени (разделённая точкой). Адрес user@someserver будет преобразован в адрес user@someserver.myorg.org и Маршрутизатор попытается обработать этот новый, исправленный адрес.
Обратите внимание: Использование Неквалифицированных Доменных Имен в адресах электронной почты или Сигналах является очень плохой практикой. Включите эту опцию только если вы не можете обеспечить выполнение вашими пользователями политики использования корректных, полных имён доменов во всех используемых ими адресах.
Эти записи проверяются когда Сервер CommuniGate Pro обнаруживает сообщение или сигнал, который должен быть направлен на некоторое имя в один из локальных доменов Сервера. Если локальная часть адреса совпадает с полем Локальное Имя в одной из этих записей, то адрес направляется на указанный в поле Преобразовать в.
Если, например, адреса abuse и postmaster@maindomain.dom введены в таблицу Общедоменные Псевдонимы (как показано выше), то все сообщения, направляемые на любой адрес abuse@domain.dom (где domain.com является одним из Доменов CommuniGate Pro) преобразовывается в postmaster@maindomain.com.
Обратите внимание: используя эти записи, можно очень легко создать зацикливание маршрутизации: если введётеВы можете использовать символы шаблона подстановки (*) в этих полях.
Например, мы можете создать "правила набора номера" вашей организации, которая имеет 10 различных отделов, и каждый обслуживается в собственном Домене:
Если Пользователи в каждом Домене имеют псевдонимы в диапазоне 200-299, то пользователи могут вызывать других пользователей в том же домене, набирая номер 2xx.
Они набирают префикс 91 (номер 912xx) для того, что бы связаться с пользователями в Домене domain1.com.
Они набирают префикс 92 для того, что бы связаться с пользователями в Домене domain2.com, и так далее.
Динамический Кластер CommuniGate Pro обслуживает Общекластерную Таблицу Маршрутизации. Когда вы открываете страницу Веб Администрирования Маршрутизатор у любого члена Кластера, то вы видите ссылку, с помощью которой вы можете открыть страницу с Общекластерной Таблицей Маршрутизации. Все изменения, сделанные в этой Таблице, автоматически распространяются на все члены Кластера.
Общекластерная Таблица Маршрутизации обрабатывается как расширение Таблицы Маршрутизатора Сервера: записи в Общекластерной Таблице Маршрутизации проверяются, когда никакие записи из Таблицы Маршрутизатора Сервера не могут быть применены.