В прошлой публикации мы подготовили почтовую инфраструктуру для параллельной работы двух почтовых серверов, а в этой публикации мы рассмотрим, как выполняется подготовка клиентских приложений CommuniGate.
Под клиентскими приложениями я подразумеваю веб клиент, настольный клиент и мобильный клиент.
Настройка сертификатов на CommuniGate
Подготовка клиентских приложений CommuniGate начнется с установки сертификата. О том, как выпустить или установить уже имеющийся сертификат я рассказал в соответствюущей статье.
Вы можете как сгенерировать запрос на выпуск нового сертификата, так и установить уже имеющийся сертификат.
Добавление алиаса для домена
Поскольку наши клиенты будут подключаться по имени com01.itproblog.ru, то необходимо добавить это имя в алиасы домена. Сейчас наш домен отвечает только на имя itproblog.ru.
Какие шига нужно выполнить:
1. Запускаем веб консоль администрирования.
http://10.10.10.154:8010/
2. Переходим по следующему пути: Users > Domains > itproblog.ru > Domain Settings.
3. Добавляем наш алиас и нажимаем кнопку “Update“.
Процедура добавления алиаса завершена.
Изменение порта веб клиента
Сразу после установки веб клиент CommuniGate прослушивает доступен по следующим портам:
- 8100 – для незащищенных соединений (HTTP).
- 9100 – для защищенных соединений (HTTPS).
Давайте заменим эти порты на более привычные – 80 и 443:
1. Запускаем веб консоль администрирования.
http://10.10.10.154:8010/
2. Переходим по следующему пути: Settings > Services > HTTPU > TCP.
3. Изменим номера портов и нажимаем кнопку “Update“.
Изменение интерфейса по умолчанию
Укажем, что по умолчанию необходимо использовать клиент Samoware:
1. Запускаем веб консоль администрирования CommuniGate.
http://10.10.10.154:8010/
2. Переходим в раздел Users -> Domains -> itproblog.ru -> Account Defaults -> Preferences.
3. Указываем, что клиент Samoware будет являться клиентом по умолчанию.
4. Сохраняем внесенные изменения.
Настройка перенаправления с HTTP на HTTPS для веб клиента
Сразу после установки CommuniGate Pro веб клиент работает только по HTTP. Для обеспечения безопасного подключения в настроящее время крайне рекоменддуется использование HTTPS. Если вы выполнили пункт выше и добавили SSL/TLS сертификат, то можете включить HTTPS для доступа к веб клиенту. Проблема в том, что если клиент подключится по HTTP, то его автоматически не редиректит на HTTPS.
Один из вариантов – это полное отключение HTTP доступа. Однако, если вас этот вариант не устраивает (по разным причинам), то вы можете выполнить редирект с HTTP на HTTPS. Отмечу, что операцию, описанную в статье придется выполнять для каждой отдельной страницы в веб скинах.
Публикация CGP во внешний мир
Публикация ресурсов наружу в каждой команпии выполяется по разному. Все зависит от размеров комании, бюджетов и имеющегося стента технологий. Кто-то просто пробраывает порты на маршрутизаторе посредством NAT. Кто-то использует WAP (Web Application Proxy). У кого-то есть что-то посерьезнее – KEMP, Nginx, Citrix NetScaler и т.д.
Лично у меня в домашней лаборатории пограничное устройство одно – маршрутизатор. Только он смотрит во внешний мир. Можно было бы пробросить 443 TCP порт, но есть нюанс. Поскольку у меня и Exchange, и CommuniGate используют один и тот же порт (TCP/443), то логично, что пробросить его сразу на два сервера не получится. Нужен какой-то умный балансировщик, который в зависимости от запрашиваемого имени будет перенаправлять трафик на нужный сервер. Я буду использовать Nginx.
Моя планируемая схема публикации выглядит следующим образом:
Итого, что я сделаю для публикации Exchange и CommuniGate Pro через Nginx:
1. Установлю Альт Сервер 10 на отдельный сервер.
2. Настрою статический IP-адрес.
3. Добавлю новые файлы в директорию с дополнительной конфигурацией Nginx:
touch /etc/nginx/sites-enabled.d/Exchange.conf
touch /etc/nginx/sites-enabled.d/CommuniGate.conf
4. Редактирую конфигурацию для публикации Exchange. Пример конфигурации можно взять вот отсюда. Я не буду вдаваться в детальные объяснения конифгурации. Если у вас будут вопросы – задавайте их в комментариях.
vim /etc/nginx/sites-enabled.d/Exchange.conf
server {
listen 80;
server_name mail.itproblog.ru autodiscover.itproblog.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mail.itproblog.ru;
set $exchange2019 https://10.10.10.151:443;
# Redirect from "/" to "/owa" by default
rewrite ^/$ https://mail.itproblog.ru/owa permanent;
# Enable SSL
ssl_certificate /etc/nginx/certs/itproblog.crt;
ssl_certificate_key /etc/nginx/certs/itproblog_key.key;
ssl_session_timeout 5m;
# Set global proxy settings
proxy_pass_request_headers on;
proxy_read_timeout 360;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~* ^/owa { proxy_pass $exchange2019; }
location ~* ^/Microsoft-Server-ActiveSync { proxy_pass $exchange2019; }
location ~* ^/ecp { proxy_pass $exchange2019; }
location ~* ^/Rpc { proxy_pass $exchange2019; }
error_log /var/log/nginx/Exchange-error.log;
access_log /var/log/nginx/Exchange-access.log;
}
server {
listen 443 ssl;
server_name autodiscover.itproblog.ru;
set $exchange2019 https://10.10.10.151:443;
# Enable SSL
ssl_certificate /etc/nginx/certs/itproblog.crt;
ssl_certificate_key /etc/nginx/certs/itproblog_key.key;
ssl_session_timeout 5m;
# Set global proxy settings
proxy_pass_request_headers on;
proxy_read_timeout 360;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~* ^/Autodiscover { proxy_pass $exchange2019; }
error_log /var/log/nginx/Exchange-error.log;
access_log /var/log/nginx/Exchange-access.log;
}
5. 4. Редактирую конфигурацию для публикации CommuniGate.
vim /etc/nginx/sites-enabled.d/CommuniGate.conf
server {
listen 80;
server_name com01.itproblog.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name com01.itproblog.ru;
set $cgp https://10.10.10.154:443;
# Enable SSL
ssl_certificate /etc/nginx/certs/itproblog.crt;
ssl_certificate_key /etc/nginx/certs/itproblog_key.key;
ssl_session_timeout 5m;
# Set global proxy settings
proxy_pass_request_headers on;
proxy_read_timeout 360;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / { proxy_pass $cgp; }
error_log /var/log/nginx/cgp-error.log;
access_log /var/log/nginx/cgp-access.log;
}
6. Проверяем конфигурацию Nginx.
nginx -t
Пример успешного завершения теста:
[root@lb01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 ~]#
7. Включает автозапуск и запускаем Nginx:
systemctl enable nginx
systemctl start nginx
8. Проверяем доступ из вне.
Выбор структуры хранения пользователей
При больших объемах пользователей (более 5000) вендор рекомендует скорректировать структуру хранения пользователей. Поскольку тестовый пример с миграцией будет включать 5 пользователей, то я не буду корректировать этот параметр. Но вам стоит знать про этот нюанс, чтобы потом не было лишних проблем с изменением структуры хранения.
Добраться до этого пункта настроек можно по следующему пути – ” Users > Domains >[Ваш_домен] > Domain Settings”.