Carbonio Proxy является одним из обязательных узлов почтового сервера Carbonio. Он представляет из себя комбинацию серверов Nginx и memcached, которые выполняют сразу несколько функций, обеспечивающих высокую эффективность и безопасность использования Carbonio. В данной статье мы расскажем о том, какие именно функции выполняет Carbonio Proxy и как как администратор может взаимодействовать с ним. Данная статья подходит как для пользователей коммерческой версии Carbonio, так и для пользователей Carbonio Community Edition. Как уже говорилось, узел Carbonio Proxy представляет из себя комбинацию серверов Nginx и memcached. Они  выполняют сразу несколько функций, позволяющих повысить безопасность использования Carbonio, и при этом увеличить его быстродействие. Централизованный доступ к почте Главной функцией Carbonio Proxy является обеспечение доступа пользователей к их почтовым ящикам. Carbonio Proxy перенаправляет запросы от пользователей к серверам, в которых хранится их электронная почта, адресные книги и календари. Наибольшую ценность это имеет в мультисерверных системах, так как позволяет пользователям не запоминать точное название своего почтового сервера и использовать единый адрес для входа. Carbonio Proxy обрабатывает запросы по протоколам HTTPS/POP/POPS/IMAP/IMAPS, перенаправляя их на соответствующие почтовые серверы. SMTP-запросы, в свою очередь, не проксируются и направляются сразу на MTA-сервер. Для корректной работы Carbonio Proxy требуется, чтобы к нему был открыт доступ на портах TCP 80, 443, 110, 995, 143, 993 и 6071 для входящих соединений, и порты TCP 7072, 8080, 8443, 	7110, 7995, 7143, 7993 и 7071 для исходящих соединений.  Балансировка нагрузки Данная функция является крайне полезной в мультисерверных системах. Она позволяет распределять пользователей между почтовыми хранилищами таким образом, чтобы нагрузка на них была равномерной и не возникало ситуаций, при которых один сервер не справляется с количеством поступающих запросов, тогда как другие при этом простаивают. Обратное проксирование Использование централизованного имени для входа на почтовый сервер позволяет спрятать топологию, имена и характеристики различных узлов, разместив их в непубличной внутренней сети. Благодаря этому узлы системы становятся недоступными для DoS-атак и зловредного ПО. Терминация SSL Шифрование соединения в высоконагруженных системах может потреблять большую часть вычислительных мощностей. Для того, чтобы направить эти мощности на обеспечение быстродействия системы и выполнение основных функций, используется терминация SSL, которая происходит на узле Carbonio Proxy. После дешифровки данных, они передаются на другие узлы в непубличной локальной сети в незашифрованном виде. Отметим, что использование данной функции является потенциально небезопасным и прибегать к ней стоит только в случаях, когда вы полностью уверены в безопасности и изолированности своей локальной сети. Кстати, в одном из недавних обновлений Carbonio была убрана возможность использования Carbonio Proxy в режиме HTTP. Теперь администратору доступны только два режима работы: https - при заходе по http пользователь получает ошибку redirect - при заходе по http пользователь перенаправляется на тот же адрес, но по https Таким образом, в настоящее время использование шифрования SSL является обязательным для Carbonio. Изменить режим работы можно при помощи команд вида carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailMode redirect и carbonio prov modifyServer proxy.carbonio.loc zimbraReverseProxyMailMode https Кэширование Встроенный сервер memcached позволяет Carbonio Proxy запоминать маршруты пользователей к почтовым хранилищам и вместо осуществления поисков использовать уже имеющиеся маршруты для повышения быстродействия и в целом отзывчивости системы. Логирование входа На узлах Carbonio Proxy в файлах /opt/zextras/log/audit.log хранится информация об удачных и неудачных попытках входа пользователей. Благодаря мониторингу логов, можно вовремя отследить попытку взлома учетной записи и принять необходимые меры для противодействия ей. Также узлы Carbonio Proxy часто используются для отображения интерфейсов веб-клиента и консоли администратора, тогда как бэкенд этих приложений находится на почтовых серверах. Поскольку Carbonio является мультитенантным решением, позволяющем создавать множество почтовых доменов на одной инфраструктуре, одной из важных функций является SNI - Server Name Indication. Данная технология позволяет создавать в Carbonio Proxy доступные публично виртуальные хосты с собственными SSL-сертификатами, доступные по одному и тому же IP-адресу. Создавать виртуальные хосты можно как командной строке, так и в консоли администратора.  В консоли администратора перейдите в раздел “Домены” и введите название домена, для которого собираетесь создать виртуальный хост. В открывшемся боковом меню выберите раздел “Виртуальные хосты и сертификаты”. В открывшемся окне можно добавлять имена виртуальных хостов для домена, а также устанавливать SSL-сертификаты для них. Для каждого из доменов можно добавлять несколько виртуальных хостов, единственное требование заключается в том, что они должны представлять из себя корректные, разрешаемые через DNS FQDN. В командной строке виртуальный хост можно добавить командой вида carbonio prov modifyDomain carbonio.loc zimbraVirtualHostName carbonio.ru. Чтобы добавить дополнительные виртуальные хосты, используйте команду carbonio prov modifyDomain carbonio.loc +zimbraVirtualHostName mail.carbonio.ru. Отметим, что виртуальные хосты работают только для протокола HTTPS. Для того, чтобы они работали в том числе для POP/POPS и IMAP/IMAPS, требуется добавление виртуального IP-адреса. Он добавляется командой вида carbonio prov modifyDomain carbonio.loc zimbraVirtualIPAddress 1.2.3.4. Мультиплицирование Carbonio Proxy Как и в случае с любым другим узлом в Carbonio, при мультисерверной установке допускается добавление двух и более серверов с ролью Proxy. Для установки дополнительного узла Carbonio Proxy следует на машине с настроенным репозиторием Carbonio установить пакеты apt install service-discover-agent carbonio-proxy carbonio-webui carbonio-files-ui carbonio-chats-ui После завершения установки выполните команду carbonio-bootstrap и в процессе настройки узла укажите адрес и пароль LDAP-сервера, а также зарегистрируйте узел в Carbonio Mesh при помощи команд service-discover setup-wizard и pending setups. После этого в вашей системе появится дополнительный узел Carbonio Proxy. Однако, если учесть, что Carbonio Proxy сама является точкой входа в почтовую систему и выполняет роль балансировщика нагрузки для других узлов, возникает вопрос, как именно следует балансировать нагрузку между самими узлами Carbonio Proxy. Для этого используется внешний балансировщик нагрузки. Как правило для этих целей используется сервер HAProxy с публичным IP-адресом. По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.    Глава представительства Zextras в России и СНГ