Инструкции
Требования к аппаратным ресурсам
Для качественной работы сервера 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.
Версия 5.2 |
|||||||||||||||||||||||||||
|
|
Описание 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
-
Импорт системы MS Server 2016 server.corpX.un (включение в сеть класса)
-
Импорт системы MS Windows 10 clientN
-
Переименование MS Server 2016 в server
-
Назначение роли AD corpX.un (лучше перед этим назначить IP 172.16.1.X)
-
Назначение роли CA (после AD!!!)
-
Назначение IP 172.16.1.X/24 MS Server 2016
-
Настройка DNS clientN на server
-
Включение clientN в домен
-
Добавление в DNS на server записи mail.corpX.un (!!! Это все понадобится уже в 3-м модуле)
-
Добавление в домен 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
Вопросы
-
Откуда берет название Stalker Software — компания разработчик Communigate?
-
Какая функциональность, по утверждению разработчиков, должна присутствовать в системе, что бы на нее можно было портировать Communigate?
-
Что необходимо сделать сразу после первого запуска только что установленного сервера Communigate?
-
Какие форматы почтовых ящиков поддерживает 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 Создание пользователей с помощью текстового файла
Примечание:
-
использовать кодировку utf-8 и табуляцию между столбцами
-
добавить символ новой строки в конце файла
-
атрибут telephoneNumber убрать, появится в следующих лабораторных работах
-
удалить пользователей по окончании работы
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/
Вопросы
-
По какой причине учетная запись администратора Communigate называется postmaster?
-
Перечислите способы создания учетных записей в Communigate.
-
Перечислите уровни конфигурации на которых можно определить параметры учетной записи.
-
Что нужно сделать, что бы делегировать права управления доменом отдельному администратору?
Модуль 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> ...
Вопросы
-
Что необходимо сделать для включения поддержки SSL/TLS в Communigate?
-
Какие протоколы поддерживает Communigate для работы с почтовыми клиентами, какими особенностями они обладают?
-
Какие способы работы с адресной книгой предоставляет Communigate для почтовых клиентов?
-
Перечислите основные варианты Web интерфейсов для пользователей Communigate.
-
В какой папке должны хранится элементы персонализации 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))))
Вопросы
-
Что используется в протоколе SMTP для поиска IP адреса сервера назначения?
-
Что означает термин relay в электронной почте?
-
Перечислите технологии борьбы со SPAM, доступные в Communigate.
-
Какой механизм используется для подключения внешних программ обработки писем в 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
Задача: сохранять всю исходящую почту в особой папке у системного администратора или у сотрудника, отвечающего за безопасность.
Вопросы
-
Перечислите способы организации групповых адресов в Communigate.
-
Что можно использовать в Communigate для гарантии достоверности и шифрования сообщений?
-
Какой протокол поддерживает Communigate для подключения внешних программных клиентов мгновенных сообщений и статуса абонента?
-
Какой протокол поддерживает 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
Вопросы
-
Какие безопасные методы аутентификации поддерживает Communigate?
-
Как организовать использование в Communigate учетных записей из Microsoft Active Directory?
-
Какую часть протокола 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")
Вопросы
-
Как привязываются телефонные номера абонентам Communigate?
-
Для чего используется учетная запись pbx?
-
Какой протокол сигнализации IP телефонии предлагает Communigate для подключения внешних телефонов?
-
Что такое B2ВUA?
-
Перечислите встроенные в Communigate голосовые приложения.
-
Как организовать связь между абонентами Communigate и ТФОП(PSTN)?
-
Какой язык программирования предлагает 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
Вопросы
-
Какой протокол предлагает Communigate для подключения внешних программ к приватному облачному хранилищу?
-
Какой файл по умолчанию возвращает Communigate при подключении к учетной записи по протоколу HTTP?
-
Какой язык программирования предлагает Communigate для разработки Web сценариев?
-
Какие протоколы передачи файлов поддерживает 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 }