Установка и настройка openchange под CentOS 6.5

в 12:35, , рубрики: linux, open source, системное администрирование, метки: ,

В рунете да и в целом в интернете мало рассказывается о таком интересном продукте, как openchange.
В теории openchange и его сопутствующие компоненты должны полностью заменять MS Exchange Server, на практике же это получается не совсем.
Тех кто заинтересовался прошу в сам пост. Там будет рассказано о установке на CentOS 6.5.

Скажу сразу, что продукт достаточно сырой и для крупной организации пока не подходит.

Исходные данные:
1)Большой домен с поддоменами и разными доверенными связями с другими доменами.
2)В связи с разделением большой фирмы на отдельные юр лица появилась необходимость собственной почты.
3)Пользователи привыкли к плюшкам в виде общих календарей, адресной книги и прочего.
Решение:postfix+dovecot и попробовать ко всему этому openchange на тестовом домене.

Установка.

Установка производилась на дистрибутив CentOS, iptables и selinux были отключены.
Первоначально были установлены и сконфигурированы postfix и dovecot с авторизацией в AD.
Руководств по установке в интернете достаточно много, поэтому подробно приводить настройки не буду, но скажу сразу, что пользовался только стандартными репозиториями.
В качестве внутреннего транспорта используется lmtp.
Для синхронизации писем получаемых через MAPI и IAMP в конфиг LDAP добавлены следующие строки:

passdb {
driver = static
args = nopassword=y allow_nets=127.0.0.1/32
}

Это необходимо для авторизации openchange в dovecot.
Теперь перейдем непосредственно к установке openchange.
Подключаем необходимый репозиторий.

[sogo-rhel6]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
gpgcheck=0
enable=1

Запускаем установку.

yum install samba4 openchange sogo-openchange-backend openchange-ocsmanager openchange-rpcproxy sogo

Я люблю mysql больше, чем postgresql, поэтому sogo будет работать под mysql.
Дополнительно ставим mysql и коннектор для sogo

yum install mysql-server sope49-gdl1-mysql

Настройка samba

Присоединяем нашу samba4 в windows AD

samba-tool domain join testmail.local DC -UAdministrator --realm=testmail.local

Присоединение происходит автоматически, необходимо только ввести пароль от учетной записи Administrator
Добавляем в /etc/samba4/smb.conf следующие строчки

# Begin OpenChange Server Configuration
dcerpc endpoint servers = +epmapper, +mapiproxy, +dnsserver
dcerpc_mapiproxy:server = true
dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr
# End OpenChange Server configuration

После этого производим запуск samba

samba -d 3 -i -M=single

На всякий случай поясню, что означает эта команда
-d это режим дебага. Цифра 3 означает уровень дебага
-i это interactive, то есть весь вывод в консоль
-M=single собственно режим работы без форков.
По не понятной мне причине samba4 не открывает нужных сокетов если её пытаться запустить через команду samba, а через init скрипт она вообще отказывается запускаться с такой конфигурацией в smb.conf
Поэтому запускать её приходится командой выше, но при этом она отлично отправляется в фон через nohup.

После запуска проверяем работу репликации.

samba-tool drs kcc -Uadministrator dcmail.testmail.local
samba-tool drs showrepl

Для своей работы openchange правит схему AD, но делает это только, когда сам является владельцем схемы.
Передаем права на схему нашему Linux контроллеру.

samba-tool fsmo seize --role=schema

Запускаем настройку openchange

openchange_provision
openchange_provision --openchangedb

После этого перезапускаем samba

Переходим к настройке ocsmanager

vim /etc/ocsmanager/ocsmanager.ini
Изменяем параметры подключения к LDAP

[main]
# Possible authentication system
auth = ldap
mapistore_root = /var/lib/samba4/private
mapistore_data = /var/lib/samba4/private/mapistore
debug = no

[auth:ldap]
#host = ldap://localhost
host = mail.testmail.local
port = 3268
bind_dn = CN=user,CN=users,DC=testmail,DC=local
bind_pw = password
basedn = CN=Users,dc=testmail,dc=local

[rpcproxy:ldap]
host = mail.testmail.local
port = 389
basedn = CN=Users,dc=testmail,dc=local

Так же указываем где находится samba

SAMBA_HOST = 127.0.0.1

В настройках LDAP и SAMBA_HOST можно указать доменный контроллер windows, на корректность работы это не влияет.
Запускаем ocsmanager
service openchange-ocsmanager start

Настройка sogo

Создаем базу и пользователя.

CREATE DATABASE `sogo` CHARACTER SET='utf8';
CREATE USER 'sogo'@'localhost' IDENTIFIED BY 'sogo';
GRANT ALL PRIVILEGES ON `sogo`.* TO 'sogo'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Правим конфиг /etc/sogo/sogo.conf

Указываем, где находится база

SOGoProfileURL = «mysql://sogo:sogo@localhost:3306/sogo»;
OCSFolderInfoURL = «mysql://sogo:sogo@localhost:3306/sogo/sogo_folder_info»;
OCSSessionsFolderURL = «mysql://sogo:sogo@localhost:3306/sogo/sogo_sessions_folder»;

Указываем местонахождение директорий для писем, а так же сервера imap и postfix

// SOGoDraftsFolderName = Drafts; А вот с этой строкой samba у меня падала с ошибками, которые не всегда воспроизводились, поэтому к сожалению черновики перемещаются в корзину.
SOGoDraftsFolderName = Trash;
SOGoSentFolderName = Sent;
SOGoTrashFolderName = Trash;
SOGoIMAPServer = imaps://localhost:993;
SOGoSMTPServer = 127.0.0.1;
SOGoMailDomain = testmail.local;
SOGoMailingMechanism = smtp;
SOGoForceExternalLoginWithEmail = NO;
SOGoMailSpoolPath = /var/spool/sogo;
NGImap4ConnectionStringSeparator = "/";

Указываем местонахождение LDAP сервера

SOGoUserSources = (
{
type = ldap;
CNFieldName = cn;
UIDFieldName = sAMAccountName;
baseDN = «CN=users,DC=testmail,DC=local»;
bindDN = «CN=user,CN=users,DC=testmail,DC=local»;
bindFields = (sAMAccountName, mail);
bindPassword = password;
canAuthenticate = YES;
displayName = «Public»;
hostname = «dcmail.testmail.local»; //Это windows контроллер
port = «389»;
filter = «mail = '*'»;
id = testmail.local;
isAddressBook = NO;
}
);

Ключевой момент если указать в качестве hostname нашу samba, то при попытке захождения outlook-ом samba висла наглухо.
Но может это баг только на моём сервере.

Указываем язык и временную зону

SOGoLanguage = Russian;
SOGoTimeZone = Europe/Moscow;

По желанию можно там же включить web interface, но у меня на нем уехала верстка во всех браузерах.

/* Web Interface */
SOGoPageTitle = SOGo;
SOGoVacationEnabled = YES;
SOGoForwardEnabled = YES;
SOGoSieveScriptsEnabled = YES;
SOGoMailAuxiliaryUserAccountsEnabled = YES;
SOGoTrustProxyAuthentication = NO;

Так же, если вы будете использовать web интерфейс, необходимо не забыть указать, какой ip адрес будет слушать sogo(по умолчанию 127.0.0.1)
WOPort = «0.0.0.0:20000»;
Запускаем sogo
service sogod start

Переходим к настройке web части
/etc/httpd/conf.d/rpcproxy.conf
Указываем параметр SetEnv SAMBA_HOST 127.0.0.1
Выдаем права на директорию /var/cache/ntlmauthhandler

chown -R apache:apache /var/cache/ntlmauthhandler

Желательно использование ssl. Устанавливаем mod_ssl и генерируем сертификат.

/etc/httpd/conf.d/SOGo.conf
При использовании ssl необходимо включить его в настройках sogo

RequestHeader set «x-webobjects-server-port» «443»
RequestHeader set «x-webobjects-server-name» «mail.testmail.local»
RequestHeader set «x-webobjects-server-url» «mail.testmail.local»

Запускаем apache
service httpd start

На этом установку можно считать законченной.
Для тех кому необходимы ящики создаем их командой
openchange_newuser --create user

Можно переходить к настройке outlook.
К сожалению autodiscover в данный момент корректно не отрабатывает корректно полностью и приходится задавать параметры руками.
В моем случае это выглядит так:
Сервер:mail.testmail.local
Имя пользователя: user
Переходим в меню «Другие настройки», раздел безопасность и ставим галочку напротив «Всегда запрашивать учетные данные для входа»
При подключении из вне указываем прокси-сервер.

Заключение

На домене с поддоменами openchange не заработал вообще, были выявлены странные баги, как-то описанный выше баг с sogo. Так же samba периодически падала, если пользователь есть в AD, но ящика у него нет. В данный момент падать перестала. Но самое неприятное, что при каких-то проблемах samba просто падает с сообщением PANIC, что затрудняет диагностику.
Разработчики этого продукта и не обещали интеграции в уже рабочую windows AD, поэтому вылезшие баги вполне могут относиться к тому, что мы делаем то, что не совсем предусмотрено разработчиками.
Но в данный момент у меня удалось стабильно запустить данный продукт для тестирования.
Я считаю, что оптимальной структурой для openchange на данном этапе развития продукта будет:
1) Установить отдельный контроллер samba4windows AD
2) Вынесение на отдельный сервер dovecot+postfix с авторизацией по LDAP (в случае поломки openchange организация все равно останется с работающим почтовиком)
3)Тех, кому необходимы календари и адресные книги(а как показала практика они необходимы не всем) подключить по mapi к openchange.
4) Писать баг-репорты разработчикам для скорейшего доведения openchange до более стабильного состояния.

Автор: SinTeZoiD

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js