Communigate pro руководство

Инструкции

Требования к аппаратным ресурсам

Для качественной работы сервера CommuniGate Pro подберите аппаратное обеспечение исходя из количества планируемых пользователей в вашей системе, её редакции (Message Plus, Corporate, или Unified) и необходимости кластеризации.

Минимальные требования для одиночного сервера

Количество пользователей vCPU RAM, GB HDD, GB Количество операций ввода-вывода в секунду (IOPS) Антивирус Антиспам
Message Plus Corporate Unified vCPU RAM, GB vCPU RAM, GB
100 1 2 20 75 125 175 1 2 1 2
500 2 4 40 375 625 875 1 2 1 2
1 000 2 4 40 750 1 250 1 750 1 2 1 2
3 000 4 6 60 2 250 3 750 5 250 2 2 2 2
5 000 4 8 60 3 750 6 250 8 750 2 2 2 2
10 000 6 10 100 7 500 12 500 17 500 3 2 3 2
15 000 8 16 150 11 250 18 750 26 250 4 2 4 2
vCPU / RAM Для расчёта количества требуемых vCPU и RAM добавьте значения из колонок Антивирус и Антиспам, если их планируется развернуть. Объём HDD увеличивать при этом не нужно.
HDD Указан минимальный объём который необходимо выделить CGP для хранения очередей сообщений, конфигурационных файлов, и логов. Если пользователи буду хранить почту на сервере, то потребуется увеличить этот объём исходя из предполагаемых средних размеров почтового ящика и файлового хранилища пользователя и общего количества пользователей.

Минимальные требования для кластерной конфигурации

Количество пользователей Состав кластера,
FE x BE
Сервер Frontend (FE) Сервер Backend (BE) Количество операций ввода-вывода
в секунду (IOPS) для СХД
Антивирус Антиспам
vCPU RAM, GB HDD, GB vCPU RAM, GB HDD, GB Message Plus Corporate Unified vCPU RAM, GB vCPU RAM, GB
500 0x2       2 4 40 375 625 875 1 2 1 2
1 000 0x2       2 4 40 750 1 250 1 750 2 2 2 2
3 000 0x2       4 6 60 2 250 3 750 5 250 2 2 2 2
5 000 2×2 4 8 60 2 4 20 3 750 6 250 8 750 2 2 2 2
10 000 2×2 6 10 60 2 4 20 7 500 12 500 17 500 3 2 3 2
15 000 3×3 4 8 60 2 4 40 11 250 18 750 26 250 2 2 2 2
30 000 3×3 6 10 80 4 8 40 22 500 37 500 52 500 3 2 3 2
40 000 4×3 6 10 80 4 8 60 30 000 50 000 70 000 3 2 3 2
60 000 6×4 8 12 80 4 8 60 45 000 75 000 105 000 4 2 4 2
vCPU / RAM Для расчёта количества требуемых vCPU и RAM добавьте значения из колонок Антивирус и Антиспам, если их планируется развернуть. Объём HDD увеличивать при этом не нужно.
HDD Для серверов FE и BE указан минимальный объём который необходимо выделить CGP для хранения очередей сообщений, конфигурационных файлов, и логов. Для СХД, где будут храниться данные пользователей, рассчитайте требуемый объём исходя из предполагаемых средних размеров почтового ящика и файлового хранилища пользователя и общего количества пользователей, добавив по 50ГБ на каждые десять тысяч пользователей на системные данные.
При этом скорость сетевого соединения между серверами CGP и системами хранения должна быть не менее 1Гб, рекомендуемая скорость 10Гб.

Данные требования применимы к средненагруженным системам. В случае использования сервера CommuniGate Pro для центров обработки вызовов, в инфраструктуре интернет-провайдеров, при интенсивной эксплуатации аудио и видео конференций, требования могут быть скорректированны в сторону увеличения. Для получения консультации обратитесь к сертифицированным партнёрам, или в отдел продаж CommuniGate Systems.

Установка сервера

CommuniGate Pro устанавливается на компьютер-сервер (или на мультисерверный кластер) на базе ОС Unix, Linux, Microsoft Windows, Mac OS X или любой другой поддерживаемой ОС.

Communigate Pro это очень эффективное программное обеспечение. Поэтому любой современный сервер (4-х ядерный процессор, 4Gb оперативной памяти) способен обслужить более 1500 одновременных звонков и 2500-10000 открытых аккаунтов (точное число зависит от операционной системы и от типов и соотношения звонков и других соединений).

Для демонстрации установки в качестве операционной системы мы выбрали Windows, по той причине, что лучше всего ознакомиться с продуктом просто установив его на рабочую станцию или ноутбук. Установка занимает всего 5 10 минут и 100 MB на жестком диске.

У продукта есть «community» режим — можно абсолютно бесплатно пользоваться всеми возможностями, пока суммарное число учетных записей не больше 5.

Выбор дистрибутива

Последние стабильные версии продукта для различных платформ (поддерживается более 15 операционных систем) можно найти здесь >.

Установка на Windows

Дистрибутив представляет собой простой zip архив. Запускаем Installer.exe:

  • Application Folder — папка с программой и файлами настроек и интерфейсов по-умолчанию.
  • Base Folder — папка с данными пользователей и всеми настройками отличными от стандартных.

При обновлении версии сервера заменяется только Application Folder.

После установки убеждаемся, что нужный процесс запущен:

Основные интерфейсы

В любом браузере, открываем этот URL:

http://localhost:8010/ (или http://[ip адрес сервера]:8010/)

и попадаем в WebAdmin.

Администратором по-умолчанию является пользователь postmaster, при первом посещении админки выбираем пароль для него:

После логина попадаем на страницу основных настроек интерфейса:

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

WebAdmin представляет собой иерархическую систему вкладок. Для обозначения какой -либо настройки мы будем использовать такой формат:

Tab1->Tab2->Tab3->«Setting Name»

Например, создать пользователя можно с помощью кнопки Users->Domains->[Имя домена]->«Create Account».

Начиная с версии сервера 6.1с1, имеется возможность переключиться на новый интерфейс Администратора. Для этого на странице WebAdmin -> Settings (или Users, или Monitors) нужно кликнуть на ссылку Preferences в правом нижнем углу и в поле «Layout» на открывшейся странице выбрать «Dash» и нажать кнопку «Update». Чтобы переключиться обратно на оригинальный интерфейс, выберите «Basic» в поле «Layout».

Помимо WebAdmin есть еще 3 web-интерфейса для пользователей:

  • WebUser — HTML интерфейс с почтой, календарями и контактами, по умолчанию доступен через порт 8100: http://localhost:8100/
  • Pronto! Flash — более функциональный Flash интерфейс, помимо почты, календарей и контактов поддерживает звонки, IM и некоторые дополнительные функции, доступен по URL вида http://localhost:8100/Pronto/
  • Pronto! — самый новый и минималистичный интерфейс на HTML 5, URL для доступа — http://localhost:8100/hPronto/

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

Важно: По умолчаниию, в Pronto Flash, все входящие звонки выключены.

Чтобы пользователи, использующие Pronto Flash, могли звонить, им необходимо включить: Настройки -> Телефония -> Входящие звонки (Включены)

Настройка почты

Панель администратора. Создание учетных записей.

У нас уже установлен сервер и выбрано имя главного домена. Настало время завести пользователей. Заходим на страницу Users->Domains панели администратора и выбираем главный домен:

В домене уже есть 2 служебных пользователя — postmaster — главный администратор и pbx — техническая учетная запись от имени и с настройками которой запускаются голосовые приложения установленные по-умолчанию.

Создать нового пользователя легко — вводим имя, например recipient в текстовое поле возле кнопки «Create account» и нажимаем на нее. У вас откроется страница настроек нового пользователя, где можно будет ввести пароль для учетной записи — поле «Communigate password»:

Прием.

Это самый трудоемкий по настройке раздел почты, связано это в первую очередь с борьбой со спамом. Мы, с одной стороны, не хотим принимать лишние письма (чтобы не прогонять слишком много писем через лексический спам фильтр, если он есть, да и просто лишний раз сервер не нагружать мусором), с другой — не хотим отказывать нормальным отправителям.

DNS

Хотя мы уже можем принять письма в только что созданные учетные записи, но необходимо будет использовать IP адрес в доменной части имени получателя. Это довольно неудобно для пользователей, поэтому все почтовые протоколы пользуются DNS.

Основным протоколом для доставки почты является SMTP, он используется как между серверами, так и от клиента к серверу (но не наоборот).

При этом процесс доставки письма от почтового клиента на сервер для отправки дальше мы будем называть регистрацией (submission) письма, а отправкой именно процесс доставки письма адресату (в случае SMTP адресаты находятся на других серверах).

Для полноценной работы этого протокола необходимы DNS записи типа MX. Они содержат три поля — имя почтового домена, приоритет и имя сервера обслуживающего домен. Для каждого имени сервера должна существовать DNS запись типа A.

Запись с наивысшим приоритетом считается основным почтовым сервером, а остальные — backup серверами.

Например:

>nslookup -type=MX google.com

google.com      MX preference = 50, mail exchanger = alt4.aspmx.l.google.com
google.com      MX preference = 10, mail exchanger = aspmx.l.google.com
google.com      MX preference = 20, mail exchanger = alt1.aspmx.l.google.com
google.com      MX preference = 30, mail exchanger = alt2.aspmx.l.google.com
google.com      MX preference = 40, mail exchanger = alt3.aspmx.l.google.com

aspmx.l.google.com      internet address = 74.125.143.26
alt1.aspmx.l.google.com internet address = 173.194.64.26
alt2.aspmx.l.google.com internet address = 74.125.142.26
alt3.aspmx.l.google.com internet address = 74.125.140.26
alt4.aspmx.l.google.com internet address = 173.194.74.26

Клиентские IP адреса (Client IPs)

В Communigate Pro существует понятие Клиентских адресов. По сути это доверенные IP адреса — они обычно имеют ряд привилегий по сравнению с обычными и в некоторых настройках отвечающих за безопасность можно выбирать значения «только для клиентов» и «для всех кроме клиентов».

В админке CGPro клиентские адреса задаются полем типа «список адресов», этот тип поля активно используется и в других настройках (страница Setting->Network->Client IPs):

Приемники (Listeners)

У каждого протокола, для которого Communigate Pro умеет принимать соединения есть свой список приемников (объекты сервера создающие сокеты), например SMTP (Settings->Mail->SMTP->Receiving->«Listener»):

Каждый приемник открывает сокеты на определенном порту и определенном IP адресе (это необходимо, чтобы CGPro мог стоять на одной машине, с Web сервером — web сервер занимает 80-й порт на одном IP, а CGPro на другом).

По умолчанию в SMTP модуле настроен только 25 порт, добавим сразу еще 2, положенных по стантарту:

В современной версии SMTP порт 25 предназначен в основном для серверов, клиенты же должны пользоваться 587-м, его отличие в обязательном использовании аутентификации через команду SMTP AUTH.

Protection

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

Из-за этого есть ряд мер, которые необходимо предпринять, чтобы хоть немного усложнить жизнь спаммерам.

Релеинг

Релеинг это прием письма сервером, для пересылки его дальше адресату.

SMTP в принципе позволяет регистрировать письма предназначенные для сторонних серверов, но на практике такую возможность лучше закрыть для всех отправителей, кроме доверенных, так как если позволить пересылку на чужие сервера с IP адреса под контролем спаммеров, администраторы этих серверов скорее всего заблокируют все письма от вас.

Настройки релея находятся на странице Settings->Mail->SMTP->Relaying и значения по-умолчанию вполне оптимальны:

Главное не изменить их случайно или без конкретной причины.

Проверки заголовков

Основными заголовками при получении SMTP письма являются отправитель и получатель. Рассмотрим пример SMTP сессии:

220 mycgpro.com ESMTP CommuniGate Pro 6.0.4 is glad to see you!
helo
250 mycgpro.com domain name should be qualified
Mail from:sender@gmail.com
250 sender@gmail.com sender accepted
rcpt to: recipient@mycgpro.com
250 recipient@mycgpro.com will leave the Internet
data:
354 Enter mail, end with "." on a line by itself
From: Name That Everybody See <tvoya@mama.com>

Tra ta ta Prishli mne deneg na telephon!
.
250 90001 message accepted for delivery

Тут отправитель задается командой MAIL FROM, а получатель RCPT TO. Самое главное, что должен знать администратор, это то, что поле которое показывается всеми без исключения почтовыми клиентами как «От кого» (заголовок «From» в письме) на самом деле является не отправителем, а просто частью тела письма. Большая часть проверок заголовков (включая популярные Remote BlackLists) работают именно с отправителем установленным командой протокола, а о теле письма понятия не имеют. В MIME формате отправителю соответствует поле «Return-path».

(Письмо полученное в SMTP сессии приведенной выше в MIME формате и интерфейсе)

Суть проверок «Return-path» в том, что при получении команды Mail From сервер извлекает доменную часть адреса и проверяет наличие этого домена в DNS. Есть также усиленная версия этой проверки — Reverse Connect, при использовании этой проверки, CGPro производит подключение к серверу отправителя и проверяет принимает ли этот сервер письма для отправителя с именем из команды Mail From.

Довольно популярной проверкой Return-path является SPF-проверка. Она требует DNS записей типа TXT специального формата, эти записи называют SPF записями. Они содержат имя почтового домена и список IP адресов, которые являются легитимными отправителями писем с данной доменной частью. Например:

>nslookup -type=TXT google.com
google.com      text = "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31~all"

Основной минус этого способа — работает только с отправителями, администраторы серверов которых знают и используют эту проверку. В WebAdmin настройки приема почты собраны на одной странице Settings->Mail->SMTP->Receiving:

RBL и обычный blacklist рассматривать не будем так как эти типы проверок довольно известны (в основном из-за того, что многие люди из России и СНГ регулярно обнаруживают себя в них) и никаких сложностей по настройке быть не должно.

Обработка письма

При получении письма оно сразу начинает записываться на жесткий диск в папку Queue базовой директории с расширением .tmp. Как только процесс получения завершается расширение меняется на .msg и модуль принявший письмо ставит его в общую очередь.

При внезапной перезагрузке или отключении сервера письма из очереди (.msg файлы папки Queue) просто ставятся в нее заново.

Queue

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

В очереди с письмом происходят следующие события:

  • Анализ и преобразование адреса получателя.
  • Применяем общесерверные правила.
  • Файл очереди ставиться в одну или несколько логических очередей (в зависимости от того какие модули являются получателями письма).
  • Применяем доменные или пользовательские правила.
  • Обработка писем в модулях-получателях.

Маршрутизатор(Router)

Каждый раз когда Communigate Pro сталкивается с почтовыми адресом он пропускает его через модуль Router. У администратора, помимо вспомогательных средств управления роутингом письма (такие как правила, псевдонимы доменов и пользователей), есть мощный инструмент обеспечивающий удобный доступ непосредственно в процесс обработки адресов — таблица роутинга:

формат каждой строки в этой таблице:

[префикс релея:][префикс типа записи:]left=right[; комментарий]

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

По-умолчанию записи в таблице работают для адресов встречающихся во всех операциях и функциях сервера. Запись может также работать только для одного из 3 типов операций если отмечена соответствующим префиксом — «Mail», «Access» и «Signal».

Существует еще один тип префикса — «Relay». Если для какого-то получателя сработала запись с таким префиксом, то письмо получает специальную пометку и оно будет отправленно вне зависимости от того пришло оно от доверенного источника (с клиентского IP или от аутентифицированного пользователя ) или нет. Это довольно опасная настройка, так как она позволяет спаммерам беспрепятственно отправлять письма на сервер на который у вас стоит перенаправление.

Логические очереди

Есть 4 вида очередей на отправку писем — на другие сервера (SMTP), в локальные ящики (LOCAL), в сторонние программы (PIPE) и в списки рассылки (LIST).

Каждая из этих очередей делится на несколько других. Например есть SMTP очередь на каждый домен — получатель, и есть LOCAL очередь на каждый аккаунт. Это позволяет доставлять письма большими порциями — по многу писем за одно соединение или открытие почтового ящика.

Правила

Правила применяются в два подхода — в начале Серверные правила ко всем письмам (до постановки в очереди доставки), а потом Доменные и Пользовательские правила, но только для писем из очереди локальных ящиков LOCAL. Доменные правила с точки зрения внутреннего устройства абсолютно неотличимы от правил Пользователей, но применяются ко всем аккаунтам домена.

Подобная система применения правил означает, что Доменные и Пользовательские правила могут влиять только на входящие письма (исходящие письма в LOCAL очередь не попадают). То есть для выполнения каких-либо манипуляций над исходящими письмами подходят только Серверные правила.

Получение ящиков

Как и в случае с отправкой есть очень много протоколов, по которым можно получить содержимое ящиков хранящихся на сервере POP, IMAP, XIMSS, HTTP (AirSync, WebUser). Но получение ящиков практически всегда подразумевает аутентификацию клиента запрашивающего информацию.

Никаких особых настроек у этих протоколов нет — все должно заработать сразу «из коробки».

Имя пользователя в настройках клиентов желательно указывать полностью, включая доменную часть (если ваш клиент, как некоторые версии Outlook, автоматически отрезает доменную часть по символу ‘@’ можно использовать ‘%’ вместо него).

Настройка VoIP

Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами

Несмотря на то, что значительная часть людей все чаще пользуется интернет сервисами вместо телефона или факса, телефонная линия еще долго будет обязательным элементом офиса. Поэтому для любого SIP/PBX решения важно знать как к нему подключить PSTN (ТФОП) шлюз.

PSTN шлюзы обычно являются довольно стандартными SIP устройствами. Но из-за особенностей классических телефонных сетей при подключении к устройству напрямую у пользователей могут возникнуть проблемы:

  • В PSTN сети используется формат адресов E.164 (например +7901234567) а не account@domain как в SIP
  • Для исходящего звонка в большинстве случаев нужна аутентификация
  • Не все шлюзы поддерживают перевод звонков
  • Некоторые PSTN шлюзы и SIP провайдеры настроены на работу с отдельным SIP устройством и требуют периодических REGISTER запросов для перенаправления на него входящих звонков

Для решения этих проблем в Communigate Pro есть два PBX приложения, предназначенные для отправления и приема звонков с шлюзов — gatewaycaller и gatewayincoming. Кроме того, популярным приложением для приема звонков из PSTN сетей является приложение pbx, которое реализует функции авто-секретаря.

PBX приложение на сервере Communigate Pro это программа на интерпретируемом языке CG/PL, которая может выступать в качестве B2BUA. Тексты стандартных программ открыты и их можно найти на странице Пользователи->PBX:

Основной способ запуска приложений это перенаправление сигнала (например SIP INVITE) на адрес вида «appName#account@domain» с помощью правила или в маршрутизаторе.

Прием звонков от PSTN шлюза

Большинство современных шлюзов можно настроить так, чтобы входящие звонки отправлялись на SIP устройство, в нашем случае CGPro. Для маршрутизации внутри CGPro используем таблицу роутинга (в WebAdmin интерфейсе Установки->Маршрутизатор).

Допустим шлюз присылает входящий звонок с SIP полем To: +74951234567@gateway.company.dom (gateway.company.dom — фиктивный домен, используется только для маршрутизации звонков от шлюза), тогда такая запись в маршрутизаторе

<+74951234567@gateway.company.dom> = pbx#pbx@localhost

Отправит все звонки из телефонной сети в голосовое меню авто-секретаря.

У некоторых моделей шлюзов есть еще один режим приема звонков из PSTN сети. При звонке из PSTN на SIP АТС, звонящему отправляется продолжительный гудок (как при простом поднятии трубки) и ему надо донабрать номер конкретного пользователя для дальнейшего соединения.

Конечно такая функциональность обычно нужна только при отсутствии полноценного IVR и в принципе лучше ее отключить.

Но и в этом случае можно настроить удобную маршрутизацию. Поле To: звонка имеет формат nnn@gateway.company.dom, где «nnn» это набранные цифры.

;звонки на адрес (3 цифры)@gateway.company.dom уходят в gatewayincoming, 
;цифры передаются в приложение в качестве параметра
<(3d)@gateway.company.dom> = gatewayincoming{*}#pbx@localhost
;все остальные звонки идут в IVR
<*@gateway.company.dom> = pbx#pbx@localhost

Прием звонков от SIP провайдера

SIP провайдеры и некоторые старые/простые PSTN шлюзы требуют SIP регистрации для отправки на устройство входящих звонков. В этом случае на стороне CGPro нужно выбрать пользователя, который будет принимать звонки (обычно это аккаунт pbx, так как по умолчанию все входящие звонки этого пользователя попадают в IVR). И настроить ему RSIP:

RSIP настройки абсолютно аналогичны настройкам обычного SIP клиента.

Исходящие звонки

Маршрутизация исходящих звонков может быть очень сложной. Для большей наглядности рассмотрим упрощенную ситуацию:

  • Если номер начинается с 7 и состоит из 11 цифр — роутим на PSTN шлюз 10.1.1.1
  • Если номер начинается с 1 и состоит из 11 цифр — роутим на (вымышленный) SIP провайдер sipprov.net
  • Оба сервиса требуют аутентификацию

Первым делом добавим настройки аутентификации на обоих шлюзах для всех аккаунтов на сервере:

Так как шлюзов несколько, каждая настройка записывается в виде словаря настроек, где ключом является имя шлюза. «$» в поле CallerID подставляется на имя аккаунта.

Записи маршрутизатора при такой постановке задачи и настройках аутентификации выглядят так:

Signal:<7(10d)@*>=gatewaycaller{+7*,gwru}#pbx
Signal:<1(10d)@*>=gatewaycaller{+1*,gwus}#pbx

Поясним работу данных настроек на примере звонка в Россию.

Допустим пользователь набрал номер 7(123)456-78-90.

При применении записи, маршрутизатор выделит 10 последних цифр, добавит +7 в качестве первых символов (телефон в формате E.164, понятный любому оператору PSTN сетей) и передаст получившийся номер как первый параметр в приложение gatewaycaller.

После этого gatewaycaller смотрит PSTN настройки звонящего пользователя и ищет там группу настроек с ключом «gwru», который передали в программу вторым параметром.

Запись PSTN настроек в виде настроек учетной записи позволяет с одной стороны быстро изменять настройки для большинства (по-умолчанию), с другой, позволяет каждому пользователю иметь свой набор шлюзов.

Настройка Медиа Прокси

В случае когда протоколы обмена медиа данными не могут быть использованы между устройствами напрямую, CommuniGate Pro сервер может действовать как «прокси» для этих устройств. Например, когда устройство клиента или сам сервер находится за NAT, либо когда необходимо передать медиа данные между IPv4 и IPv6 сетями, CommuniGate Pro сервер создает Медиа Прокси — выделенный у себя отдельный порт, предназначенный для передачи медиа данных от клиента, находящегося в LAN, к удаленной системе, находящейся в Интернете, и наоборот. В этом случае устройства подключаются не напрямую друг к другу, а к созданному Медиа Прокси.

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

1. На странице WebAdmin интерфейса Установки -> Сеть -> LAN установить правильные «IPv4 (или IPv6) WAN Адрес» (внешний адрес сервера в Интернете, если имеется), а также «Адрес Сервера в LAN».

2. Открыть на Firewall диапазон TCP и UDP портов, указанный на этой же странице в секции «Выделение Портов». Эти порты используются для создания Медиа Прокси. Убедитесь также, что при использовании Firewall эти порты проброшены в режиме 1:1, то есть должен сохраняться номер порта при трансляции как с внешнего на внутренний адрес (входящие соединения), так и с внутреннего на внешний адрес (исходящие соединения).

В случае, если проблему не удается устранить, обращайтесь в отдел технической поддержки на support@communigate.ru.

Установка Контакт-центра

Видеопособие

1. Загрузите все файлы из папки PBXApps на сервер, в раздел PBX (на уровень сервера или уровень кластера) Пользователи → PBX.

2. Пройдите в меню Пользователи → Интерфейсы и загрузите файлы cc.html, statistics.wcgp и ccadmin.wcgp, которые находятся в папке WebSkins (на уровень сервера или уровень кластера).

3. В меню Пользователи → Интерфейсы создайте новый скин ContactCenter и загрузите в него файл ccWebSkins.tar, находящийся в папке WebSkins/ContactCenter (на уровень сервера или уровень кластера).

4. Приложение Контакт-центр должно быть настроено отдельно для каждого домена CommuniGate Pro, звонки в котором должны обрабатываться приложением.

4а. В выбранном домене создайте пользователя admin. Назначьте ему следующие права (Пользователи → Домены → <ваш_домен> → Объекты → admin → Установки → Права доступа):

Установите галочку напротив пункта: «Может менять установки Этого Домена и его Пользователей» и нажмите клавишу Модифицировать.
Проставьте галочки напротив пунктов «Может создавать Пользователей», «Может создавать Псевдонимы», «Может создавать Именованные Задачи», «Полный доступ ко всем Файлам», «Основные установки», «Установки ТФоП».

4б. Настраиваем пользователя pbx. Создайте пользоватя pbx и также переходите в меню Access Right.

Установите галочку напротив пункта: «Может менять установки Этого Домена и его Пользователей» и нажмите клавишу Модифицировать.
Проставьте галочки напротив пунктов «Может создавать Псевдонимы», «Может создавать Именованные Задачи», «Полный доступ ко всем Файлам», «Может выступать от имени других», «Основные установки», «Лимит входящих звонков», «Лимит исходящих звонков», «Параллельных звонков», «Лимит Хранилища Файлов», «Лимит Числа Файлов».

5. Для обработки звонков приложением Контакт-центра должны быть настроены следующие сигнальные правила (на уровень сервера или уровень кластера):

5а. Войдите в меню: Установки → Real-Time → Правила и создайте правило, соответственно таблице ниже.

Когда Приоритет Имя
Высокий ccOut_your.domain.name
Данные Операция Параметр
Операция Равно INVITE
От сетевого адреса Не равно LOCAL [0.0.0.0]*
От кого Равно *@your.domain.name
Действие Параметр  
Перенаправить к ccincoming#pbx@your.domain.name  
Прекратить обработку    

5б. Теперь войдите в меню Пользователи → Домены → <имя_домена> → Real-Time.

Когда Приоритет Имя
Высокий ccIn_your.domain.name
Данные Операция Параметр
Операция Равно INVITE
Адрес запроса Не равно *;fromCC=true
Action Parameter  
Перенаправить к ccincoming#pbx  
Прекратить обработку    

6. Контакт-центр использует протокол XIMSS для взаимодействия с сервером CommuniGate Pro. Убедитесь, что протокол XIMSS, в разделе Услуги, включен для вашего домена и пользователи могут взаимодействовать с ним. Для этого пройдите в меню Пользователи → Умолчания для домена, а также Умолчания для пользователя и проверьте настройки.

Для доступа к интерфейсу Контакт-центра, в строке браузера, введите следующий адрес:

http://<your_server>:8100/cc.html

Настройка почтового ящика по протоколам IMAP/SMTP в Mozilla Thunderbird

1. Для настройки почтового аккаунта в почтовом клиенте Mozilla Thunderbird откройте почтовый клиент и в разделе «Учетные записи» в подменю «Создать учетную запись:» (1) выберите пункт «Электронная почта» (2).

2. В появившемся окне снимаем галочку с чекбокса (3) и нажимаем кнопку «Пропустить это и использовать мою существующую почту» (4).

Примечание: у Вас должны быть данные для подключения к вашему серверу электронной почты, такие как:

— Адрес e-mail в формате myemail@mydomain.ru, где myemail – имя аккаунта, mydomain.ru – адрес Вашего почтового сервера

— Пароль от почтового аккаунта (настраивается пользователем при регистрации аккаунта на сервере или выдаётся системным администратором)

3. В открывшемся окне «Настройка учетной записи почты» (1) необходимо ввести:

Ваше имя

Адрес электронной почты в формате myemail@mydomain.ru

Пароль почтового аккаунта

4. Нажмите кнопку «Продолжить» (2)

5. Почтовый клиент выполнит автоматический поиск конфигурации подключения к Вашему серверу.

Примечание: автоматический поиск может быть выполнен с ошибками или не определит верные параметры подключения (зависит от настроек почтового сервера).

6. В появившемся окне Почтовый клиент покажет Вам найденные настройки подключения к почтовому серверу (1),(2). Для просмотра и редактирования этих настроек нажмите кнопку «Настройка вручную» (3)

7. В открывшемся окне настроек представлены автоматически определенные параметры подключения к почтовому серверу. В зависимости от настроек сервера эти параметры могут отличаться от параметров, определенных автоматически.

Для настройки доступны следующие поля Входящей почты (1):

Протокол (IMAP)

Имя сервера (mail.moscow.******.com)

Порт подключения (147)

Тип шифрования SSL (STARTTLS)

Настройка аутентификации по паролю

Такие же поля доступны и для настройки Исходящей почты (2). Имена пользователя (Логин/Login) для Входящей (3) и Исходящей почты (4) могут отличаться. Эти настройки определяются администратором почтового сервера.

Примечание: Имя сервера для Входящей и Исходящей почты могут отличаться, как друг от друга, так и от имени адреса Вашего почтового сервера. Например:

— Для почтового адреса support@gmail.com имя сервера Исходящей почты будет imap.gmail.com, а для Входящей почтыsmtp.gmail.com. Эти адреса определяются администратором почтового сервера.

8. После внесения необходимых настроек или их изменения нажмите кнопку «Перетестировать» (5). После успешного завершения тестирования нажмите кнопку «Готово». Почтовый клиент настроен.

Thunderbird Lightning. Подключение календаря по протоколу CalDAV

1. Для использования возможности подключения календаря CalDAV в почтовый клиент Mozilla Thunderbird необходимо установить дополнение Thunderbird Lightning. Для работы календаря и задач в почтовом клиенте Mozilla Thunderbird необходим преднастроенный аккаунт электронной почты (IMAP/SMTP).

В качестве сервера электронной почты и календарей используем CommuniGate Pro 6.2.4.

Календарь создан в учетной записи на сервере, почтовый аккаунт настроен в клиенте Thunderbird. Для подключения календаря в почтовом клиенте откройте меню «Файл», первый пункт «Создать» и затем «Календарь...»:

В появившемся окне выберите пункт «В сети» (1) и затем нажмите кнопку «Далее» (2)

В открывшемся окне выберите пункт «CalDAV» (1) и укажите ссылку на сервер CommuniGate Pro в поле «Адрес» (2) в следующем формате:

Если Имя Домена пользователя или Псевдоним имени домена — mail.company.com, номер порта HTTP User — 80, а имя ПапкиCalendar, то, в таком случае, для доступа будет использоваться следующий URL:

http://mail.company.com/CalDAV/Calendar

или

http://mail.company.com/CalDAV/Calendar.ics

Таким образом может осуществляться доступ к любой Папке, имеющей тип Календарь или Задания. Для доступа к Папке другого Пользователя должно быть указано полное имя Папки:

http://mail.company.com/CalDAV/~username/Calendar

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

В открывшемся окне введите «Название» (1) календаря, выберите «Цвет» (2) и почтовый аккаунт из ниспадающего списка «Эл. почта» (3).

С помощью аккаунта электронной почты происходит авторизация на сервере CommuniGate Pro. Если по каким-либо причинам после добавления календаря появилось окно авторизации, введите свои логин и пароль почтового аккаунта полностью, с указанием доменной части:

Логин: v.babaev

Домен: mail.company.com

В поле «Логин» окна авторизации ввести: v.babaev@mail.company.com

В поле «Пароль» окна авторизации ввести пароль от почтового аккаунта сервера CGP.

После успешного добавления календаря в почтовый клиент Thunderbird в главном окне в правом верхнем углу нажимаем на иконку календаря (1). В новой вкладке будет открыта вкладка «Календарь», в левой колонке вкладки «Календарь» в разделе «Календарь» (2) будут отображены все подключенные календари. Для просмотра подключенного календаря отметьте чекбокс рядом с именем календаря в левой колонке раздела «Календарь» (2). Календарь отобразится в центральной колонке почтового клиента (3).

Подключение задач CalDAV в Thunderbird Lightning

Подключение Задач в почтовый клиент Mozilla Thunderbird идентично подключению Календаря.

В открывшемся окне выбираем пункт «CalDAV» (1) и прописываем ссылку на сервер CommuniGate Pro в поле «Адрес» (2) в следующем формате:

Если Имя Домена пользователя или Псевдоним имени домена — mail.company.com, номер порта HTTP User — 80, а имя Папки — Calendar, то, в таком случае, для доступа будет использоваться следующий URL:

http://mail.company.com/CalDAV/Tasks/ — URL для доступа к задачам по умолчанию в CommuniGate Pro.

Таким образом может осуществляться доступ к любой Папке, имеющей тип Календарь или Задания. Для доступа к Папке другого Пользователя должно быть указано полное имя Папки:

http://mail.company.com/CalDAV/~username/Tasks/

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

Установка чекбокса для поля «Работать автономно» (3) – не обязательная операция, по желанию.

В новом окне вписываем «Название» (1), выбираем «Цвет» (2) и почтовый аккаунт для авторизации.

В главном окне почтового клиента Thunderbird в верхней правой части окна выбираем закладку «Задачи» (1):

В открывшемся окне убедитесь, что выбран и активен (2) календарь задач, задачи календаря синхронизированы и доступны для просмотра (3)

При подключении задач в почтовый клиент Thunderbird у Вас будут следующие возможности:

— Просмотр и редактирование уже созданных задач

— Создание и редактирование задач в Thunderbird

— Присвоение категории или нескольких категорий задачам

— Просмотр названия задачи

— Просмотр информации о организаторе задачи

— Просмотр категории задачи

— Просмотр сроков задачи (начало и конец)

— Просмотр описания задачи

Не доступно:

— Просмотр прикрепленных к задаче файлов, например, документов или картинок, прикрепленных через интерфейс hPronto.

Инструкции

Установка сервера

CommuniGate Pro устанавливается на компьютер-сервер (или на мультисерверный кластер) на базе ОС Unix, Linux, Microsoft Windows, Mac OS X или любой другой поддерживаемой ОС.

Communigate Pro это очень эффективное программное обеспечение. Поэтому любой современный сервер (4-х ядерный процессор, 4Gb оперативной памяти) способен обслужить более 1500 одновременных звонков и 2500-10000 открытых аккаунтов (точное число зависит от операционной системы и от типов и соотношения звонков и других соединений).

Для демонстрации установки в качестве операционной системы мы выбрали Windows, по той причине, что лучше всего ознакомиться с продуктом просто установив его на рабочую станцию или ноутбук. Установка занимает всего 5 10 минут и 100 MB на жестком диске.

У продукта есть «community» режим — можно абсолютно бесплатно пользоваться всеми возможностями, пока суммарное число учетных записей не больше 5.

Выбор дистрибутива

Последние стабильные версии продукта для различных платформ (поддерживается более 15 операционных систем) можно найти здесь >.

Установка на Windows

Дистрибутив представляет собой простой zip архив. Запускаем Installer.exe:

  • Application Folder — папка с программой и файлами настроек и интерфейсов по-умолчанию.
  • Base Folder — папка с данными пользователей и всеми настройками отличными от стандартных.

При обновлении версии сервера заменяется только Application Folder.

После установки убеждаемся, что нужный процесс запущен:

Основные интерфейсы

В любом браузере, открываем этот URL:

http://localhost:8010/ (или http://[ip адрес сервера]:8010/)

и попадаем в WebAdmin.

Администратором по-умолчанию является пользователь postmaster, при первом посещении админки выбираем пароль для него:

После логина попадаем на страницу основных настроек интерфейса:

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

WebAdmin представляет собой иерархическую систему вкладок. Для обозначения какой -либо настройки мы будем использовать такой формат:

Tab1->Tab2->Tab3->«Setting Name»

Например, создать пользователя можно с помощью кнопки Users->Domains->[Имя домена]->«Create Account».

Начиная с версии сервера 6.1с1, имеется возможность переключиться на новый интерфейс Администратора. Для этого на странице WebAdmin -> Settings (или Users, или Monitors) нужно кликнуть на ссылку Preferences в правом нижнем углу и в поле «Layout» на открывшейся странице выбрать «Dash» и нажать кнопку «Update». Чтобы переключиться обратно на оригинальный интерфейс, выберите «Basic» в поле «Layout».

Помимо WebAdmin есть еще 3 web-интерфейса для пользователей:

  • WebUser — HTML интерфейс с почтой, календарями и контактами, по умолчанию доступен через порт 8100: http://localhost:8100/
  • Pronto! Flash — более функциональный Flash интерфейс, помимо почты, календарей и контактов поддерживает звонки, IM и некоторые дополнительные функции, доступен по URL вида http://localhost:8100/Pronto/
  • Pronto! — самый новый и минималистичный интерфейс на HTML 5, URL для доступа — http://localhost:8100/hPronto/

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

Важно: По умолчаниию, в Pronto Flash, все входящие звонки выключены.

Чтобы пользователи, использующие Pronto Flash, могли звонить, им необходимо включить: Настройки -> Телефония -> Входящие звонки (Включены)

Настройка почты

Панель администратора. Создание учетных записей.

У нас уже установлен сервер и выбрано имя главного домена. Настало время завести пользователей. Заходим на страницу Users->Domains панели администратора и выбираем главный домен:

В домене уже есть 2 служебных пользователя — postmaster — главный администратор и pbx — техническая учетная запись от имени и с настройками которой запускаются голосовые приложения установленные по-умолчанию.

Создать нового пользователя легко — вводим имя, например recipient в текстовое поле возле кнопки «Create account» и нажимаем на нее. У вас откроется страница настроек нового пользователя, где можно будет ввести пароль для учетной записи — поле «Communigate password»:

Прием.

Это самый трудоемкий по настройке раздел почты, связано это в первую очередь с борьбой со спамом. Мы, с одной стороны, не хотим принимать лишние письма (чтобы не прогонять слишком много писем через лексический спам фильтр, если он есть, да и просто лишний раз сервер не нагружать мусором), с другой — не хотим отказывать нормальным отправителям.

DNS

Хотя мы уже можем принять письма в только что созданные учетные записи, но необходимо будет использовать IP адрес в доменной части имени получателя. Это довольно неудобно для пользователей, поэтому все почтовые протоколы пользуются DNS.

Основным протоколом для доставки почты является SMTP, он используется как между серверами, так и от клиента к серверу (но не наоборот).

При этом процесс доставки письма от почтового клиента на сервер для отправки дальше мы будем называть регистрацией (submission) письма, а отправкой именно процесс доставки письма адресату (в случае SMTP адресаты находятся на других серверах).

Для полноценной работы этого протокола необходимы DNS записи типа MX. Они содержат три поля — имя почтового домена, приоритет и имя сервера обслуживающего домен. Для каждого имени сервера должна существовать DNS запись типа A.

Запись с наивысшим приоритетом считается основным почтовым сервером, а остальные — backup серверами.

Например:

>nslookup -type=MX google.com

google.com      MX preference = 50, mail exchanger = alt4.aspmx.l.google.com
google.com      MX preference = 10, mail exchanger = aspmx.l.google.com
google.com      MX preference = 20, mail exchanger = alt1.aspmx.l.google.com
google.com      MX preference = 30, mail exchanger = alt2.aspmx.l.google.com
google.com      MX preference = 40, mail exchanger = alt3.aspmx.l.google.com

aspmx.l.google.com      internet address = 74.125.143.26
alt1.aspmx.l.google.com internet address = 173.194.64.26
alt2.aspmx.l.google.com internet address = 74.125.142.26
alt3.aspmx.l.google.com internet address = 74.125.140.26
alt4.aspmx.l.google.com internet address = 173.194.74.26

Клиентские IP адреса (Client IPs)

В Communigate Pro существует понятие Клиентских адресов. По сути это доверенные IP адреса — они обычно имеют ряд привилегий по сравнению с обычными и в некоторых настройках отвечающих за безопасность можно выбирать значения «только для клиентов» и «для всех кроме клиентов».

В админке CGPro клиентские адреса задаются полем типа «список адресов», этот тип поля активно используется и в других настройках (страница Setting->Network->Client IPs):

Приемники (Listeners)

У каждого протокола, для которого Communigate Pro умеет принимать соединения есть свой список приемников (объекты сервера создающие сокеты), например SMTP (Settings->Mail->SMTP->Receiving->«Listener»):

Каждый приемник открывает сокеты на определенном порту и определенном IP адресе (это необходимо, чтобы CGPro мог стоять на одной машине, с Web сервером — web сервер занимает 80-й порт на одном IP, а CGPro на другом).

По умолчанию в SMTP модуле настроен только 25 порт, добавим сразу еще 2, положенных по стантарту:

В современной версии SMTP порт 25 предназначен в основном для серверов, клиенты же должны пользоваться 587-м, его отличие в обязательном использовании аутентификации через команду SMTP AUTH.

Protection

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

Из-за этого есть ряд мер, которые необходимо предпринять, чтобы хоть немного усложнить жизнь спаммерам.

Релеинг

Релеинг это прием письма сервером, для пересылки его дальше адресату.

SMTP в принципе позволяет регистрировать письма предназначенные для сторонних серверов, но на практике такую возможность лучше закрыть для всех отправителей, кроме доверенных, так как если позволить пересылку на чужие сервера с IP адреса под контролем спаммеров, администраторы этих серверов скорее всего заблокируют все письма от вас.

Настройки релея находятся на странице Settings->Mail->SMTP->Relaying и значения по-умолчанию вполне оптимальны:

Главное не изменить их случайно или без конкретной причины.

Проверки заголовков

Основными заголовками при получении SMTP письма являются отправитель и получатель. Рассмотрим пример SMTP сессии:

220 mycgpro.com ESMTP CommuniGate Pro 6.0.4 is glad to see you!
helo
250 mycgpro.com domain name should be qualified
Mail from:sender@gmail.com
250 sender@gmail.com sender accepted
rcpt to: recipient@mycgpro.com
250 recipient@mycgpro.com will leave the Internet
data:
354 Enter mail, end with "." on a line by itself
From: Name That Everybody See <tvoya@mama.com>

Tra ta ta Prishli mne deneg na telephon!
.
250 90001 message accepted for delivery

Тут отправитель задается командой MAIL FROM, а получатель RCPT TO. Самое главное, что должен знать администратор, это то, что поле которое показывается всеми без исключения почтовыми клиентами как «От кого» (заголовок «From» в письме) на самом деле является не отправителем, а просто частью тела письма. Большая часть проверок заголовков (включая популярные Remote BlackLists) работают именно с отправителем установленным командой протокола, а о теле письма понятия не имеют. В MIME формате отправителю соответствует поле «Return-path».

(Письмо полученное в SMTP сессии приведенной выше в MIME формате и интерфейсе)

Суть проверок «Return-path» в том, что при получении команды Mail From сервер извлекает доменную часть адреса и проверяет наличие этого домена в DNS. Есть также усиленная версия этой проверки — Reverse Connect, при использовании этой проверки, CGPro производит подключение к серверу отправителя и проверяет принимает ли этот сервер письма для отправителя с именем из команды Mail From.

Довольно популярной проверкой Return-path является SPF-проверка. Она требует DNS записей типа TXT специального формата, эти записи называют SPF записями. Они содержат имя почтового домена и список IP адресов, которые являются легитимными отправителями писем с данной доменной частью. Например:

>nslookup -type=TXT google.com
google.com      text = "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31~all"

Основной минус этого способа — работает только с отправителями, администраторы серверов которых знают и используют эту проверку. В WebAdmin настройки приема почты собраны на одной странице Settings->Mail->SMTP->Receiving:

RBL и обычный blacklist рассматривать не будем так как эти типы проверок довольно известны (в основном из-за того, что многие люди из России и СНГ регулярно обнаруживают себя в них) и никаких сложностей по настройке быть не должно.

Обработка письма

При получении письма оно сразу начинает записываться на жесткий диск в папку Queue базовой директории с расширением .tmp. Как только процесс получения завершается расширение меняется на .msg и модуль принявший письмо ставит его в общую очередь.

При внезапной перезагрузке или отключении сервера письма из очереди (.msg файлы папки Queue) просто ставятся в нее заново.

Queue

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

В очереди с письмом происходят следующие события:

  • Анализ и преобразование адреса получателя.
  • Применяем общесерверные правила.
  • Файл очереди ставиться в одну или несколько логических очередей (в зависимости от того какие модули являются получателями письма).
  • Применяем доменные или пользовательские правила.
  • Обработка писем в модулях-получателях.

Маршрутизатор(Router)

Каждый раз когда Communigate Pro сталкивается с почтовыми адресом он пропускает его через модуль Router. У администратора, помимо вспомогательных средств управления роутингом письма (такие как правила, псевдонимы доменов и пользователей), есть мощный инструмент обеспечивающий удобный доступ непосредственно в процесс обработки адресов — таблица роутинга:

формат каждой строки в этой таблице:

[префикс релея:][префикс типа записи:]left=right[; комментарий]

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

По-умолчанию записи в таблице работают для адресов встречающихся во всех операциях и функциях сервера. Запись может также работать только для одного из 3 типов операций если отмечена соответствующим префиксом — «Mail», «Access» и «Signal».

Существует еще один тип префикса — «Relay». Если для какого-то получателя сработала запись с таким префиксом, то письмо получает специальную пометку и оно будет отправленно вне зависимости от того пришло оно от доверенного источника (с клиентского IP или от аутентифицированного пользователя ) или нет. Это довольно опасная настройка, так как она позволяет спаммерам беспрепятственно отправлять письма на сервер на который у вас стоит перенаправление.

Логические очереди

Есть 4 вида очередей на отправку писем — на другие сервера (SMTP), в локальные ящики (LOCAL), в сторонние программы (PIPE) и в списки рассылки (LIST).

Каждая из этих очередей делится на несколько других. Например есть SMTP очередь на каждый домен — получатель, и есть LOCAL очередь на каждый аккаунт. Это позволяет доставлять письма большими порциями — по многу писем за одно соединение или открытие почтового ящика.

Правила

Правила применяются в два подхода — в начале Серверные правила ко всем письмам (до постановки в очереди доставки), а потом Доменные и Пользовательские правила, но только для писем из очереди локальных ящиков LOCAL. Доменные правила с точки зрения внутреннего устройства абсолютно неотличимы от правил Пользователей, но применяются ко всем аккаунтам домена.

Подобная система применения правил означает, что Доменные и Пользовательские правила могут влиять только на входящие письма (исходящие письма в LOCAL очередь не попадают). То есть для выполнения каких-либо манипуляций над исходящими письмами подходят только Серверные правила.

Получение ящиков

Как и в случае с отправкой есть очень много протоколов, по которым можно получить содержимое ящиков хранящихся на сервере POP, IMAP, XIMSS, HTTP (AirSync, WebUser). Но получение ящиков практически всегда подразумевает аутентификацию клиента запрашивающего информацию.

Никаких особых настроек у этих протоколов нет — все должно заработать сразу «из коробки».

Имя пользователя в настройках клиентов желательно указывать полностью, включая доменную часть (если ваш клиент, как некоторые версии Outlook, автоматически отрезает доменную часть по символу ‘@’ можно использовать ‘%’ вместо него).

Настройка VoIP

Соединяем Communigate Pro c PSTN шлюзами и SIP провайдерами

Несмотря на то, что значительная часть людей все чаще пользуется интернет сервисами вместо телефона или факса, телефонная линия еще долго будет обязательным элементом офиса. Поэтому для любого SIP/PBX решения важно знать как к нему подключить PSTN (ТФОП) шлюз.

PSTN шлюзы обычно являются довольно стандартными SIP устройствами. Но из-за особенностей классических телефонных сетей при подключении к устройству напрямую у пользователей могут возникнуть проблемы:

  • В PSTN сети используется формат адресов E.164 (например +7901234567) а не account@domain как в SIP
  • Для исходящего звонка в большинстве случаев нужна аутентификация
  • Не все шлюзы поддерживают перевод звонков
  • Некоторые PSTN шлюзы и SIP провайдеры настроены на работу с отдельным SIP устройством и требуют периодических REGISTER запросов для перенаправления на него входящих звонков

Для решения этих проблем в Communigate Pro есть два PBX приложения, предназначенные для отправления и приема звонков с шлюзов — gatewaycaller и gatewayincoming. Кроме того, популярным приложением для приема звонков из PSTN сетей является приложение pbx, которое реализует функции авто-секретаря.

PBX приложение на сервере Communigate Pro это программа на интерпретируемом языке CG/PL, которая может выступать в качестве B2BUA. Тексты стандартных программ открыты и их можно найти на странице Пользователи->PBX:

Основной способ запуска приложений это перенаправление сигнала (например SIP INVITE) на адрес вида «appName#account@domain» с помощью правила или в маршрутизаторе.

Прием звонков от PSTN шлюза

Большинство современных шлюзов можно настроить так, чтобы входящие звонки отправлялись на SIP устройство, в нашем случае CGPro. Для маршрутизации внутри CGPro используем таблицу роутинга (в WebAdmin интерфейсе Установки->Маршрутизатор).

Допустим шлюз присылает входящий звонок с SIP полем To: +74951234567@gateway.company.dom (gateway.company.dom — фиктивный домен, используется только для маршрутизации звонков от шлюза), тогда такая запись в маршрутизаторе

<+74951234567@gateway.company.dom> = pbx#pbx@localhost

Отправит все звонки из телефонной сети в голосовое меню авто-секретаря.

У некоторых моделей шлюзов есть еще один режим приема звонков из PSTN сети. При звонке из PSTN на SIP АТС, звонящему отправляется продолжительный гудок (как при простом поднятии трубки) и ему надо донабрать номер конкретного пользователя для дальнейшего соединения.

Конечно такая функциональность обычно нужна только при отсутствии полноценного IVR и в принципе лучше ее отключить.

Но и в этом случае можно настроить удобную маршрутизацию. Поле To: звонка имеет формат nnn@gateway.company.dom, где «nnn» это набранные цифры.

;звонки на адрес (3 цифры)@gateway.company.dom уходят в gatewayincoming, 
;цифры передаются в приложение в качестве параметра
<(3d)@gateway.company.dom> = gatewayincoming{*}#pbx@localhost
;все остальные звонки идут в IVR
<*@gateway.company.dom> = pbx#pbx@localhost

Прием звонков от SIP провайдера

SIP провайдеры и некоторые старые/простые PSTN шлюзы требуют SIP регистрации для отправки на устройство входящих звонков. В этом случае на стороне CGPro нужно выбрать пользователя, который будет принимать звонки (обычно это аккаунт pbx, так как по умолчанию все входящие звонки этого пользователя попадают в IVR). И настроить ему RSIP:

RSIP настройки абсолютно аналогичны настройкам обычного SIP клиента.

Исходящие звонки

Маршрутизация исходящих звонков может быть очень сложной. Для большей наглядности рассмотрим упрощенную ситуацию:

  • Если номер начинается с 7 и состоит из 11 цифр — роутим на PSTN шлюз 10.1.1.1
  • Если номер начинается с 1 и состоит из 11 цифр — роутим на (вымышленный) SIP провайдер sipprov.net
  • Оба сервиса требуют аутентификацию

Первым делом добавим настройки аутентификации на обоих шлюзах для всех аккаунтов на сервере:

Так как шлюзов несколько, каждая настройка записывается в виде словаря настроек, где ключом является имя шлюза. «$» в поле CallerID подставляется на имя аккаунта.

Записи маршрутизатора при такой постановке задачи и настройках аутентификации выглядят так:

Signal:<7(10d)@*>=gatewaycaller{+7*,gwru}#pbx
Signal:<1(10d)@*>=gatewaycaller{+1*,gwus}#pbx

Поясним работу данных настроек на примере звонка в Россию.

Допустим пользователь набрал номер 7(123)456-78-90.

При применении записи, маршрутизатор выделит 10 последних цифр, добавит +7 в качестве первых символов (телефон в формате E.164, понятный любому оператору PSTN сетей) и передаст получившийся номер как первый параметр в приложение gatewaycaller.

После этого gatewaycaller смотрит PSTN настройки звонящего пользователя и ищет там группу настроек с ключом «gwru», который передали в программу вторым параметром.

Запись PSTN настроек в виде настроек учетной записи позволяет с одной стороны быстро изменять настройки для большинства (по-умолчанию), с другой, позволяет каждому пользователю иметь свой набор шлюзов.

Настройка Медиа Прокси

В случае когда протоколы обмена медиа данными не могут быть использованы между устройствами напрямую, CommuniGate Pro сервер может действовать как «прокси» для этих устройств. Например, когда устройство клиента или сам сервер находится за NAT, либо когда необходимо передать медиа данные между IPv4 и IPv6 сетями, CommuniGate Pro сервер создает Медиа Прокси — выделенный у себя отдельный порт, предназначенный для передачи медиа данных от клиента, находящегося в LAN, к удаленной системе, находящейся в Интернете, и наоборот. В этом случае устройства подключаются не напрямую друг к другу, а к созданному Медиа Прокси.

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

1. На странице WebAdmin интерфейса Установки -> Сеть -> LAN установить правильные «IPv4 (или IPv6) WAN Адрес» (внешний адрес сервера в Интернете, если имеется), а также «Адрес Сервера в LAN».

2. Открыть на Firewall диапазон TCP и UDP портов, указанный на этой же странице в секции «Выделение Портов». Эти порты используются для создания Медиа Прокси. Убедитесь также, что при использовании Firewall эти порты проброшены в режиме 1:1, то есть должен сохраняться номер порта при трансляции как с внешнего на внутренний адрес (входящие соединения), так и с внутреннего на внешний адрес (исходящие соединения).

В случае, если проблему не удается устранить, обращайтесь в отдел технической поддержки на support@communigate.ru.

Установка Контакт-центра

Видеопособие

1. Загрузите все файлы из папки PBXApps на сервер, в раздел PBX (на уровень сервера или уровень кластера) Пользователи → PBX.

2. Пройдите в меню Пользователи → Интерфейсы и загрузите файлы cc.html, statistics.wcgp и ccadmin.wcgp, которые находятся в папке WebSkins (на уровень сервера или уровень кластера).

3. В меню Пользователи → Интерфейсы создайте новый скин ContactCenter и загрузите в него файл ccWebSkins.tar, находящийся в папке WebSkins/ContactCenter (на уровень сервера или уровень кластера).

4. Приложение Контакт-центр должно быть настроено отдельно для каждого домена CommuniGate Pro, звонки в котором должны обрабатываться приложением.

4а. В выбранном домене создайте пользователя admin. Назначьте ему следующие права (Пользователи → Домены → <ваш_домен> → Объекты → admin → Установки → Права доступа):

Установите галочку напротив пункта: «Может менять установки Этого Домена и его Пользователей» и нажмите клавишу Модифицировать.
Проставьте галочки напротив пунктов «Может создавать Пользователей», «Может создавать Псевдонимы», «Может создавать Именованные Задачи», «Полный доступ ко всем Файлам», «Основные установки», «Установки ТФоП».

4б. Настраиваем пользователя pbx. Создайте пользоватя pbx и также переходите в меню Access Right.

Установите галочку напротив пункта: «Может менять установки Этого Домена и его Пользователей» и нажмите клавишу Модифицировать.
Проставьте галочки напротив пунктов «Может создавать Псевдонимы», «Может создавать Именованные Задачи», «Полный доступ ко всем Файлам», «Может выступать от имени других», «Основные установки», «Лимит входящих звонков», «Лимит исходящих звонков», «Параллельных звонков», «Лимит Хранилища Файлов», «Лимит Числа Файлов».

5. Для обработки звонков приложением Контакт-центра должны быть настроены следующие сигнальные правила (на уровень сервера или уровень кластера):

5а. Войдите в меню: Установки → Real-Time → Правила и создайте правило, соответственно таблице ниже.

Когда Приоритет Имя
Высокий ccOut_your.domain.name
Данные Операция Параметр
Операция Равно INVITE
От сетевого адреса Не равно LOCAL [0.0.0.0]*
От кого Равно *@your.domain.name
Действие Параметр  
Перенаправить к ccincoming#pbx@your.domain.name  
Прекратить обработку    

5б. Теперь войдите в меню Пользователи → Домены → <имя_домена> → Real-Time.

Когда Приоритет Имя
Высокий ccIn_your.domain.name
Данные Операция Параметр
Операция Равно INVITE
Адрес запроса Не равно *;fromCC=true
Action Parameter  
Перенаправить к ccincoming#pbx  
Прекратить обработку    

6. Контакт-центр использует протокол XIMSS для взаимодействия с сервером CommuniGate Pro. Убедитесь, что протокол XIMSS, в разделе Услуги, включен для вашего домена и пользователи могут взаимодействовать с ним. Для этого пройдите в меню Пользователи → Умолчания для домена, а также Умолчания для пользователя и проверьте настройки.

Для доступа к интерфейсу Контакт-центра, в строке браузера, введите следующий адрес:

http://<your_server>:8100/cc.html

Настройка почтового ящика по протоколам IMAP/SMTP в Mozilla Thunderbird

1. Для настройки почтового аккаунта в почтовом клиенте Mozilla Thunderbird откройте почтовый клиент и в разделе «Учетные записи» в подменю «Создать учетную запись:» (1) выберите пункт «Электронная почта» (2).

2. В появившемся окне снимаем галочку с чекбокса (3) и нажимаем кнопку «Пропустить это и использовать мою существующую почту» (4).

Примечание: у Вас должны быть данные для подключения к вашему серверу электронной почты, такие как:

— Адрес e-mail в формате myemail@mydomain.ru, где myemail – имя аккаунта, mydomain.ru – адрес Вашего почтового сервера

— Пароль от почтового аккаунта (настраивается пользователем при регистрации аккаунта на сервере или выдаётся системным администратором)

3. В открывшемся окне «Настройка учетной записи почты» (1) необходимо ввести:

Ваше имя

Адрес электронной почты в формате myemail@mydomain.ru

Пароль почтового аккаунта

4. Нажмите кнопку «Продолжить» (2)

5. Почтовый клиент выполнит автоматический поиск конфигурации подключения к Вашему серверу.

Примечание: автоматический поиск может быть выполнен с ошибками или не определит верные параметры подключения (зависит от настроек почтового сервера).

6. В появившемся окне Почтовый клиент покажет Вам найденные настройки подключения к почтовому серверу (1),(2). Для просмотра и редактирования этих настроек нажмите кнопку «Настройка вручную» (3)

7. В открывшемся окне настроек представлены автоматически определенные параметры подключения к почтовому серверу. В зависимости от настроек сервера эти параметры могут отличаться от параметров, определенных автоматически.

Для настройки доступны следующие поля Входящей почты (1):

Протокол (IMAP)

Имя сервера (mail.moscow.******.com)

Порт подключения (147)

Тип шифрования SSL (STARTTLS)

Настройка аутентификации по паролю

Такие же поля доступны и для настройки Исходящей почты (2). Имена пользователя (Логин/Login) для Входящей (3) и Исходящей почты (4) могут отличаться. Эти настройки определяются администратором почтового сервера.

Примечание: Имя сервера для Входящей и Исходящей почты могут отличаться, как друг от друга, так и от имени адреса Вашего почтового сервера. Например:

— Для почтового адреса support@gmail.com имя сервера Исходящей почты будет imap.gmail.com, а для Входящей почтыsmtp.gmail.com. Эти адреса определяются администратором почтового сервера.

8. После внесения необходимых настроек или их изменения нажмите кнопку «Перетестировать» (5). После успешного завершения тестирования нажмите кнопку «Готово». Почтовый клиент настроен.

Thunderbird Lightning. Подключение календаря по протоколу CalDAV

1. Для использования возможности подключения календаря CalDAV в почтовый клиент Mozilla Thunderbird необходимо установить дополнение Thunderbird Lightning. Для работы календаря и задач в почтовом клиенте Mozilla Thunderbird необходим преднастроенный аккаунт электронной почты (IMAP/SMTP).

В качестве сервера электронной почты и календарей используем CommuniGate Pro 6.2.4.

Календарь создан в учетной записи на сервере, почтовый аккаунт настроен в клиенте Thunderbird. Для подключения календаря в почтовом клиенте откройте меню «Файл», первый пункт «Создать» и затем «Календарь...»:

В появившемся окне выберите пункт «В сети» (1) и затем нажмите кнопку «Далее» (2)

В открывшемся окне выберите пункт «CalDAV» (1) и укажите ссылку на сервер CommuniGate Pro в поле «Адрес» (2) в следующем формате:

Если Имя Домена пользователя или Псевдоним имени домена — mail.company.com, номер порта HTTP User — 80, а имя ПапкиCalendar, то, в таком случае, для доступа будет использоваться следующий URL:

http://mail.company.com/CalDAV/Calendar

или

http://mail.company.com/CalDAV/Calendar.ics

Таким образом может осуществляться доступ к любой Папке, имеющей тип Календарь или Задания. Для доступа к Папке другого Пользователя должно быть указано полное имя Папки:

http://mail.company.com/CalDAV/~username/Calendar

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

В открывшемся окне введите «Название» (1) календаря, выберите «Цвет» (2) и почтовый аккаунт из ниспадающего списка «Эл. почта» (3).

С помощью аккаунта электронной почты происходит авторизация на сервере CommuniGate Pro. Если по каким-либо причинам после добавления календаря появилось окно авторизации, введите свои логин и пароль почтового аккаунта полностью, с указанием доменной части:

Логин: v.babaev

Домен: mail.company.com

В поле «Логин» окна авторизации ввести: v.babaev@mail.company.com

В поле «Пароль» окна авторизации ввести пароль от почтового аккаунта сервера CGP.

После успешного добавления календаря в почтовый клиент Thunderbird в главном окне в правом верхнем углу нажимаем на иконку календаря (1). В новой вкладке будет открыта вкладка «Календарь», в левой колонке вкладки «Календарь» в разделе «Календарь» (2) будут отображены все подключенные календари. Для просмотра подключенного календаря отметьте чекбокс рядом с именем календаря в левой колонке раздела «Календарь» (2). Календарь отобразится в центральной колонке почтового клиента (3).

Подключение задач CalDAV в Thunderbird Lightning

Подключение Задач в почтовый клиент Mozilla Thunderbird идентично подключению Календаря.

В открывшемся окне выбираем пункт «CalDAV» (1) и прописываем ссылку на сервер CommuniGate Pro в поле «Адрес» (2) в следующем формате:

Если Имя Домена пользователя или Псевдоним имени домена — mail.company.com, номер порта HTTP User — 80, а имя Папки — Calendar, то, в таком случае, для доступа будет использоваться следующий URL:

http://mail.company.com/CalDAV/Tasks/ — URL для доступа к задачам по умолчанию в CommuniGate Pro.

Таким образом может осуществляться доступ к любой Папке, имеющей тип Календарь или Задания. Для доступа к Папке другого Пользователя должно быть указано полное имя Папки:

http://mail.company.com/CalDAV/~username/Tasks/

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

Установка чекбокса для поля «Работать автономно» (3) – не обязательная операция, по желанию.

В новом окне вписываем «Название» (1), выбираем «Цвет» (2) и почтовый аккаунт для авторизации.

В главном окне почтового клиента Thunderbird в верхней правой части окна выбираем закладку «Задачи» (1):

В открывшемся окне убедитесь, что выбран и активен (2) календарь задач, задачи календаря синхронизированы и доступны для просмотра (3)

При подключении задач в почтовый клиент Thunderbird у Вас будут следующие возможности:

— Просмотр и редактирование уже созданных задач

— Создание и редактирование задач в Thunderbird

— Присвоение категории или нескольких категорий задачам

— Просмотр названия задачи

— Просмотр информации о организаторе задачи

— Просмотр категории задачи

— Просмотр сроков задачи (начало и конец)

— Просмотр описания задачи

Не доступно:

— Просмотр прикрепленных к задаче файлов, например, документов или картинок, прикрепленных через интерфейс hPronto.

CommuniGate Pro

Версия 5.2

Введение

Установка

Администрирование

Сеть

Объекты

Почта

Сигналы

Доступ

Услуги

Справочник

Кластеры

Программы

Разное

Лицензирование

 

Веб Почта

Pronto!

PBX

 

Введение

Возможности

История

Как я могу…

Помощь

  • Описание CommuniGate Pro
    • Возможности
    • Администрирование
  • Поддержка и Обсуждение
  • Обновления и Исправления
  • Загрузка Последних Версий
  • Загрузка Дополнительных модулей по работе с Электронной почтой CommuniGate Pro
  • Загрузка MAPI Коннектора для CommuniGate Pro
  • Загрузка Дополнительного модуля по работе с Медиа для Браузеров

Добро пожаловать в CommuniGate Pro, Сервер Интернет Коммуникаций.

Основанный на открытых стандартах, сервер CommuniGate Pro является интегрированной платформой, в которой реализованы как функции хранения и отправки сообщений (электронная почта, ведение календаря), так и функции, обеспечивающие работу коммуникаций реального времени (голосовые, видео, мгновенные сообщения, совместная работа) в сетях IPv4 и IPv6.

Описание CommuniGate Pro

Основные подсистемы CommuniGate Pro включают в себя:

Управление идентификацией

  • Мультидоменная архитектура (подтверждённая на практике работа более чем 120’000 доменов на одной системе), поддержка конфигураций как с несколькими, так и с коллективно используемыми IP адресами.
  • Концепция Пользователя, включающая в себя Хранилище Почты, Хранилище Файлов, Настройки Пользователя и базы данных, содержащие в себе полную информацию о Пользователе.
  • Группы, Переадресаторы, Псевдонимы и другие Объекты Доменов.
  • Мета-Справочник, объединяющий Локальные и Удалённые Тома.
  • LDAP доступ в Справочник и в базы данных, хранящие информацию Пользователей.
  • Механизм Внешней Аутентификации для интеграции с решениями сторонних производителей.
  • Службы RADIUS.
  • Тарификационная система, поддерживающая различные типы Остатков для каждого Пользователя и предварительное резервирование средств.

Управление Хранением данных

  • Хранение Почты в различных Папках, совместный доступ к папкам, списки прав доступа к папкам (ACL).
  • Форматы Папок — текстовые файлы, папка (директория), другие контейнеры данных.
  • Хранение Файлов в публичных и личных Папках, виртуальные файлы.
  • Хранение и обработка информации о Групповом Взаимодействии в соответствии со стандартами iCalendar и vCard.

Передача Почты

  • ESMTP и LMTP механизмы обмена почтой.
  • Анти-Спам и другие встроенные механизмы защиты.
  • Интерфейс для дополнительных модулей, обеспечивающих высокопроизводительную фильтрацию электронной почты от вирусов, спама и других нежелательных сообщений.
  • Правила Автоматической обработки почты.
  • Списки Рассылки почтовых сообщений с автоматической обработкой ошибок и с Веб Интерфейсом к архивам списка.
  • Извлечение почты с других почтовых серверах через POP3 протокол.
  • Обмен данными с внешними программами для специализированных приложений.
  • Автоматическая обработка Приглашений пли планировани встречи и совместном использовании ресурсов.

Сигналы Реального Времени

  • XIMSS протокол для передачи Мгновенных Сообщений, статуса Присутствия, аудио и видео коммуникаций.
  • SIP протокол для Мгновенных Сообщений, статуса Присутствия, аудио и видео коммуникаций, совместного использования рабочего стола и взаимодействия в реальном времени.
  • XMPP протокол для Мгновенных Сообщений и статуса Присутствия.
  • Механизмы прохождения NAT («ближний» и «дальний») для XIMSS, SIP, RTP и медиа-протоколов, использующих TCP.
  • Регистратор (SIP Registrar), подключающий Прокси (forking Proxy) и сервер Присутствия.
  • Правила Автоматической Обработки Сигналов.
  • Наборы событий (Event packages) для информации о статусе присутствия, ожидающих голосовых сообщениях, регистрациях, диалогов и для иных сервисов.
  • Parlay X Интерфейс.

Среда для Приложений Реального Времени

  • Зависимые от домена среды для приложений.
  • Язык программирования CG/PL для быстрой разработки надежных приложений.
  • Встроенные операции для управления вызовами, медиа-потоками и для организации многосторонних конференций.
  • Интегрированный Доступ к хранилищу Сообщений и Файлов.

Службы доступа к данным

  • POP3 и IMAP4 протоколы доступа к почте клиентских программ.
  • MAPI интерфейс для почтовых клиентов, работающих под Microsoft® Windows (Outlook и другие приложения, работающие через MAPI).
  • Веб Интерфейс Пользователя для доступа к Папкам, Средствам Группового Взаимодействия, к Хранилищу файлов, к базе данных, хранящую Информацию и Настройки Пользователя, а также для работы с Сигналами и для Передачи Сообщений.
  • Поддержка различных языков и настраиваемый Внешний Вид для HTML, WAP/WML, и I-Mode Интерфейсов.
  • XIMSS интерфейс для доступа к Папкам, Средствам Группового Взаимодействия, к Хранилищу файлов, к базе данных, хранящую Информацию и Настройки Пользователя, а также для работы Сигналами и для Передачи Сообщений.
  • HTTP, FTP, и TFTP доступ к Хранилищу Файлов Пользователя.
  • AirSync интерфейс для электронной почты и данных групповой работы для клиентов, работающих под управлением Microsoft® Windows Mobile (клиент-серверный ActiveSync).
  • CalDAV интерфейс для доступа к Папкам Календаря и Заданий
  • Механизмы Публикации/Подписки (WebCal/iCal) через HTTP протокол для Папок Календаря и Заданий.
  • ACAP доступ (Протокол конфигурирования и доступа для внешних приложений) к базе данных, содержащую всю информацию о Пользователе.

Передовые средства безопасности

  • SASL методы для Безопасной Аутентификации.
  • GSSAPI аутентификация (включая Kerberos V5), единый механизм входа пользователя (single sign-on).
  • Индивидуальные Пользовательские Сертификаты для Безопасной Аутентификации пользователей.
  • Безопасная Почта, встроенные в Веб Интерфейс средства для работы с S/MIME (шифрование/расшифровка, подписывание цифровой подписью и проверка цифровой подписи).
  • Автоматическое Шифрование для безопасного хранения информации.
  • SSL/TLS — безопасный обмен данными для SMTP, SIP, IMAP, POP, HTTP, LDAP, ACAP, PWD и сессий Администрирования.
  • СОРМ — перехват сообщений в соответствии с требованиями законодательства.

Многоуровневое Администрирование

  • Веб Иинтерфейс Администратора для администрирования сервера, управления услугами и мониторинга.
  • CLI/API интерфейс для автоматизации выполнения задач по администрированию, управлению услугами и мониторингу.
  • SNMP Агент для удалённого мониторинга.
  • Триггеры для упреждающего мониторинга.
  • Poppwd протокол для удалённого изменения пароля.
  • Управление через LDAP (опционально) для интеграции с действующими системами.
  • BSD syslog — Сервер консолидированного ведения Журналов работы сторонних программ.

Использование нескольких серверов

  • Распределённые Домены для работы в конфигурациях с несколькими одиночными серверами.
  • Статические Кластеры для распределения Пользователей по нескольким Серверам.
  • Динамические Кластеры для высокоэффективного масштабирования без распределения Пользователей. Решение промышленного класса, обеспечивающее безотказную работу в течении 99.999% времени эксплуатации, на практике доказавшее свою эффективность в обслуживании более чем 5,000,000 активных Пользователей.
  • Кластер из Кластеров для сверхбольших сайтов (свыше 10,000,000 активных Пользователей).

Возможности


Администрирование

CommuniGate Pro Сервер может настраиваться и администрироваться удалённо (через Интернет) при помощи любого Веб-браузера.

Возможности по удалённому администрированию включают в себя:

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

Поддержка и Обсуждение


Обновления и Исправления


Загрузка Последних Версий


Загрузка Дополнительных модулей по работе с Электронной почтой CommuniGate Pro


Загрузка MAPI Коннектора для CommuniGate Pro


Загрузка Дополнительного модуля по работе с Медиа для Браузеров


Руководство CommuniGate® Pro. Copyright © 1998-2009, Stalker Software, Inc.

Время на прочтение
6 мин

Количество просмотров 4K

Часть 2

В первой части нашего текста мы начали погружаться в пучину импортозамещения, рассматривая решения для организации корпоративной почты CommuniGate Pro. Сегодня мы продолжим обозревать это богоспасаемое ПО и разбираться с его основными настройками.

Создание пользователя

Переходим в раздел “Users -> Domains -> laex.xyz -> Objects”. Указываем имя пользователя, которое станет именем почтового ящика и жмём “Create Account”

Далее указываем основные данные пользователя и сохраняем их, нажав “Update” внизу страницы.

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

Настройки пользователя

Новые пользователи создаются с определёнными настройками по умолчанию. Задать их можно в разделе “Users -> Account Defaults -> Settings”, а также на уровне домена в блоке “ Users -> Domains -> laex.xyz -> Account Defaults -> Settings” и в шаблоне пользователя, доступном по пути “ Users -> Domains -> laex.xyz -> Objects” при нажатии на ссылку “Template”.

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

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

Разумеется, параметры пользователя можно изменить для каждого пользователя персонально, открыв именно его настройки, например “ Users -> Domains -> laex.xyz -> Objects -> user01 -> Settings”

Создание группы рассылки

Для отправки сообщения нескольким пользователям сразу удобно использовать группы рассылки. Они создаются в том же разделе “Users -> Domains -> laex.xyz -> Objects”, что и пользователи.

Укажем название группы и нажмём “Create Group”

После этого можно добавить пользователей в группу и настроить её параметры

IP и порты администратора

Как вы могли заметить выше, доступ к web консоли администрирования производится по портам, отличным от портов клиентского доступа. Настройка IP адресов и портов для доступа администратора производится в блоке “Settings -> Services -> HTTPA” после нажатия ссылки “Listener”.

Как видно, по умолчанию используется порт 8100 для нешифрованного и 9100 для шифрованного подключения. Вы можете переопределить значения по умолчанию или добавить свои порты.

Здесь же можно ограничить IP подключений для администрирования чёрным или белым списком, либо не ограничивать доступ.

IP и порты входящей, исходящей почты и клиентский доступ

Настало время настроить взаимодействие с внешним миром, ибо зачем нам сферический почтовый сервер в вакууме?

Исходящая почта

Настройки отправки почты можно выполнить в блоке “Settings -> Mail -> SMTP -> Sending”.

Здесь можно настроить прямую отправку или через смарт-хост, ограничения отправки, повторы отправки и их параметры, шифрование и прочее.

Входящая почта

Поток входящей почты принимается в соответствии с настройками в блоке “Settings -> Mail -> SMTP -> Receiving”

Можно настроить ограничения количества получателей и размера письма, параметры SMTP приёмника и прочее, а нажав уже знакомую вам ссылку “Listener” настроить IP адреса и порты, на которые производится приём почты и такие параметры, как шифрование и фильтрацию по IP.

Клиентский доступ

Настройки POP протокола доступны в блоке “Settings -> Access -> POP” и там же по ссылке “Listener” настраиваются IP, порты, шифрование и фильтрация по IP.

Настройки IMAP аналогичны и выполняются в блоке “Settings -> Access -> IMAP”.

Настройка аутентификации через AD

Приятной особенностью CGP является его возможность аутентифицировать пользователей с помощью Active Directory. Настройки выполняются в двух местах: в интерфейсе администрирования и правкой скриптов в рабочем каталоге CGP.

Для начала подготовим саму возможность аутентификации. Создадим папку для скриптов в рабочем каталоге CGP, например /var/CommuniGate/Scripts

Скачаем с сайта производителя скрипт и скопируем его в созданную папку, затем отредактируем этот файл в соответствии с нашей инфраструктурой.

После подготовки скрипта укажем его использование в CGP. Переходим в блок “Settings -> General -> Helpers”, включаем возможность внешней аутентификации, указываем путь к настроенному скрипту и таймауты.

Разрешим для всех пользователей внешнюю аутентификацию в блоке “Users -> Account Defaults -> Settings”, указав “External Password: Enabled”.

Теперь можно входить в почтовый ящик пользователя, используя логин и пароль пользователя Active Directory. Сопоставление производится по SamAccountName в AD и uid в CGP.

Адресная книга из AD

Для использования AD в качестве адресной книги нужно описать подключение к AD и назначить это подключение пользователям.

Для начала создаём внешнюю адресную книгу в блоке “Directory -> Units”.

Указываем имя и поддерево. Поддерево будет использоваться в качестве «Search Base» при подключении адресной книги пользователям. Жмём “Create Remote Unit”, затем щёлкаем ссылку созданного подключения и настраиваем его.

Указываем контроллер домена, OU с пользователями, пользователя для подключения и его пароль. Указанному пользователю достаточно прав только на чтение AD. В строке “Search Filter” можно указать критерии отбора пользователей для адресной книги. На скриншоте указан фильтр для выборки пользователей с заданным адресом электронной почты.

Назначить созданную адресную книгу пользователям можно в блоке “Users -> Account Defaults -> Preferences” почти в самом низу страницы, в разделе “Contacts”.

Антиспам и антивирус

Думаю, сейчас никому не нужен почтовый сервис без возможностей фильтрации спама и без защиты от вирусов. У CGP есть собственные средства борьбы со спамом: чёрные и белые списки, RBL, фильтрация по получателям и отправителям. Также можно подключать внешние фильтры. Рассмотрим настройку на примере подключаемых модулей Касперского. Для начала необходимо эти модули скачать, установить и добавить лицензии для них.

Модуль антиспама

Модуль антивируса

Подключение модулей выполняется в блоке “ Settings -> General -> Helpers”. В разделе “Content Filtering” указываем название модуля, путь к нему и таймауты. Применяем настройки. Аналогично настраиваем следующий модуль.

Это ещё не всё. После предыдущей настройки CGP знает, что у него есть щит от спама и меч для вирусов, но применять их не торопится. Расскажем ему, как использовать эти инструменты, а заодно ознакомимся с тем, как настраиваются почтовые правила.

Логика сканирования следующая: почтовое правило выбирает почту для проверки антивирусом и антиспамом и отправляет эти письма соответствующим модулям. После проверки письма возвращаются CGP для дальнейшей обработки. Мы же помним, что у нас есть несколько уровней применения настроек? Так вот правила для антивируса и антиспама обязательно должны быть заданы на уровне сервера.

Переходим в блок “Settings -> Mail -> Rules”

Создадим правило “Antivirus” и зададим рекомендованные производителем настройки для проверки. В этом правиле все сообщения больше 2 КБ отправляются в модуль антивируса для проверки.

Аналогично создадим и настроим правило для антиспама:

Журналы и их настройки

CGP записывает свои действия и действия пользователей в файлы журналов. Посмотреть записи и настроить журналирование можно в блоке “Monitors -> Logs -> Server”

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

Для просмотра журнала щёлкните его ссылку:

Доступна фильтрация по уровню события, тексту, времени возникновения события. Укажите нужные фильтры и нажмите “Display”. Модуль журналирования покажет отфильтрованные события.

Резервное копирование

Резервное копирование сервера выполняется копированием файлов данных и настроек. Для восстановления достаточно заменить текущие данные скопированными. По умолчанию пользовательские данные, настройки пользователей и настройки сервера хранятся в каталоге “/var/CommuniGate”, его и нужно резервировать любым удобным для вас способом.

Заключение

Эта статья – достаточно поверхностный разбор возможностей CGP, достаточная для установки и базовой настройки почтового сервера в рабочей среде. CGP обладает огромным количеством возможностей, которых я здесь даже не коснулся. Удачи вам в освоении отечественного ПО!

Table of Contents

Communigate Pro

  • Разобраться: в чем особенности The 4th Version Mailbox (.mb4) Format

Модуль 1. Установка, интерфейс администрирования и запуск CGP

Теория

Лабораторные работы

1.1 Схема стенда, настройка системы

  • 2Gb ОЗУ (clamav)

# ifconfig eth0 inet 172.16.1.100+X/24
hostname: mail.corpX.un
ip/mask: 172.16.1.100+X/24
gate: 172.16.1.254
dns: 172.16.1.254

1.2 Развертывание инфраструктуры Microsoft AD и CA

  1. Импорт системы MS Server 2016 server.corpX.un (включение в сеть класса)

  2. Импорт системы MS Windows 10 clientN

  3. Переименование MS Server 2016 в server

  4. Назначение роли AD corpX.un (лучше перед этим назначить IP 172.16.1.X)

  5. Назначение роли CA (после AD!!!)

  6. Назначение IP 172.16.1.X/24 MS Server 2016

  7. Настройка DNS clientN на server

  8. Включение clientN в домен

  9. Добавление в DNS на server записи mail.corpX.un (!!! Это все понадобится уже в 3-м модуле)

  10. Добавление в домен user1/Pa$$w0rd1 (возможно, не понадобится)

1.3 Установка CGP сервера

Debian/Ubuntu

# wget http://www.communigate.ru/pub/CommuniGatePro/CGatePro-Linux_amd64.deb

# dpkg -i CGatePro*.deb

# dpkg -l | grep cgatepro-linux

# service CommuniGate start

# cat /var/CommuniGate/ProcessID

1.4 Первоначальная настройка

http://172.16.1.100+X:8010
Postmaster Password: xxxxxx
Main Domain Name: corpX.un
Time Zone: Europa/Moscow
Interface: Expert

# cat /var/CommuniGate/Settings/Main.settings

Settings->Network->Blacklisted IPs->
  UnBlacklistable (White Hole) IP Addresses: 
    172.16.1.0/24
    10.5.0.0/16

# cat /var/CommuniGate/Settings/WhiteHoles.data

1.5 Тестирование работоспособности почтовой подсистемы

# file /usr/bin/mail
/usr/bin/mail: symbolic link to /opt/CommuniGate/mail

# echo Hello | mail -s Hello postmaster@localhost

# cat /var/CommuniGate/Accounts/postmaster.macnt/INBOX.mslc/data1

Вопросы

  1. Откуда берет название Stalker Software — компания разработчик Communigate? :)

  2. Какая функциональность, по утверждению разработчиков, должна присутствовать в системе, что бы на нее можно было портировать Communigate?

  3. Что необходимо сделать сразу после первого запуска только что установленного сервера Communigate?

  4. Какие форматы почтовых ящиков поддерживает Communigate, в чем их достоинства и недостатки?

Модуль 2. Управление учетными записями

Теория

Лабораторные работы

2.1 Иерархия параметров конфигурации Communigate

  • Можно показать для настройки Language, имен папок и интерфейса по умолчанию

  • Настройки по умолчанию: для сервера, для домена (основного и дополнительных), для шаблона, для пользователя

Users->Account Defaults->
  Mail Settings->
    Mailbox Storage: Mail Storage Limit: 3G
# cat /var/CommuniGate/Settings/DomainDefault.settings | grep MaxAccountSize

Users->Domains->corpX.un->Account Defaults->Mail Settings
  Mailbox Storage: Mail Storage Limit: 10G
# cat /var/CommuniGate/Accounts/Settings/domain.settings | grep AccountDefaults

# cat /var/CommuniGate/Domains/compX.un/Settings/domain.settings | grep AccountDefaults

Users->Domains->corpX.un->Objects->Template->Mail Settings
  Mailbox Storage: Mail Storage Limit: 30G
# cat /var/CommuniGate/Accounts/Settings/template.settings

Users->Domains->corpX.un->Objects->postmaster->Mail->Mail Settings
  Mailbox Storage: Mail Storage Limit: 50G
# cat /var/CommuniGate/Accounts/postmaster.macnt/account.settings

2.2 Создание учетной записи через интерфейс администратора

Users->Domains->corpX.un->Objects->

Create Account: user1
Real Name: Иван Иванович Иванов
CommuniGate Password: password1

# find /var/CommuniGate/Accounts/user1.macnt/

Задание: назначить учетной записи postmaster свое ФИО, должность, телефон …

2.3 Создание учетной записи через CLI

shell> telnet localhost 106

или

shell> nc localhost 106
USER postmaster

PASS Pa$$w0rd

NOTIMEOUT

LISTACCOUNTS
LISTACCOUNTS corpX.un

GETACCOUNTSETTINGS user1
GETACCOUNTSETTINGS user1@corpX.un

GETACCOUNTDEFAULTS
GETACCOUNTDEFAULTS corpX.un

GETACCOUNTEFFECTIVESETTINGS user1

GETACCOUNTINFO user1

CREATEACCOUNT user2 {Password = "password2";RealName = "Петр Петрович Петров";}

QUIT

2.4 Создание учетной записи из внешней программы

Примечание: демонстрирует преподаватель

2.5 Создание пользователей с помощью текстового файла

Примечание:

  1. использовать кодировку utf-8 и табуляцию между столбцами

  2. добавить символ новой строки в конце файла

  3. атрибут telephoneNumber убрать, появится в следующих лабораторных работах

  4. удалить пользователей по окончании работы

Name	RealName	Password	telephoneNumber
user3	Сидор Сидорович Сидоров	password3	403
user4	Василий Муркович Кошкин	password4	404

2.6 Управление дополнительным доменами в CGP

Создаем новый домен

Users->Domains->CreateDomain->compX.un

Создаем пользователя в новом домене и назначаем ему права администратора

Users->Domains->compX.un->Objects->Create Account: user3

Real Name: Сидоров Сидор Сидорович
CommuniGate Password: password3

Users->Domains->compX.un->Objects->user3->Settings->
Access Rights->Can Modify This Domain and its Accounts Settings
!!!И Все галочки TABом и пробелом!!!

# less /var/CommuniGate/Domains/compX.un/Settings/access.settings

GETACCOUNTINFO user3@compX.un

Настройка DNS

mail.corpX.un. A 172.16.1.100+X

mail.compX.un. A 172.16.1.100+X

Настройка алиасов доменов

Users->Domains->corpX.un->Domain Settings->Domain Aliases: mail.corpX.un

Users->Domains->compX.un->Domain Settings->Domain Aliases: mail.compX.un

Логинемся как user3 из домена compX.un и управляем доменом

http://mail.compX.un:8010/

Вопросы

  1. По какой причине учетная запись администратора Communigate называется postmaster?

  2. Перечислите способы создания учетных записей в Communigate.

  3. Перечислите уровни конфигурации на которых можно определить параметры учетной записи.

  4. Что нужно сделать, что бы делегировать права управления доменом отдельному администратору?

Модуль 3. Настройка интерфейсов пользователей

Теория

  • Протоколы доступа к почтовым ящикам: POP3 и IMAP

  • Протокол доступа к каталогам данных LDAP

  • Протокол для работы с почтой/календарями/контактами/задачами ActiveSync

  • Универсальный протокол для работы с сервером Communigate XIMSS

Лабораторные работы

  • !!! Для корректной работы с сертификатом достаточно ввести windows clientN в домен, подключаемся локальной учетной записью до лабораторной работы с GSSAPI

3.1 Создание сертификата TLS для доменов

Сертификат для домена corpX.un

Users->Domains->corpX.un->Security->SSL/TLS
PKI Services: Enable
Private Key 
Key Size: 1024
Generate Key
Certificate Generator
Common Name: mail.corpX.un
Alternative Name: mail.corpX.un    !!!Для Chrome
Country: RU
State/Province: Moscow region
City: Mosсow
Organization: CKO
Unit: NOC
Contact: postmaster@corpX.un

3.2 Подключение почтовых клиентов

По протоколу POP3

По протоколам SMTP и IMAP

  • Ввести систему clientN в домен, если используется сертификат, подписанный Microsoft CA

По протоколам MS Exchange и Active Sync

  • Имя пользователя указывать полностью, с доменом

3.3 Подключение через web интерфейс

Базовая конфигурация веб интерфейсов

Users->Domains->corpX.un->Domain Settings->Domain Aliases: mail.corpX.un

Settings->Services->HTTPU->Listener
  Port 80 Init SSL/TLS Off
  Port 443 Init SSL/TLS On

# cat /var/CommuniGate/Settings/HTTPU.settings

Выбор интерфейса и локализация пользователя

Users->Account Defaults->Preferences
Users->Domains->corpX.un->Account Defaults->Preferences
Users->Domains->corpX.un->Objects->postmaster->Preferences

Language: Russian
Layout: Basic|Crystal|mCrystal|Samovare

Пользователи->Домены->corpX.un->Объекты->postmaster->Настройки->Язык: ...(English)

Локализация сообщений

Master->Settings->Strings

# cat /var/CommuniGate/Settings/Strings.settings

Управление подключениями и блокировками

Monitors->Access->Sessions

KILLACCOUNTSESSIONS user1

GETTEMPBLACKLISTEDIPS
...

TEMPBLACKLISTIP 10.5.N.M DELETE

3.4 Согласование названий папок

  • Назначение папок в Communigate

USERS->DOMAINS->corpX.un->user1->PREFERENCES
  Folders: Save Sent Messages in: Sent

3.5 Использование общей адресной книги

В веб интерфейсе

Синхронизация
DIRECTORY->UNITS
  Main->SETTINGS
  Update
Отображение
USERS->ACCOUNT DEFAULTS->PREFERENCES
  Contacts:
    Name: Адресная книга
    Search Base: $domain$

По протоколу LDAP

Через интерфейс администратора
Из командной строки

Примечание: демонстрирует преподаватель

Чтение данных с аутентификацией

# ldapsearch -x -D "user1@corpX.un" -W -b"cn=corpX.un" -H ldaps://mail.corpX.un:636 

Чтение данных без аутентификации

Directory->Access Rights

Name: ReadAll
Bind DN: anyone вместо uid=*
# ldapsearch -x -b"cn=corpX.un" -H ldap://mail.corpX.un:389

Добавление атрибутов

Directory->Units->Main->Schema
...
telephoneNumber
...

Users->Directory Integration
Public Info: telephoneNumber

Подключение адресной книги к почтовому клиенту

3.6 Персонализация интерфейса для компании

Заменяем логотип в basic (корневом) интерфейсе

На уровне сервера:
Users->Skins

На уровне домена:
Users->Domains->corpX.un->Skins

  Create Custom Unnamed Skin

Upload File: logo.gif 

# ls /opt/CommuniGate/WebSkins/

# ls /var/CommuniGate/WebSkins/logo.gif
# ls /var/CommuniGate/Accounts/WebSkins/logo.gif

Заменяем логотип в Samoware интерфейсе

# find /opt/CommuniGate/WebSkins/ -type d

Named Skins: Create: Samoware

Upload File: logo-big-samoware.svg

# find /var/CommuniGate/Accounts/WebSkins/

Заменяем строку в тесте

# ls /var/CommuniGate/Accounts/WebSkins/russian.data
...
  LoginTag1		= "...";
  LoginTag2		= "...";
...

Дополнительное задание: Сделать то же самое через пользовательский интерфейс postmaster

Создаем свой skin и добавляем какую-нибудь совершенно новую ссылку в интерфейс

Users->Domains->corpX.un->Skins->Named Skins->Create: mySkin

# cat /var/CommuniGate/Accounts/WebSkins/mySkin/navigation.wssi
...
  <td nowrap="nowrap"><a href="mailbox.wssp?mailbox=INBOX&">%%HTML:SETTINGS("InboxDisplay")%%</a></td>
  <td nowrap="nowrap"><a href="mailbox.wssp?mailbox=Sent Items&">Sent Items</a></td>
...

Вопросы

  1. Что необходимо сделать для включения поддержки SSL/TLS в Communigate?

  2. Какие протоколы поддерживает Communigate для работы с почтовыми клиентами, какими особенностями они обладают?

  3. Какие способы работы с адресной книгой предоставляет Communigate для почтовых клиентов?

  4. Перечислите основные варианты Web интерфейсов для пользователей Communigate.

  5. В какой папке должны хранится элементы персонализации Web интерфейса компании?

Модуль 4. Маршрутизация почты и борьба со SPAMом

Теория

Лабораторные работы

4.1 Протокол SMTP

Настройка DNS

mail.corpX.un. A 172.16.1.100+X

corpX.un. MX 10 mail.corpX.un.

Пример диалога

gate.isp.un$ mail postmaster@corpX.un

Почтовый relay для локальной сети

  • Можно продемонстрировать отправку письма без аутентификации из локальной сети на внешний ящик

# cat /var/CommuniGate/Settings/WhiteHoles.data

Settings->Network->Client IPs: 

!172.16.1.254
172.16.1.0/24
10.5.0.0/16

4.2 Использование встроенных средств CGP для борьбы со SPAMом

Настройка параметров приемника SMTP

Settings->Mail->SMTP->Receiving
Verify
  Return-Path for: ...
  Check SPF records: ...
Non-Client Sender
  Delay Prompt for: 10
gate.isp.un% mail user1@corpX.un

gate.isp.un% tail -f /var/log/maillog

Технология Honeypot

Settings->Router
...
<director> = spamtrap
...

gate.isp.un% mail user1@corpX.un director@corpX.un

Помощь пользователей

в файле strings.data в строках SpamFalseNegativeReportEmail и SpamFalsePositiveReportEmail можете указать адреса, куда перенаправлять неправильно определённые письма, тогда появятся кнопки для этого

Библиотека скриптов для CommuniGate Pro (бесплатно) содержит программу для массового удаления вредоносных писем

4.3 Использование внешних фильтров для борьбы с вирусами и SPAMом

Развертывание антивируса

# wget -O /var/CommuniGate/eicar.zip http://media.kaspersky.com/utilities/ConsumerUtilities/eicar.zip

# usermod -G mail clamav

# service clamav-daemon restart

# clamdscan /var/CommuniGate/eicar.zip

Развертывание антиспама

# cat /etc/default/spamassassin
...
OPTIONS="-m 10 -x -q -u mail -i 127.0.0.1 -p 783"
...

Сборка программы Helper

# wget http://program.farit.ru/antivir/cgpav-1.5.tar.gz

# tar -xvf cgpav-1.5.tar.gz

# cd cgpav-1.5/

# ./configure --with-antivirus=clamav --with-spamassassin=yes --with-cgpro_dir=/var/CommuniGate
...
3 Without database support

# make && make install

# cat /var/CommuniGate/Settings/cgpav.conf
...
# не добавляется, если письмо распознано как SPAM
add_not_infected_header = true
...
clamd_socket = /var/run/clamav/clamd.ctl
...
enable_spamassassin = true
...
spam_scan_local = true
...
spam_level_header = true
...
spam_level_char = X
...
spamassassin_socket_type = tcp
...
# /var/CommuniGate/cgpav
1 FILE eicar.zip
1 DISCARD

Подключение хелпера к CGP

Settings->General->Helpers->Content Filtering
Enabled: ClamSpam
Program Path: /var/CommuniGate/cgpav
# ps ax | grep cgpav

Включение хелпера с помощью глобальных правил обработки почты

Settings->Mail->Rules
Name: ClamSpam
Action: ExternalFilter
Parameter: ClamSpam

Тестирование

  • Вирусы — файл eicar с client1, отключив через поиск “Параметры Защитника Windows” и наблюдая clamav.log

  • Спам — отравкой сообщения с одним словом, можно как при тестровании в п.1.5 и наблюдая syslog

Использование простых правил управления спамом

  • Включает пользователь у себя в настройках

Пример настроек правил на уровне сервера, домена и пользователя через CLI

  • Для перемещения SPAM писем в папку администратора правило должно работать на уровне сервера, иначе, даже на уровне домена, не хватает прав (видимо, считается, что письмо перемещает пользователь …)

GETSERVERMAILRULES

SETSERVERMAILRULES ((5, ClamSpam, (), ((ExternalFilter, ClamSpam))), (3, MoveSpam,(("Header Field", in, "X-Junk-Score*XXXXXXXXXX*")),(("Store in", "~postmaster/Spam"), (Discard))))

SETSERVERMAILRULES ((5, ClamSpam, (), ((ExternalFilter, ClamSpam))))

GETDOMAINMAILRULES corpX.un

SETDOMAINMAILRULES corpX.un ((3, MoveSpam,(("Header Field", in, "X-Junk-Score*XXXXXXXXXX*")), (("Store in", "~/Junk"), (Discard))))

SETDOMAINMAILRULES corpX.un ()

GETACCOUNTMAILRULES user1

!!! Это пример, лучше включить Junk Mail Control для учетной записи пользователя в интерфейсе администрирования !!! 
SETACCOUNTMAILRULES user1 ((3, MoveSpam,(("Header Field", in, "X-Junk-Score*XXXXXXXXXX*")), (("Store in", "~/Junk"), (Discard))))

Вопросы

  1. Что используется в протоколе SMTP для поиска IP адреса сервера назначения?

  2. Что означает термин relay в электронной почте?

  3. Перечислите технологии борьбы со SPAM, доступные в Communigate.

  4. Какой механизм используется для подключения внешних программ обработки писем в Communigate?

Модуль 5. Использование Communigate для совместной работы

Теория

  • Протокол обмена сообщениями и информацией о присутствии XMPP — Википедия

  • Протокол для поддержки удаленной работы с файлами (в том числе с календарями и задачами) на серверах WebDAV — Википедия

Лабораторные работы

5.1 Организация групповых почтовых адресов

Использование списков рассылки и серверных правил

По окончании тестирования, удалить правила и список рассылки

  • Создаем группу group1 с пользователями user1 и user2

  Set Reply-To to Group: no
  • Создаем правила, меняющие заголовок для писем в группу, и заменяющие Reply-To для писем из группы

  • !!! Если создавать через CLI SETSERVERMAILRULES, надо все оформить одной строкой и _убрать_ коментарии на русском !!!

  • Правило replace_from_group1 подразумевает указание в поле To только адрес того, кому отвечаем, адрес группы надо указвать в поле Cc. Возможно, удобенее не использовать это правило, а отвечать, указывая группу в качестве обратного адреса

GETSERVERMAILRULES
200 data follow
(
  (
    6,
    mark_to_group1,
    ((Subject, "is not", "*[group1]*"), ("Any To or Cc", is, "*group1@corpX*")),
    (("Tag Subject", "[group1] ")),
    "Помечаем тему всех писем, идущих в группу"
  ),
  (
    4,
    replace_from_group1,
    ((Subject, is, "*[group1]*"), (To, "is not", "*group1@corpX*")),
    (("Add Header", "Reply-To: group1@corpX.un")),
    "Устанавливаем Reply-To в группу для всех ответов из группы"
  )
)

Использование общих папок и прав доступа к ним

  • Для postmaster:

+ Create Folder-> 
  Имя Папки: group1
  Folder location: Root

group1 *
  Открыть доступ к папке
    user1     Запись
    user2     Запись
  • user1 и user2

Папки->Управление->Псевдонимы Папок

Имя Псевдонима: group1
Имя Папки: ~postmaster/group1

Использование расширеного формата почтовых адресов

# echo Hello | mail -s Hello group1#postmaster@corpX.un

Преобразование адресов правилами маршрутизации

Направление публичной почты в соответствующий ящик

По окончании тестирования, правило удалить

Settings->Router
...
<group1@corpX.un> = group1#postmaster@corpX.un
...

Применение пользовательских правил для управления почтой

  • Создание алиаса

Users->Domains-corpX.un->Objects->postmaster->Settings
Aliases: group1
  • Операции условий равно (is) и не равно обрабатывают параметры как “шаблоны” строки: символы звёздочка (*)

  • Операции условий среди (in) и не среди обрабатывают параметры как наборы из одной или нескольких “шаблонов”, разделённых символами запятой (,)

  • От имени postmaster создаем правила:

Управление Почтой
  Добавить Правило: Move to group1
  Изменить
    Любой Кому/Копия: равно *group1*
    Записать в: group1
    Выбросить

5.2 Электронная подпись и шифрование S/MIME

Активация функциональности

USERS->DOMAINS-corpX.un->SECURITY->S/MIME
  Создаем самоподписанный сертификат (будет работать как коневой УЦ)

Использование в Samoware

Пользователи user1 создает у себя в интерфейсе сертификат для подписи и расшифровки и отправляет _подписанное_ письмо user2

Подделать текст письма можно:

# vim /var/CommuniGate/Accounts/user2.macnt/INBOX.mslc/data1

Использование в Thunderbird

  • Устанавливаем в базу данных доверенных сертификатов серверов в Thunderbird само подписанный сертификат УЦ CGP, свой сертификат и закрытый ключ и ВСЕ сертификаты респондентов, короче, не очень удобно )

5.3 IM and Presence

  • Выяснить в службе поддержки, куда девается ФИО при добавлении в “Друзья” ?

5.4 Общие календари и задания

  • По аналогии с общими почтовыми папками

5.5 Использование облачного хранилища

  • Settings→Services→HTTPU→Request Size Limit: unlimited

5.6 Перлюстрация писем

Задача: Предоставить доступ администратора (postmaster) к ящикам пользователей

Folders->Management->Folder Aliases

Open Folder: ~user1/Sent Items

Задача: сохранять всю исходящую почту в особой папке у системного администратора или у сотрудника, отвечающего за безопасность.

Вопросы

  1. Перечислите способы организации групповых адресов в Communigate.

  2. Что можно использовать в Communigate для гарантии достоверности и шифрования сообщений?

  3. Какой протокол поддерживает Communigate для подключения внешних программных клиентов мгновенных сообщений и статуса абонента?

  4. Какой протокол поддерживает Communigate для подключения внешних программных клиентов для работы с календарями?

Модуль 6. Интеграция с внешними системами

Теория

Лабораторные работы

6.1 Внешняя аутентификация, скрипт для Microsoft AD

  • Добавляем в домен пользователей user100+X/Pa$$w0rd100+X (Sidor S. Sidorov, можно указать номер телефона)

  • Добавляем в AD DNS хост mail.corpX.un и, если нужно, autoconfig.corpX.un

  • Пример 5 CommuniGate Pro Perl Interface

  • !!! Работает только при подключении через HTTPS

# ldapsearch -x -D "cn=Administrator,cn=Users,dc=corpX,dc=un" -W -h server -b "dc=corpX,dc=un" "sAMAccountName=user100+X"

# apt install libauthen-simple-ldap-perl

# wget http://www.communigate.ru/CGAUTH/authLDAPNewAD.pl
  • Настраиваем хелпер

# cat authLDAPNewAD.pl
...
my %domains=( # e-mail domains
  'corpX.un' => {
    address=>'ldap://server.corpX.un:389',
    timeout=>5,
    adminDN=>'CN=Administrator,CN=Users,DC=corpX,DC=un',
    adminPassword=>'Pa$$w0rd',
    searchBase=>'CN=Users,DC=corpX,DC=un',
    searchFilter=>'(&(sAMAccountName=<user>)(objectclass=*))',
    updatePasswords=>1,
  },
...
my $CGServerAddress =  '127.0.0.1';   # You should redefine these values
my $CLILogin = 'postmaster';
my $CLIPassword = 'Pa$$w0rd';
...
# chmod +x authLDAPNewAD.pl
  • Подключаем хелпер к CGP

Settings->General->Helpers->External Authentication

Program Path: /root/authLDAPNewAD.pl
или
Program Path: C:Perlbinperl C:varCommuniGateauthLDAPNewAD.pl
# ps ax | grep authLDAPNewAD
Users->Domains->corpX.ru->Domain Settings
Consult External for Unknown: Yes
Consult External on Provision: Yes

Users->Domains->corpX.un->Account Defaults->Settings
External Password: Enabled

6.2 Миграция почты пользователей

  • !!! Разделитель полей TAB !!!

Users->DOMAINS->corpX.un->Account Defaults->Settings->
  Password Encryption: clear

# cat /var/CommuniGate/Accounts/user101.macnt/account.settings

# cat /root/AccountList.txt
Name    Password
user100+X Pa$$w0rd100+X

# cd /opt/CommuniGate/Migration/

./MoveAccounts --IMAP /root/AccountList.txt 172.16.1.254 127.0.0.1

6.3 SSO аутентификация в Microsoft AD

  • Создание принципалов для протоколов IMAP и SMTP (LDAP и HTTP не заработали, написать в техподдержку)

C:>ktpass -princ imap/mail.corpX.un@CORPX.UN -mapuser cgateproimap -pass Pa$$w0rd -out cgateproimap.keytab -crypto RC4-HMAC-NT -ptype KRB5_NT_SRV_HST

C:>ktpass -princ smtp/mail.corpX.un@CORPX.UN -mapuser cgateprosmtp -pass Pa$$w0rd -out cgateprosmtp.keytab -crypto RC4-HMAC-NT -ptype KRB5_NT_SRV_HST
  • Перенос ключа принципала в CGP (Users→Domains→corpX.un→Security→Kerberos)

  • Входим в домен как user100+X с рабочей станции client1

6.4 Использование CGP в качестве RADIUS сервера

Задача: Аутентификация доступа пользователей в Internet

  • Включаем и настраиваем сервис в CGP

Settings->Services->RADIUS
Password: testing123
Channels: 3
Listener
Port: 1812
  • Тестирование

# radtest user1 'password1' mail.corpX.un 0 testing123

Вопросы

  1. Какие безопасные методы аутентификации поддерживает Communigate?

  2. Как организовать использование в Communigate учетных записей из Microsoft Active Directory?

  3. Какую часть протокола RADIUS реализует Communigate?

Модуль 7. SIP, PBX, встроенные приложения, номерной план, пример своего приложения

Теория

Лабораторные работы

7.1 Внутренняя телефония

Звонки из интерфейса Samoware

  • !!! Подключаться через https, вебинаристам по IP адресу с домашнего компьютера

  • Тестовый звонок на номер echotest

Подключение телефонных аппаратов и внутренний план нумерации

Users->Domains->corpX.un->Objects->userN->Settings
Aliases: 40N
Alt SIP Password: tpassword40N

Информация о регистрации SIP пользовательского оборудования

Users->Domains->corpX.un->Objects->user1->Status

или

GETACCOUNTINFO user1 KEY SIPContacts
...

7.2 Распространение IP телефонии за пределы офиса

Пользователь pbx

Users->Domains->corpX.un->Objects->pbx->Settings->Access Rights

  Can Modify This Domain and its Accounts Settings
    Can Access All Files
    Can Impersonate
    Can Administer Other Domains

Добавление служебных номеров

Settings->Router
...
Signal:<311@*>  = echotest#pbx@localhost  ; testing address
...

Звонки в соседний офис

Settings->Router
...
<000(3d)@*>    = *@telnum
...
Signal:telnum        = pstn                    ; unknown telnum -> PSTN
Signal:<*@pstn>      = gatewaycaller{*}#pbx    ; start 'gatewaycaller' app

или сразу

;Signal:<000(3d)@*>   = gatewaycaller{*}#pbx
<000(3d)@*>   = gatewaycaller{*}#pbx

Users->Account Defaults->PSTN
  или
Users->Domains->corpX.un->Account Defaults->PSTN
  или
Users->Domains->corpX.un->Objects->user1->Real-Time->PSTN->CLASS_OF_SERVICE_TELEPHONY

Gateway Domain: server.corp.un


Users->Domains->corpX.un->Objects->user1->Real-Time->PSTN

Caller ID: 00X401

Организация исходящих вызовов в PSTN через voip провайдера с аутентификацией

Settings->Router
...
<8(10d)@*>    = 8*@telnum
<+7(10d)@*>    = 8*@telnum

;<+(7-20d)@*>         = +*@telnum               ; +nnnnn calls -> to telnum
;...
...

Users->Account Defaults->PSTN
  или
Users->Domains->corpX.un->Account Defaults->PSTN
  или
Users->Domains->corpX.un->Objects->user1->Real-Time->PSTN

Gateway Domain: voip1.un
Name for Gateway: 00000X
Password for Gateway: spasswordX

Организация входящих вызовов из PSTN (регистрация на voip провайдере)

Users->Domains->corpX.un->Objects->pbx->Real-Time->RSIP
Name: voip1
Register Every: 5 min
Account: 00000X
at Host: voip1.un
Authentication Name: 00000X
Password: spasswordX
Target: логин пользователя, если оставить пустой, будет IVR

GETACCOUNTRSIPS pbx
200 data follow
{
  sipnet =  {
    authName =  00000X;
    domain =  voip1.un;
    fromName =  00000X;
    password =  spasswordX;
    period =  5m;
  };
}


Users->Domains->corpX.un->Objects->pbx->Real-Time->Incoming Call Rules->Edit
Redirect To is #pbx

CDR

Settings->Real-Time->Signals
   Record Call CDRs: yes

# ls /var/CommuniGate/SystemLogs/CDRs/

7.3 Локализация PBX

Users->Domains->corpX.un->PBX->Create Custom Enviroment

Languages->Create: russian

select russian
!!! Upload tar файлов из архива !!!

# ls CGateProSoftware/CommuniGate/PBXApps/

# ls /var/CommuniGate/Accounts/PBXApps

7.4 Встроенные приложения

IVR

Users->Domains->corpX.un->Object->pbx->Real-Time->Advanced

Department Menu: Custom: techsupport conference
Directory Prefix: 4   - с какой цифры внутренний план нумерации
Directory Digits: 3   - длина номера внутреннего плана нумерации
можно добавить свое название, например group1
для озвучивания пункта необходимо загрузить файл forgroup1.wav через
Users->Domains->corpX.un->PBX

Файл можно записать через голосовую почту, содержание примерно: "что бы позвонить в наш отдел"
Для пере направления вызова сотрудникам необходимо включить их в одноименную с пунктом меню группу.

Users->Domains->corpX.un->Objects->Create Group: techsupport
Members: user1
Members: user2

Голосовая почта

Пользователю необходимо позвонить на свой номер и записать приветствие, 
далее из своего веб интерфейса выполнить:

Управление Звонками->Голосовая Почта->После: 10 сек

Голосовые конференции

Вариант1: Позвонить на номер 200, создать конференцию, получить по почте номер конференции, разослать этот номер всем участникам, через номер 200 подключиться вместе со всеми.

GETACCOUNTINFO pbx KEY Meetings
...

Вариант2: Создать событие, у которого место проведения (Location) установлено в phone или conference, а в качестве участников перечислены аккаунты.

GETACCOUNTINFO user1 KEY Meetings
...

7.5 Пишем свое небольшое приложение

Hello World по номеру 301

Users->Domains-corpX.un->PBX->russian
  Upload File: sayhello.sppr

или

# cat /var/CommuniGate/Accounts/PBXApps/russian/sayhello.sppr
entry main is
  var errCode = AcceptCall();
  if isString(errCode) then
    syslog("Failed to accept the call: " + errCode);
  else
    PlayFile("blank", 500); // 0.5 sec of silence
    PlayFile("Welcome");
  end if;
end entry;
Users->Domains-corpX.un
  Create Forwarder: 301
  Forward To: sayhello#pbx
  
или  

SETTINGS-ROUTER
  ...  
  Signal:<301@*>  = sayhello#pbx@localhost
  ...

pbx — имя аккаунта от которой запускается приложение sayhello

Тоже Hello World, но с CallBack

# cat /var/CommuniGate/Accounts/PBXApps/russian/sayhello_cb.sppr
entry main is
  var data = Vars().startParameter[0];
  syslog("Will call to " + ObjectToString(data));
  var errCode = StartCall(EmailToSIPURI(data));
  if isString(errCode) then
    syslog("Call failed: " + errCode);
    stop;
  end if;
  loop
    data = ReadInput(10);
  exitif isCallCompletedEvent(data);
  end loop;
  if isConnected() then
    PlayFile("blank", 500);
    PlayFile("welcome");
    PlayFile("blank", 500);
    PlayFile("goodbye");
  end if;
end entry;
STARTPBXTASK pbx PROGRAM sayhello_cb PARAM ("401")

Вопросы

  1. Как привязываются телефонные номера абонентам Communigate?

  2. Для чего используется учетная запись pbx?

  3. Какой протокол сигнализации IP телефонии предлагает Communigate для подключения внешних телефонов?

  4. Что такое B2ВUA?

  5. Перечислите встроенные в Communigate голосовые приложения.

  6. Как организовать связь между абонентами Communigate и ТФОП(PSTN)?

  7. Какой язык программирования предлагает Communigate для разработки голосовых приложений?

Модуль 8. Использование CGP в качестве Web сервера

Лабораторные работы

8.1 Создание персональных страниц пользователей

8.2 Разработка CGI приложений на CG/PL

Приложение Web Callback

STARTPBXTASK pbx PROGRAM rendezvous PARAM ("401","8916XXXXXXX")
Users->Skins->Upload File: webcallback.wcgp

или

# cat /var/CommuniGate/WebSkins/webcallback.wcgp

!!! Только на уровне сервера !!!
entry sysEntry is

  SetHTTPResponseType("text","html");
  SetHTTPResponseCode(200);

  var phone = GetHTTPParameter("phone");
  var operatorphone = "401";
  var data = "";
  var cmd = "";
  
  if not isString(phone) 
  then 
    data = "<h1>Enter phone number</h1><form action=webcallback.wcgp><input name=phone><input type=submit></form>"; 
  else
	cmd = "STARTPBXTASK pbx PROGRAM rendezvous PARAM("" + phone + "","" + operatorphone + "")";
    data = "<h1>Waiting call on phone " + phone + "</h1>";
    var errCode = ExecuteCLI(cmd);
  end if;

  SetHTTPResponseData(data);
end entry;
http://mail.corpX.un/sys/webcallback.wcgp

8.3 Поддержка Provisioning для телефонных аппаратов

  • tftp: Settings→Access→TFTP→Listener

Вопросы

  1. Какой протокол предлагает Communigate для подключения внешних программ к приватному облачному хранилищу?

  2. Какой файл по умолчанию возвращает Communigate при подключении к учетной записи по протоколу HTTP?

  3. Какой язык программирования предлагает Communigate для разработки Web сценариев?

  4. Какие протоколы передачи файлов поддерживает Communigate?

Модуль 9. Разное

Анализ журналов

Monitors->Logs

# tail -f /var/CommuniGate/SystemLogs/`date '+%Y-%m-%d'`.log

Использование триггеров

HTTP SMS шлюзы

Settings->General->Triggers
  Events
    httpAdminAuthFailed:  ...
    failedAUTHs:  ...
  Handlers
    Send URL: https://rest.nexmo.com/sms/json?api_key=e5610a90&api_secret=1d98ff2a&from=NEXMO&to=79164115716&text=mail.corpX.un+par+^0+val+=+^2

Параметр ^1 возвращает строку с пробелом, которая некорректно передается от CGP к NEXMO

Отправка SMS по SMPP

Надо прописать его в Settings → Real-Time → SMPP
server smpp0.nexmo.com:8000, SystemID и Password — из аккаунта на nexmo (api_key и api_secret).

GETMODULE SMPP

Использование custom счетчиков

my $error = $cli->SendCommand('SetStatElement 1.3.6.1.4.1.5678.2.1.1000.1 SET '.$value);

Использование интерфейса SMNP для мониторинга

Cluster

Дополнительные материалы

Миграция с MS Exchange на CGP

-------- Перенаправленное сообщение --------
Тема: 	Re: SSO Kerberos в CGP - Case[ANRA0430-176SF]
Дата: 	Tue, 4 May 2021 14:19:22 +0300
От: 	Support <support@communigate.ru>
Кому: 	Вячеслав А. Лохтуров <val@bmstu.ru>


Здравствуйте,

0. Переносить пользователей лучше постепенно (всех сразу - будет затратно по времени).

    Т.е.:

    1) Создали пользователя (часть пользователей) на CommuniGate

    2) Перенесли данные

    3) Проверили, что всё перенеслось корректно

    4) Настроили аутентификацию со старым паролем пользователя

    5) Пересадили на CommuniGate

1. Перед тем, как переносить данные, на сервере CommuniGate нужно:

    1) Создать домен с таким же именем, как на Exchange

    2) Создать пользователей в домене

    Для переноса списка пользователей можно:

    а) Использовать утилиту ex2cgp: http://www.communigate.ru/CGFromExchange/russian.html

    б) Использовать скрипт LDAP-аутентификации authLDAPNewAD.pl: http://www.communigate.ru/CGAUTH/

    в) Если есть список пользователей и паролей можно использовать импорт: https://www.communigate.ru/CommuniGatePro/russian/Accounts.html#Loader

    Я бы рекомендовал 1-й вариант.

2. Чтобы пользователи могли входить в CommuniGate под паролями AD, можно настроить LDAP-аутентификацию в AD:

    а) Можно использовать встроенный механизм URI аутентификации

        http://www.communigate.ru/communigatepro/russian/Accounts.html#Passwords

    б) Можно использовать хелпер внешней аутентификации:

        http://www.communigate.ru/communigatepro/russian/Security.html#External

3. Когда пользователи CommuniGate созданы, можно переносить данные.

    Для переноса данных можно:

    а) Использовать утилиту ex2cgp

    б) Для переноса только почты можно использовать syncIMAPmail

    Замечание: ex2cgp работает значительно медленней, и в процессе её работы возникает больше ошибок.

    Я бы рекомендовал перенести почту утилитой syncIMAPmail, а непочтовые данные (Календарь, Контакты и т.п.) утилитой ex2cgp.

4. Когда данные пользователя (части пользователей) перенесены нужно настроить взаимодействие между серверами Exchange и CommuniGate.

    Чтобы почта для перенесённых пользователей приходила на CommuniGate, а для неперенесённых на Exchange.

    На Exchange:

     1) Переименовать (изменить основной e-mail адрес)  перенесенного пользователя - чтобы новая почта на него не приходила.

     2) Перенаправить почту "неизвестных" (перенесенных) пользователей на сервер CommuniGate (можно сделать через соединитель отправки) - чтобы новая почта с Exchange для перенесённых пользователей перенаправлялась на CommuniGate.

    На CommuniGate:

        Перенаправить почту тех пользователей, кто ещё остался на Exchange, на сервер Exchange: https://www.communigate.ru/CommuniGatePro/russian/HowTo.html#RelayUnknown


Для начала, рекомендуем сделать тестовую миграцию - на одном или нескольких пользователях, чтобы "обкатать" механизм, и проверить, как он работает.


-- 
Best regards,
Alexey Maximov

Пример web редиректа

> Здравствуйте.
>
> Подскажите, есть ли возможность средствами CGP перенаправлять подключения пользователей к
>
> http://student.bmstu.ru
>
> на
>
> https://student.bmstu.ru

Да, конечно. Страничку login.wssp в дефолтном скине домена надо подправить, добавить что-то типа

<!--%%IF NOT(REQUESTSECURE() | "YES") --><META HTTP-EQUIV="Refresh" CONTENT="0; URL=https://%%domainName%%"><!--%%ENDIF-->

Со стандартным вариантом login.wssp можно поступить так:

<!--%%IF secureChannel -->
the standard login.wssp data
<!--%%ELSE -->
<HTML>
<HEAD>
 <META HTTP-EQUIV=REFRESH CONTENT="0; url=https://%%domainName%%/">
 <TITLE>Redirecting to secure interface</TITLE>
</HEAD>
</HTML>
<!--%%ENDIF--> 

Не соответствие значений знимаемого места в интерфейсе CGP и на диске для учетной

Такое может произойти. если из директории аккаунта без ведома сервера были удалены почтовые папки. Проверьте соответствие списка папок в account.info куальному содержимому этого аккаунта. 

Можно просто удалить account.info (и, желательно, перезапустить сервер, потоьу что содержимое может кэшироваться в памяти) Сервер потом сам перечитает папки и воссоздаст строчки для них. 

Перевод звонка без сопровождения (blind transfer)

В приложении пример скрипта, реализующего b2bua в режиме бриджа (не миксера) и позволяющего с помощью DTMF команд выполнить перевод звонка без сопровождения (blind transfer). Данный скрипт воспринимает DTMF команды, посланные как SIP INFO запросы, а не в медиа канале (например, в hPronto на странице Preferences → Dialer опцию “Sending Method” нужно установить в signal).
Если нужно, чтобы DTMF команды работали и в том случае, когда они посылаются в голосовом канале (rfc2833 или inband), то нужно подключать стороны через миксер, а не через бридж, для этого нужно немного модифицировать часть скрипта до вызова процедуры bridgedCallLoop().

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

Сам механизм перевода следующий. При установлении соединения каждый из участников может набрать #nnnn (4-значный номер), чтобы дать сигнал для перевода партнера на 4-значный номер nnnn. После удачного перевода инициатор перевода будет отсоединен. На набор каждой цифры номера дается не более 5 секунд. Если за это время не было введена цифра, то перевод не осуществляется и нужно будет заново набирать #nnnn для осуществления попытки перевода (см. комментарии в скрипте). Также в процессе набора номера, если уже ошиблись, можно набрать *, чтобы начать набор #nnnn заново.

Логику меню набора номера для перевода можно адаптировать.

Приложение b2bua-transfer.sppr нужно закачать в PBX окружение (в WebAdmin → Users → PBX).
Для направления звонков в это приложение лучше использовать серверное сигнальное правило, потому что при направлении через запись в маршрутизаторе нужно будет вводить префиксы, чтобы не было зацикливания.

Серверное сигнальное правило может выглядить примерно так:

Data
Operation       IS       INVITE
Call Type       IS       AV
Submit Address  IS NOT   LOCAL [0.0.0.0]*
Target Address  IS       sip:*@domain.name

Action
Redirect To              b2bua-transfer#pbx@domain.name
Discard Rules

Здесь первые три условия стандартные, третье условие позволяет избежать зацикливания данного правила, так как оно не будет применяться для звонков, инициированных PBX приложением (то есть для вызова из исходящей ноги Caller приложения правило уже применяться не будет).
Далее нужно прописать набор условий (например, Target Address), которые будут задавать набор адресов отправителей и получателей звонка, для которых должно запускаться это приложение с логикой перевода через DTMF. В примере выше правило будет запускаться для всех номеров получателей в домене domain.name.
В логике скрипта можно дополнительно добавить проверку, чтобы пользоваться данными DTMF командами могли только локальные пользователи, а не внешние и т.п.

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

// ================================================== //
//             simple B2BUA application               //
//             supporting DTMF commands               //
// ================================================== //

entry     Caller                   forward;
procedure bridgedCallLoop(peerLeg) forward;
function  transferTo(numDigits)    forward;
procedure doSysLog(str) {SysLog("B2BUA: " + str);}

//
// ingress task entry
//
entry Main {
  var callParams              = NewDictionary();
  callParams.("")             = LocalURI();
  callParams.fromName         = RemoteRealName();
  callParams.From             = RemoteURI();
  callParams.("Call-ID")      = PendingRequestData("Call-ID") + ".b2b";
  callParams.("Max-Forwards") = PendingRequestData("Max-Forwards")-1;
  callParams.customIdentity   = "";

  doSysLog("callParams: " + callParams.objectToString());
  var peerLeg = spawn Caller(callParams);
  if(!IsTask(peerLeg)) {
    doSysLog("failed to spawn Caller task");
    RejectCall(peerLeg); stop;
  }

  var errorCode = StartBridge(peerLeg);
  if(errorCode != null) {
    void(SendEvent(peerLeg,"stop",errorCode));
    doSysLog("call failed: " + errorCode.string());
    RejectCall(errorCode); stop;
  }

  bridgedCallLoop(peerLeg);
  stop;
}

//
// egress task entry
//
entry Caller {
  var peerLeg = Vars().parent, callParams = Vars().startParameter, bridgeEvent,input,errorCode;

  void(Impersonate(SIPURIToEmail(callParams.From)));
  void(SignalOption("refer","peer"));
  void(SignalOption("bridgeBreak","disconnect"));

  bridgeEvent = ReadInput(10);
  if(!IsStartBridgeEvent(bridgeEvent) || bridgeEvent.sender != peerLeg) {doSysLog("unexpected start event: " + bridgeEvent.objectToString()); stop;}
  errorCode = StartBridgedCall(callParams,bridgeEvent);
  
  if(errorCode) {RejectBridge(bridgeEvent,errorCode); stop;}

  while(true) {
    input = ReadInput(3600);
  exitif !IsCallProvisionEvent(input);
  }

  if((IsDictionary(input) && input.what == "stop") || IsBreakBridgeEvent(input)) {stop;}
  if(!IsCallCompletedEvent(input)) {
    doSysLog("unexpected event: " + input.objectToString());
    errorCode = "unexpected event";
  } elif(input.parameter != null) {
    doSysLog("call failed: " + input.parameter);
    errorCode = input.parameter;
  }
  if(errorCode) {RejectBridge(bridgeEvent,errorCode); stop;}

  bridgedCallLoop(peerLeg);
  stop;
}

//
// Main loop: processing events and DTMF commands in the connected state
//
procedure bridgedCallLoop(peerLeg) {
  if(!IsTask(peerLeg)) {return;}
 
  while(IsConnected()) {
    var input = ReadInput(60);
    doSysLog("main loop INPUT: " + (input.string() || "NULL"));

    if(input == "#") {
      input = transferTo(4);  // after "#" enter 4-digit number to transfer the call to
      if(IsString(input)) {
        void(SendEvent(peerLeg,"peerTransfer",input + "@" + MyDomain()));
        input = null;
      }
    }
    
    if(input == null) {
      null;
    
    } elif(IsDictionary(input) && input.sender == peerLeg && input.what == "peerTransfer" && IsString(input.parameter)) {
      var transferError = TransferCall(input.parameter);
      if(transferError == null) {
        doSysLog("call transferred to: " + input.parameter);
        Disconnect();
      } else {
        doSysLog("transfer failed: " + transferError.string());
      }

    } elif(IsDisconnectEvent(input) || IsBreakBridgeEvent(input)) {
      void(SendEvent(peerLeg,"stop","disconnected"));
      Disconnect();

    } elif(IsDictionary(input) && input.what == "stop") {
      Disconnect();

    } elif(IsString(input)) {
      void(SendEvent(peerLeg,"dtmf",input));

    } elif(IsCallInfoEvent(input)) {
      doSysLog("relaying INFO received: " + input.objectToString());
      void(SendEvent(peerLeg,"info",input.parameter));

    } elif(IsDictionary(input) && input.what == "dtmf") {
      void(SendDTMF(input.parameter));

    } elif(IsDictionary(input) && input.what == "info") {
      void(SendCallInfo(input.parameter));

    } else {
      doSysLog("unknown event: " + input.objectToString());
    }
  }
  return;
}

//
// Entering a number with 'numDigits' digits, 5-second timeout to enter one digit.
// If entered number has less than 'numDigits' digits, do nothing and return back to the main loop.
// If '*' is entered, return back to the main loop immediately without waiting of 5-second timeout.
// After returning to mail loop one can enter the '#' again and make another attempt to enter the number to transfer the call.
//
function transferTo(numDigits) {
  var buffer = "";
  if(!IsNumber(numDigits) || numDigits <= 0) {return null;}
  for(var i = 0; i < numDigits; i += 1) {
    var input = ReadInput(5);
    doSysLog("transfer INPUT: " + (input.string() || "NULL"));
    if(input == null || input == "*") {  // return to the mail loop where one can make another attempt to enter #nnnn
      return null;
    } elif(IsDigit(input)) {
      buffer += input;
    } else {    // unexpected event, for example, Disconnect or BreakBridge event
      return input;
    }
  }
  return buffer;  // return the entered number with 'numDigits' digits
}

Понравилась статья? Поделить с друзьями:
  • Производственная инструкция при работе с сосудами под давлением
  • Работник критикует руководство
  • Корнекс гель от бородавок инструкция по применению
  • Инструкция по охране труда лаборанта бассейна в доу
  • Лактазар беби инструкция по применению цена