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

В рунете да и в целом в интернете мало рассказывается о таком интересном продукте, как 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 = staticargs = nopassword=y allow_nets=127.0.0.1/32}

Это необходимо для авторизации openchange в dovecot.Теперь перейдем непосредственно к установке openchange.Подключаем необходимый репозиторий. [sogo-rhel6]name=Inverse SOGo Repositorybaseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearchgpgcheck=0enable=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 Configurationdcerpc endpoint servers = +epmapper, +mapiproxy, +dnsserverdcerpc_mapiproxy: server = truedcerpc_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.localsamba-tool drs showrepl

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

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

После этого перезапускаем sambaПереходим к настройке ocsmanager vim /etc/ocsmanager/ocsmanager.iniИзменяем параметры подключения к LDAP [main]# Possible authentication systemauth = ldapmapistore_root = /var/lib/samba4/privatemapistore_data = /var/lib/samba4/private/mapistoredebug = no

[auth: ldap]#host = ldap://localhosthost = mail.testmail.localport = 3268bind_dn = CN=user, CN=users, DC=testmail, DC=localbind_pw = passwordbasedn = CN=Users, dc=testmail, dc=local

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

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

В настройках LDAP и SAMBA_HOST можно указать доменный контроллер windows, на корректность работы это не влияет.Запускаем ocsmanagerservice 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»; Запускаем sogoservice 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»

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

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

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

© Habrahabr.ru