LDAP в почтовом сервере Carbonio является одним из ключевых элементов. LDAP представляет из себя структурированное хранилище настроек учетных записей, доменов, Классов обслуживания, а также серверов, входящих в состав инфраструктуры Carbonio. В Carbonio допускается использование и внешних серверов LDAP, в том числе Active Directory. В данной статье мы расскажем о том, что именно и как именно хранится в Carbonio LDAP и как администратор может взаимодействовать с ним. Одна из главных функций Carbonio LDAP - аутентификация пользователей при использовании внутреннего механизма аутентификации. Именно в LDAP хранятся хеши паролей пользователей, которые сверяются при попытке входа. В случае использования для аутентификации внешних серверов LDAP, таких как Active Directory и другие, Carbonio LDAP передает им хеш пароля и на основании полученного ответа, осуществляет вход пользователя в учетную запись или отказывает ему. Данная статья подходит как для пользователей коммерческой версии Carbonio, так и для пользователей Carbonio Community Edition. При аутентификации учитывается статус пользователя. К примеру, если администратор заблокировал учетную запись или приостановил ее действие, вход не удастся, даже если пароль был введен верно. Данные о статусе учетной записи также хранятся в LDAP. Данные, хранимые в LDAP представляют из себя дерево вложенных друг в друга каталогов. Благодаря такому устройству, каждый хранимый объект в LDAP может быть найден при помощи конкретного поискового запроса и, соответственно, загружены его параметры. Наглядно просмотреть структуру Carbonio LDAP можно в любом LDAP-браузере. Получить данные из Carbonio LDAP можно и при помощи утилиты ldapsearch. Для этого нужно указать поисковый запрос, указывающий на пользователя, от которого будет осуществляться вход, а также указать его пароль. Пример: В данной команде мы определили нашего пользователя как имеющего имя zextras, лежащего в категории People домена carbonio.loc. Результатом этого запроса будет получение папок из LDAP, доступных данному пользователю. Данные в Carbonio LDAP хранятся на нескольких уровнях. Среди них: Глобальная конфигурация  Сервер Домен Класс обслуживания В Глобальной конфигурации хранятся настройки по умолчанию для доменов и серверов Carbonio. В случае, если администратор при создании нового домена или добавлении сервера явно не укажет для них какие-либо настройки, они автоматически будут заполнены настройками из глобальной конфигурации. В графической Консоли администратора на данный момент на глобальном уровне можно настроить только внешнее оформление веб-клиента Carbonio, включая логотип, фоновую картинку и Favicon. Командная строка в настоящее время предоставляет больше возможностей для администратора. Используйте команды carbonio prov getConfig для получения текущего значения настройки и carbonio prov modifyConfig для ее изменения. Для получения списка всех глобальных настроек используйте carbonio prov getAllConfig В настройках домена можно настроить множество вещей, связанных с механизмами аутентификации, формированием глобальной адресной книги и прочим. К примеру, допускается использование разных LDAP в разных почтовых доменах, находящихся в одной почтовой системе, чтобы одни пользователи аутентифицировались при помощи Carbonio LDAP, а другие при помощи Active Directory. Графическая консоль администратора Carbonio позволяет настроить для домена SMTP-релей, публично доступное доменное имя, глобальную адресную книгу, графическое оформление веб-клиента, квоты, параметры аутентификации, включая SAML, и многое другое. Для того, чтобы настроить домен в командной строке, используйте команды carbonio prov getDomain carbonio.loc для получения текущих настроек домена и carbonio prov modifyDomain carbonio.loc для их изменения. Для получения списка всех доменов используйте carbonio prov getAllDomains. Для настройки пользователей в Консоли администратора сперва нужно выбрать домен, а затем в соответствующем списке требуемую учетную запись. Помимо учетных записей в домене также могут быть списки рассылки, ресурсные учетные записи и алиасы. Их, как и пользователей, можно создавать, удалять и редактировать в графической консоли после выбора соответствующего домена. Для того, чтобы настроить пользователя в командной строке, используйте команды carbonio prov getAccount zextras@carbonio.loc для получения текущих настроек учетной записи пользователя и carbonio prov modifyAccount zextras@carbonio.loc для их изменения. Для получения списка всех учетных записей на сервере используйте carbonio prov -l getAllAccounts. При использовании параметров getAccount и modifyAccount данные загружаются и записываются в Carbonio LDAP в соответствующую папку.  Если глобальные настройки содержат параметры по умолчанию для создаваемых в Carbonio доменов, то Классы обслуживания содержат параметры по умолчанию для создаваемых пользователей. В отличие от глобальных настроек, которые могут быть только одни, в рамках одной почтовой системы допускается создание множества Классов Обслуживания с различными настройками. Благодаря этому, создавая пользователя и присваивая ему Класс Обслуживания, администратор может буквально в один клик определить, какие именно функции почтовой системы будут доступны новому пользователю. Создавать и удалять Классы обслуживания можно на специальной вкладке в Консоли администратора. Для редактирования их возможностей, следует выбрать нужный класс обслуживания и перейти на соответствующие разделы. В командной строке для редактирования Классов обслуживания используется carbonio prov getCos default для получения текущих настроек Класса обслуживания и carbonio prov modifyCos default для их изменения. Управлять параметрами серверов можно в командной строке при помощи команд carbonio prov getServer email.carbonio.loc для получения текущих настроек сервера и carbonio prov modifyServer email.carbonio.loc для их изменения. При использовании команды вида carbonio prov чтение и запись параметров в Carbonio LDAP идет через API. Администратор может записывать в LDAP напрямую используя параметр -l. Для безопасности рекомендуется записывать данные только через API, так как любая опечатка может привести к появлению параметров с некорректными значениями, а вместе с этим и к возникновению самых непредсказуемых ошибок в работе почтовой системы. LDAP также участвует в формировании Глобальной адресной книги и предложений для автозаполнения. И то, и другое формируется на основе поисковых запросов к Carbonio LDAP. По умолчанию GAL формируется на основе пользователей одного домена. Для того, чтобы в него попадали все пользователи почтовой системы, установите значение параметра zimbraGalInternalSearchBase для домена на ROOT Поскольку LDAP является одним из ключевых компонентов почтовой системы, выход его из строя может привести к полной остановке работоспособности почтовой системы. Для того, чтобы LDAP был отказоустойчивым, в Carbonio используется репликация LDAP. В систему в любой момент можно добавить дополнительные LDAP-серверы, содержимое которых будет синхронизироваться. Дополнительные LDAP могут быть как пассивными, так и активными репликами. В первом случае сервер просто получает данные из активного сервера LDAP и в случае его отказа будет способен полностью его заменить. Во втором случае сервер помимо записи данных из основного, также принимает запросы от почтовой системы и производит перезапись настроек, синхронизируя их с основным сервером. Для того, чтобы создать пассивную реплику, включите на основном узле LDAP репликацию при помощи команды /opt/zextras/libexec/zmldapenablereplica и получите пароль от LDAP, выполнив команду zmlocalconfig -s zimbra_ldap_password. На дополнительном узле LDAP установите необходимые компоненты apt install carbonio-directory-server service-discover-agent и запустите процесс первоначальной настройки carbonio-bootstrap. В процессе настройки укажите доменное имя основного узла LDAP и ранее полученный пароль zimbra_ldap_password. После загрузки данных с основного узла, сервер будет настроен в качестве LDAP Replica. Для того, чтобы реплика стала активной, необходимо прописать ее адрес на узлах, которые будут к ней обращаться. Для этого необходимо сформировать две команды: В них указаны адреса LDAP Master и LDAP Replica в разном порядке. Именно порядок серверов определяет то, к какому из них сервер будет обращаться в первую очередь.  Выполнять эти команды надо на всех серверах, предварительно остановив службы Carbonio. Выполните на части узлов почтовой системы первую команду, а на оставшихся - вторую. Это позволит одновременно сбалансировать нагрузку на них и добиться отказоустойчивости. Кстати, после изменения настроек LDAP на сервере MTA необходимо выполнить команду /opt/zextras/libexec/zmmtainit для их корректного сохранения.  Глава представительства Zextras в России и СНГ