Встановлення та налаштування 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 = 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

Про всяк випадок поясню, що означає ця команда

- це режим дебагу. Цифра 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

Перейти до налаштування веб-частини

/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) Встановити окремий контролер samba4\windows AD

2) Винесення на окремий сервер dovecot + postfix з авторизацією за LDAP (у разі поломки openchange організація все одно залишиться з працюючим поштовиком)

3) Тих, кому необхідні календарі та адресні книги (а як показала практика вони необхідні не всім) підключити по mapi до openchange.

4) Писати лід-репорти розробникам для якнайшвидшого доведення openchange до більш стабільного стану.